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;
}
}
}