<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

PqcUtilities

public static class PqcUtilities
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto.Parameters; using System; namespace Org.BouncyCastle.Tls.Crypto.Impl { public static class PqcUtilities { public static DerObjectIdentifier GetMLDsaObjectidentifier(int signatureScheme) { switch (signatureScheme) { case 2308: return NistObjectIdentifiers.id_ml_dsa_44; case 2309: return NistObjectIdentifiers.id_ml_dsa_65; case 2310: return NistObjectIdentifiers.id_ml_dsa_87; default: throw new ArgumentException(); } } public static int GetMLDsaSignatureScheme(MLDsaParameters parameters) { if (MLDsaParameters.ml_dsa_44 == parameters) return 2308; if (MLDsaParameters.ml_dsa_65 == parameters) return 2309; if (MLDsaParameters.ml_dsa_87 == parameters) return 2310; throw new ArgumentException(); } public static bool SupportsMLDsa(AlgorithmIdentifier pubKeyAlgID, DerObjectIdentifier mlDsaAlgOid) { if (pubKeyAlgID.Algorithm.Equals(mlDsaAlgOid)) return pubKeyAlgID.Parameters == null; return false; } } }