DefaultSignatureAlgorithmFinder
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.BC;
using Org.BouncyCastle.Asn1.Bsi;
using Org.BouncyCastle.Asn1.CryptoPro;
using Org.BouncyCastle.Asn1.Eac;
using Org.BouncyCastle.Asn1.EdEC;
using Org.BouncyCastle.Asn1.GM;
using Org.BouncyCastle.Asn1.Isara;
using Org.BouncyCastle.Asn1.Misc;
using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.Rosstandart;
using Org.BouncyCastle.Asn1.TeleTrust;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Asn1.X9;
using Org.BouncyCastle.Crypto.Parameters;
using System;
using System.Collections.Generic;
namespace Org.BouncyCastle.Operators.Utilities
{
public class DefaultSignatureAlgorithmFinder : ISignatureAlgorithmFinder
{
public static readonly DefaultSignatureAlgorithmFinder Instance;
private static readonly Dictionary<string, DerObjectIdentifier> Algorithms;
private static readonly HashSet<DerObjectIdentifier> NoParams;
private static readonly Dictionary<string, Asn1Encodable> Parameters;
private static readonly HashSet<DerObjectIdentifier> Pkcs15RsaEncryption;
private static readonly Dictionary<DerObjectIdentifier, DerObjectIdentifier> DigestOids;
private static void AddAlgorithm(string name, DerObjectIdentifier oid)
{
Algorithms.Add(name, oid);
}
private static void AddAlgorithm(string name, DerObjectIdentifier oid, DerObjectIdentifier digestOid, bool isNoParams)
{
if (name == null)
throw new ArgumentNullException("name");
if (oid == null)
throw new ArgumentNullException("oid");
AddAlgorithm(name, oid);
if (digestOid != null)
AddDigestOid(oid, digestOid);
if (isNoParams)
NoParams.Add(oid);
}
private static void AddDigestOid(DerObjectIdentifier signatureOid, DerObjectIdentifier digestOid)
{
DigestOids.Add(signatureOid, digestOid);
}
private static void AddParameters(string algorithmName, Asn1Encodable parameters)
{
if (parameters == null)
throw new ArgumentException("use 'NoParams' instead for absent parameters", "parameters");
Parameters.Add(algorithmName, parameters);
}
private static RsassaPssParameters CreatePssParams(AlgorithmIdentifier hashAlgID, int saltSize)
{
return new RsassaPssParameters(hashAlgID, new AlgorithmIdentifier(PkcsObjectIdentifiers.IdMgf1, hashAlgID), new DerInteger(saltSize), DerInteger.One);
}
static DefaultSignatureAlgorithmFinder()
{
Instance = new DefaultSignatureAlgorithmFinder();
Algorithms = new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase);
NoParams = new HashSet<DerObjectIdentifier>();
Parameters = new Dictionary<string, Asn1Encodable>(StringComparer.OrdinalIgnoreCase);
Pkcs15RsaEncryption = new HashSet<DerObjectIdentifier>();
DigestOids = new Dictionary<DerObjectIdentifier, DerObjectIdentifier>();
AddAlgorithm("COMPOSITE", MiscObjectIdentifiers.id_alg_composite);
AddAlgorithm("MD2WITHRSAENCRYPTION", PkcsObjectIdentifiers.MD2WithRsaEncryption);
AddAlgorithm("MD2WITHRSA", PkcsObjectIdentifiers.MD2WithRsaEncryption);
AddAlgorithm("MD5WITHRSAENCRYPTION", PkcsObjectIdentifiers.MD5WithRsaEncryption);
AddAlgorithm("MD5WITHRSA", PkcsObjectIdentifiers.MD5WithRsaEncryption);
AddAlgorithm("SHA1WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha1WithRsaEncryption);
AddAlgorithm("SHA-1WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha1WithRsaEncryption);
AddAlgorithm("SHA1WITHRSA", PkcsObjectIdentifiers.Sha1WithRsaEncryption);
AddAlgorithm("SHA-1WITHRSA", PkcsObjectIdentifiers.Sha1WithRsaEncryption);
AddAlgorithm("SHA224WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha224WithRsaEncryption);
AddAlgorithm("SHA-224WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha224WithRsaEncryption);
AddAlgorithm("SHA224WITHRSA", PkcsObjectIdentifiers.Sha224WithRsaEncryption);
AddAlgorithm("SHA-224WITHRSA", PkcsObjectIdentifiers.Sha224WithRsaEncryption);
AddAlgorithm("SHA256WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha256WithRsaEncryption);
AddAlgorithm("SHA-256WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha256WithRsaEncryption);
AddAlgorithm("SHA256WITHRSA", PkcsObjectIdentifiers.Sha256WithRsaEncryption);
AddAlgorithm("SHA-256WITHRSA", PkcsObjectIdentifiers.Sha256WithRsaEncryption);
AddAlgorithm("SHA384WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha384WithRsaEncryption);
AddAlgorithm("SHA-384WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha384WithRsaEncryption);
AddAlgorithm("SHA384WITHRSA", PkcsObjectIdentifiers.Sha384WithRsaEncryption);
AddAlgorithm("SHA-384WITHRSA", PkcsObjectIdentifiers.Sha384WithRsaEncryption);
AddAlgorithm("SHA512WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512WithRsaEncryption);
AddAlgorithm("SHA-512WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512WithRsaEncryption);
AddAlgorithm("SHA512WITHRSA", PkcsObjectIdentifiers.Sha512WithRsaEncryption);
AddAlgorithm("SHA-512WITHRSA", PkcsObjectIdentifiers.Sha512WithRsaEncryption);
AddAlgorithm("SHA512(224)WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512_224WithRSAEncryption);
AddAlgorithm("SHA-512(224)WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512_224WithRSAEncryption);
AddAlgorithm("SHA512(224)WITHRSA", PkcsObjectIdentifiers.Sha512_224WithRSAEncryption);
AddAlgorithm("SHA-512(224)WITHRSA", PkcsObjectIdentifiers.Sha512_224WithRSAEncryption);
AddAlgorithm("SHA512(256)WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512_256WithRSAEncryption);
AddAlgorithm("SHA-512(256)WITHRSAENCRYPTION", PkcsObjectIdentifiers.Sha512_256WithRSAEncryption);
AddAlgorithm("SHA512(256)WITHRSA", PkcsObjectIdentifiers.Sha512_256WithRSAEncryption);
AddAlgorithm("SHA-512(256)WITHRSA", PkcsObjectIdentifiers.Sha512_256WithRSAEncryption);
AddAlgorithm("SHA1WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA224WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA256WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA384WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA512WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA3-224WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA3-256WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA3-384WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("SHA3-512WITHRSAANDMGF1", PkcsObjectIdentifiers.IdRsassaPss);
AddAlgorithm("RIPEMD160WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160);
AddAlgorithm("RIPEMD160WITHRSA", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160);
AddAlgorithm("RIPEMD128WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128);
AddAlgorithm("RIPEMD128WITHRSA", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128);
AddAlgorithm("RIPEMD256WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256);
AddAlgorithm("RIPEMD256WITHRSA", TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256);
AddAlgorithm("SHA1WITHDSA", X9ObjectIdentifiers.IdDsaWithSha1);
AddAlgorithm("SHA-1WITHDSA", X9ObjectIdentifiers.IdDsaWithSha1);
AddAlgorithm("DSAWITHSHA1", X9ObjectIdentifiers.IdDsaWithSha1);
AddAlgorithm("SHA224WITHDSA", NistObjectIdentifiers.DsaWithSha224);
AddAlgorithm("SHA256WITHDSA", NistObjectIdentifiers.DsaWithSha256);
AddAlgorithm("SHA384WITHDSA", NistObjectIdentifiers.DsaWithSha384);
AddAlgorithm("SHA512WITHDSA", NistObjectIdentifiers.DsaWithSha512);
AddAlgorithm("SHA3-224WITHDSA", NistObjectIdentifiers.IdDsaWithSha3_224);
AddAlgorithm("SHA3-256WITHDSA", NistObjectIdentifiers.IdDsaWithSha3_256);
AddAlgorithm("SHA3-384WITHDSA", NistObjectIdentifiers.IdDsaWithSha3_384);
AddAlgorithm("SHA3-512WITHDSA", NistObjectIdentifiers.IdDsaWithSha3_512);
AddAlgorithm("SHA1WITHECDSA", X9ObjectIdentifiers.ECDsaWithSha1);
AddAlgorithm("ECDSAWITHSHA1", X9ObjectIdentifiers.ECDsaWithSha1);
AddAlgorithm("SHA224WITHECDSA", X9ObjectIdentifiers.ECDsaWithSha224);
AddAlgorithm("SHA256WITHECDSA", X9ObjectIdentifiers.ECDsaWithSha256);
AddAlgorithm("SHA384WITHECDSA", X9ObjectIdentifiers.ECDsaWithSha384);
AddAlgorithm("SHA512WITHECDSA", X9ObjectIdentifiers.ECDsaWithSha512);
AddAlgorithm("SHA3-224WITHECDSA", NistObjectIdentifiers.IdEcdsaWithSha3_224);
AddAlgorithm("SHA3-256WITHECDSA", NistObjectIdentifiers.IdEcdsaWithSha3_256);
AddAlgorithm("SHA3-384WITHECDSA", NistObjectIdentifiers.IdEcdsaWithSha3_384);
AddAlgorithm("SHA3-512WITHECDSA", NistObjectIdentifiers.IdEcdsaWithSha3_512);
AddAlgorithm("SHA3-224WITHRSA", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224);
AddAlgorithm("SHA3-256WITHRSA", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256);
AddAlgorithm("SHA3-384WITHRSA", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384);
AddAlgorithm("SHA3-512WITHRSA", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512);
AddAlgorithm("SHA3-224WITHRSAENCRYPTION", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224);
AddAlgorithm("SHA3-256WITHRSAENCRYPTION", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256);
AddAlgorithm("SHA3-384WITHRSAENCRYPTION", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384);
AddAlgorithm("SHA3-512WITHRSAENCRYPTION", NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512);
AddAlgorithm("GOST3411WITHGOST3410", CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94);
AddAlgorithm("GOST3411WITHGOST3410-94", CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94);
AddAlgorithm("GOST3411WITHECGOST3410", CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
AddAlgorithm("GOST3411WITHECGOST3410-2001", CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
AddAlgorithm("GOST3411WITHGOST3410-2001", CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
AddAlgorithm("GOST3411WITHECGOST3410-2012-256", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
AddAlgorithm("GOST3411WITHECGOST3410-2012-512", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
AddAlgorithm("GOST3411WITHGOST3410-2012-256", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
AddAlgorithm("GOST3411WITHGOST3410-2012-512", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
AddAlgorithm("GOST3411-2012-256WITHECGOST3410-2012-256", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
AddAlgorithm("GOST3411-2012-512WITHECGOST3410-2012-512", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
AddAlgorithm("GOST3411-2012-256WITHGOST3410-2012-256", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
AddAlgorithm("GOST3411-2012-512WITHGOST3410-2012-512", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
AddAlgorithm("GOST3411-2012-256WITHECGOST3410", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
AddAlgorithm("GOST3411-2012-512WITHECGOST3410", RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
AddAlgorithm("SHA1WITHCVC-ECDSA", EacObjectIdentifiers.id_TA_ECDSA_SHA_1);
AddAlgorithm("SHA224WITHCVC-ECDSA", EacObjectIdentifiers.id_TA_ECDSA_SHA_224);
AddAlgorithm("SHA256WITHCVC-ECDSA", EacObjectIdentifiers.id_TA_ECDSA_SHA_256);
AddAlgorithm("SHA384WITHCVC-ECDSA", EacObjectIdentifiers.id_TA_ECDSA_SHA_384);
AddAlgorithm("SHA512WITHCVC-ECDSA", EacObjectIdentifiers.id_TA_ECDSA_SHA_512);
AddAlgorithm("SHA3-512WITHSPHINCS256", BCObjectIdentifiers.sphincs256_with_SHA3_512);
AddAlgorithm("SHA512WITHSPHINCS256", BCObjectIdentifiers.sphincs256_with_SHA512);
AddAlgorithm("SHA1WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA1);
AddAlgorithm("SHA224WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA224);
AddAlgorithm("SHA256WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA256);
AddAlgorithm("SHA384WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA384);
AddAlgorithm("SHA512WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA512);
AddAlgorithm("RIPEMD160WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_RIPEMD160);
AddAlgorithm("SHA3-224WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA3_224);
AddAlgorithm("SHA3-256WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA3_256);
AddAlgorithm("SHA3-384WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA3_384);
AddAlgorithm("SHA3-512WITHPLAIN-ECDSA", BsiObjectIdentifiers.ecdsa_plain_SHA3_512);
AddAlgorithm("SHAKE128WITHRSAPSS", X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128);
AddAlgorithm("SHAKE256WITHRSAPSS", X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256);
AddAlgorithm("SHAKE128WITHRSASSA-PSS", X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128);
AddAlgorithm("SHAKE256WITHRSASSA-PSS", X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256);
AddAlgorithm("SHAKE128WITHECDSA", X509ObjectIdentifiers.id_ecdsa_with_shake128);
AddAlgorithm("SHAKE256WITHECDSA", X509ObjectIdentifiers.id_ecdsa_with_shake256);
AddAlgorithm("SHA256WITHSM2", GMObjectIdentifiers.sm2sign_with_sha256);
AddAlgorithm("SM3WITHSM2", GMObjectIdentifiers.sm2sign_with_sm3);
AddAlgorithm("SHA256WITHXMSS", BCObjectIdentifiers.xmss_SHA256ph);
AddAlgorithm("SHA512WITHXMSS", BCObjectIdentifiers.xmss_SHA512ph);
AddAlgorithm("SHAKE128WITHXMSS", BCObjectIdentifiers.xmss_SHAKE128ph);
AddAlgorithm("SHAKE256WITHXMSS", BCObjectIdentifiers.xmss_SHAKE256ph);
AddAlgorithm("SHA256WITHXMSSMT", BCObjectIdentifiers.xmss_mt_SHA256ph);
AddAlgorithm("SHA512WITHXMSSMT", BCObjectIdentifiers.xmss_mt_SHA512ph);
AddAlgorithm("SHAKE128WITHXMSSMT", BCObjectIdentifiers.xmss_mt_SHAKE128ph);
AddAlgorithm("SHAKE256WITHXMSSMT", BCObjectIdentifiers.xmss_mt_SHAKE256ph);
AddAlgorithm("SHA256WITHXMSS-SHA256", BCObjectIdentifiers.xmss_SHA256ph);
AddAlgorithm("SHA512WITHXMSS-SHA512", BCObjectIdentifiers.xmss_SHA512ph);
AddAlgorithm("SHAKE128WITHXMSS-SHAKE128", BCObjectIdentifiers.xmss_SHAKE128ph);
AddAlgorithm("SHAKE256WITHXMSS-SHAKE256", BCObjectIdentifiers.xmss_SHAKE256ph);
AddAlgorithm("SHA256WITHXMSSMT-SHA256", BCObjectIdentifiers.xmss_mt_SHA256ph);
AddAlgorithm("SHA512WITHXMSSMT-SHA512", BCObjectIdentifiers.xmss_mt_SHA512ph);
AddAlgorithm("SHAKE128WITHXMSSMT-SHAKE128", BCObjectIdentifiers.xmss_mt_SHAKE128ph);
AddAlgorithm("SHAKE256WITHXMSSMT-SHAKE256", BCObjectIdentifiers.xmss_mt_SHAKE256ph);
AddAlgorithm("LMS", PkcsObjectIdentifiers.IdAlgHssLmsHashsig);
AddAlgorithm("XMSS", IsaraObjectIdentifiers.id_alg_xmss);
AddAlgorithm("XMSS-SHA256", BCObjectIdentifiers.xmss_SHA256);
AddAlgorithm("XMSS-SHA512", BCObjectIdentifiers.xmss_SHA512);
AddAlgorithm("XMSS-SHAKE128", BCObjectIdentifiers.xmss_SHAKE128);
AddAlgorithm("XMSS-SHAKE256", BCObjectIdentifiers.xmss_SHAKE256);
AddAlgorithm("XMSSMT", IsaraObjectIdentifiers.id_alg_xmssmt);
AddAlgorithm("XMSSMT-SHA256", BCObjectIdentifiers.xmss_mt_SHA256);
AddAlgorithm("XMSSMT-SHA512", BCObjectIdentifiers.xmss_mt_SHA512);
AddAlgorithm("XMSSMT-SHAKE128", BCObjectIdentifiers.xmss_mt_SHAKE128);
AddAlgorithm("XMSSMT-SHAKE256", BCObjectIdentifiers.xmss_mt_SHAKE256);
AddAlgorithm("SPHINCS+", BCObjectIdentifiers.sphincsPlus);
AddAlgorithm("SPHINCSPLUS", BCObjectIdentifiers.sphincsPlus);
AddAlgorithm("DILITHIUM2", BCObjectIdentifiers.dilithium2);
AddAlgorithm("DILITHIUM3", BCObjectIdentifiers.dilithium3);
AddAlgorithm("DILITHIUM5", BCObjectIdentifiers.dilithium5);
AddAlgorithm("DILITHIUM2-AES", BCObjectIdentifiers.dilithium2_aes);
AddAlgorithm("DILITHIUM3-AES", BCObjectIdentifiers.dilithium3_aes);
AddAlgorithm("DILITHIUM5-AES", BCObjectIdentifiers.dilithium5_aes);
AddAlgorithm("FALCON-512", BCObjectIdentifiers.falcon_512);
AddAlgorithm("FALCON-1024", BCObjectIdentifiers.falcon_1024);
AddAlgorithm("PICNIC", BCObjectIdentifiers.picnic_signature);
AddAlgorithm("SHA512WITHPICNIC", BCObjectIdentifiers.picnic_with_sha512);
AddAlgorithm("SHA3-512WITHPICNIC", BCObjectIdentifiers.picnic_with_sha3_512);
AddAlgorithm("SHAKE256WITHPICNIC", BCObjectIdentifiers.picnic_with_shake256);
NoParams.Add(X9ObjectIdentifiers.IdDsaWithSha1);
NoParams.Add(NistObjectIdentifiers.DsaWithSha224);
NoParams.Add(NistObjectIdentifiers.DsaWithSha256);
NoParams.Add(NistObjectIdentifiers.DsaWithSha384);
NoParams.Add(NistObjectIdentifiers.DsaWithSha512);
NoParams.Add(NistObjectIdentifiers.IdDsaWithSha3_224);
NoParams.Add(NistObjectIdentifiers.IdDsaWithSha3_256);
NoParams.Add(NistObjectIdentifiers.IdDsaWithSha3_384);
NoParams.Add(NistObjectIdentifiers.IdDsaWithSha3_512);
NoParams.Add(X9ObjectIdentifiers.ECDsaWithSha1);
NoParams.Add(OiwObjectIdentifiers.DsaWithSha1);
NoParams.Add(X9ObjectIdentifiers.ECDsaWithSha224);
NoParams.Add(X9ObjectIdentifiers.ECDsaWithSha256);
NoParams.Add(X9ObjectIdentifiers.ECDsaWithSha384);
NoParams.Add(X9ObjectIdentifiers.ECDsaWithSha512);
NoParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_224);
NoParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_256);
NoParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_384);
NoParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_512);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA224);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA256);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA384);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA512);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_224);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_256);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_384);
NoParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_512);
NoParams.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94);
NoParams.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
NoParams.Add(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
NoParams.Add(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
NoParams.Add(BCObjectIdentifiers.sphincs256_with_SHA512);
NoParams.Add(BCObjectIdentifiers.sphincs256_with_SHA3_512);
NoParams.Add(BCObjectIdentifiers.sphincsPlus);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_128s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_128f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_128s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_128f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_128s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_128f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_192s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_192f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_192s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_192f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_192s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_192f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_256s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_sha2_256f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_256s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_shake_256f_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_256s_r3);
NoParams.Add(BCObjectIdentifiers.sphincsPlus_haraka_256f_r3);
NoParams.Add(BCObjectIdentifiers.dilithium);
NoParams.Add(BCObjectIdentifiers.dilithium2);
NoParams.Add(BCObjectIdentifiers.dilithium3);
NoParams.Add(BCObjectIdentifiers.dilithium5);
NoParams.Add(BCObjectIdentifiers.dilithium2_aes);
NoParams.Add(BCObjectIdentifiers.dilithium3_aes);
NoParams.Add(BCObjectIdentifiers.dilithium5_aes);
NoParams.Add(BCObjectIdentifiers.falcon);
NoParams.Add(BCObjectIdentifiers.falcon_512);
NoParams.Add(BCObjectIdentifiers.falcon_1024);
NoParams.Add(BCObjectIdentifiers.picnic_signature);
NoParams.Add(BCObjectIdentifiers.picnic_with_sha512);
NoParams.Add(BCObjectIdentifiers.picnic_with_sha3_512);
NoParams.Add(BCObjectIdentifiers.picnic_with_shake256);
NoParams.Add(BCObjectIdentifiers.xmss_SHA256ph);
NoParams.Add(BCObjectIdentifiers.xmss_SHA512ph);
NoParams.Add(BCObjectIdentifiers.xmss_SHAKE128ph);
NoParams.Add(BCObjectIdentifiers.xmss_SHAKE256ph);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHA256ph);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHA512ph);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHAKE128ph);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHAKE256ph);
NoParams.Add(BCObjectIdentifiers.xmss_SHA256);
NoParams.Add(BCObjectIdentifiers.xmss_SHA512);
NoParams.Add(BCObjectIdentifiers.xmss_SHAKE128);
NoParams.Add(BCObjectIdentifiers.xmss_SHAKE256);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHA256);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHA512);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHAKE128);
NoParams.Add(BCObjectIdentifiers.xmss_mt_SHAKE256);
NoParams.Add(IsaraObjectIdentifiers.id_alg_xmss);
NoParams.Add(IsaraObjectIdentifiers.id_alg_xmssmt);
NoParams.Add(BCObjectIdentifiers.qTESLA_p_I);
NoParams.Add(BCObjectIdentifiers.qTESLA_p_III);
NoParams.Add(GMObjectIdentifiers.sm2sign_with_sha256);
NoParams.Add(GMObjectIdentifiers.sm2sign_with_sm3);
NoParams.Add(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128);
NoParams.Add(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256);
NoParams.Add(X509ObjectIdentifiers.id_ecdsa_with_shake128);
NoParams.Add(X509ObjectIdentifiers.id_ecdsa_with_shake256);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha1WithRsaEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha224WithRsaEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha256WithRsaEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha384WithRsaEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha512WithRsaEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha512_224WithRSAEncryption);
Pkcs15RsaEncryption.Add(PkcsObjectIdentifiers.Sha512_256WithRSAEncryption);
Pkcs15RsaEncryption.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128);
Pkcs15RsaEncryption.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160);
Pkcs15RsaEncryption.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256);
Pkcs15RsaEncryption.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224);
Pkcs15RsaEncryption.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256);
Pkcs15RsaEncryption.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384);
Pkcs15RsaEncryption.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512);
AlgorithmIdentifier hashAlgID = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1, DerNull.Instance);
AddParameters("SHA1WITHRSAANDMGF1", CreatePssParams(hashAlgID, 20));
AlgorithmIdentifier hashAlgID2 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha224, DerNull.Instance);
AddParameters("SHA224WITHRSAANDMGF1", CreatePssParams(hashAlgID2, 28));
AlgorithmIdentifier hashAlgID3 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha256, DerNull.Instance);
AddParameters("SHA256WITHRSAANDMGF1", CreatePssParams(hashAlgID3, 32));
AlgorithmIdentifier hashAlgID4 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha384, DerNull.Instance);
AddParameters("SHA384WITHRSAANDMGF1", CreatePssParams(hashAlgID4, 48));
AlgorithmIdentifier hashAlgID5 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha512, DerNull.Instance);
AddParameters("SHA512WITHRSAANDMGF1", CreatePssParams(hashAlgID5, 64));
AlgorithmIdentifier hashAlgID6 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_224, DerNull.Instance);
AddParameters("SHA3-224WITHRSAANDMGF1", CreatePssParams(hashAlgID6, 28));
AlgorithmIdentifier hashAlgID7 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_256, DerNull.Instance);
AddParameters("SHA3-256WITHRSAANDMGF1", CreatePssParams(hashAlgID7, 32));
AlgorithmIdentifier hashAlgID8 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_384, DerNull.Instance);
AddParameters("SHA3-384WITHRSAANDMGF1", CreatePssParams(hashAlgID8, 48));
AlgorithmIdentifier hashAlgID9 = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_512, DerNull.Instance);
AddParameters("SHA3-512WITHRSAANDMGF1", CreatePssParams(hashAlgID9, 64));
AddDigestOid(PkcsObjectIdentifiers.Sha224WithRsaEncryption, NistObjectIdentifiers.IdSha224);
AddDigestOid(PkcsObjectIdentifiers.Sha256WithRsaEncryption, NistObjectIdentifiers.IdSha256);
AddDigestOid(PkcsObjectIdentifiers.Sha384WithRsaEncryption, NistObjectIdentifiers.IdSha384);
AddDigestOid(PkcsObjectIdentifiers.Sha512WithRsaEncryption, NistObjectIdentifiers.IdSha512);
AddDigestOid(PkcsObjectIdentifiers.Sha512_224WithRSAEncryption, NistObjectIdentifiers.IdSha512_224);
AddDigestOid(PkcsObjectIdentifiers.Sha512_256WithRSAEncryption, NistObjectIdentifiers.IdSha512_256);
AddDigestOid(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224, NistObjectIdentifiers.IdSha3_224);
AddDigestOid(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256, NistObjectIdentifiers.IdSha3_256);
AddDigestOid(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384, NistObjectIdentifiers.IdSha3_384);
AddDigestOid(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512, NistObjectIdentifiers.IdSha3_512);
AddDigestOid(PkcsObjectIdentifiers.MD2WithRsaEncryption, PkcsObjectIdentifiers.MD2);
AddDigestOid(PkcsObjectIdentifiers.MD4WithRsaEncryption, PkcsObjectIdentifiers.MD4);
AddDigestOid(PkcsObjectIdentifiers.MD5WithRsaEncryption, PkcsObjectIdentifiers.MD5);
AddDigestOid(PkcsObjectIdentifiers.Sha1WithRsaEncryption, OiwObjectIdentifiers.IdSha1);
AddDigestOid(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128, TeleTrusTObjectIdentifiers.RipeMD128);
AddDigestOid(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160, TeleTrusTObjectIdentifiers.RipeMD160);
AddDigestOid(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256, TeleTrusTObjectIdentifiers.RipeMD256);
AddDigestOid(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94, CryptoProObjectIdentifiers.GostR3411);
AddDigestOid(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001, CryptoProObjectIdentifiers.GostR3411);
AddDigestOid(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256);
AddDigestOid(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512);
AddDigestOid(X9ObjectIdentifiers.IdDsaWithSha1, OiwObjectIdentifiers.IdSha1);
AddDigestOid(OiwObjectIdentifiers.DsaWithSha1, OiwObjectIdentifiers.IdSha1);
AddDigestOid(NistObjectIdentifiers.DsaWithSha224, NistObjectIdentifiers.IdSha224);
AddDigestOid(NistObjectIdentifiers.DsaWithSha256, NistObjectIdentifiers.IdSha256);
AddDigestOid(NistObjectIdentifiers.DsaWithSha384, NistObjectIdentifiers.IdSha384);
AddDigestOid(NistObjectIdentifiers.DsaWithSha512, NistObjectIdentifiers.IdSha512);
AddDigestOid(NistObjectIdentifiers.IdDsaWithSha3_224, NistObjectIdentifiers.IdSha3_224);
AddDigestOid(NistObjectIdentifiers.IdDsaWithSha3_256, NistObjectIdentifiers.IdSha3_256);
AddDigestOid(NistObjectIdentifiers.IdDsaWithSha3_384, NistObjectIdentifiers.IdSha3_384);
AddDigestOid(NistObjectIdentifiers.IdDsaWithSha3_512, NistObjectIdentifiers.IdSha3_512);
AddDigestOid(X9ObjectIdentifiers.ECDsaWithSha1, OiwObjectIdentifiers.IdSha1);
AddDigestOid(X9ObjectIdentifiers.ECDsaWithSha224, NistObjectIdentifiers.IdSha224);
AddDigestOid(X9ObjectIdentifiers.ECDsaWithSha256, NistObjectIdentifiers.IdSha256);
AddDigestOid(X9ObjectIdentifiers.ECDsaWithSha384, NistObjectIdentifiers.IdSha384);
AddDigestOid(X9ObjectIdentifiers.ECDsaWithSha512, NistObjectIdentifiers.IdSha512);
AddDigestOid(NistObjectIdentifiers.IdEcdsaWithSha3_224, NistObjectIdentifiers.IdSha3_224);
AddDigestOid(NistObjectIdentifiers.IdEcdsaWithSha3_256, NistObjectIdentifiers.IdSha3_256);
AddDigestOid(NistObjectIdentifiers.IdEcdsaWithSha3_384, NistObjectIdentifiers.IdSha3_384);
AddDigestOid(NistObjectIdentifiers.IdEcdsaWithSha3_512, NistObjectIdentifiers.IdSha3_512);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_128s_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_128f_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_128s_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_128f_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_192s_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_192f_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_192s_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_192f_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_256s_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_256f_r3, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_256s_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_256f_r3, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_128s_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_128f_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_128s_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_128f_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_192s_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_192f_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_192s_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_192f_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_256s_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_sha2_256f_r3_simple, NistObjectIdentifiers.IdSha256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_256s_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(BCObjectIdentifiers.sphincsPlus_shake_256f_r3_simple, NistObjectIdentifiers.IdShake256);
AddDigestOid(GMObjectIdentifiers.sm2sign_with_sha256, NistObjectIdentifiers.IdSha256);
AddDigestOid(GMObjectIdentifiers.sm2sign_with_sm3, GMObjectIdentifiers.sm3);
AddDigestOid(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128, NistObjectIdentifiers.IdShake128);
AddDigestOid(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256, NistObjectIdentifiers.IdShake256);
AddDigestOid(X509ObjectIdentifiers.id_ecdsa_with_shake128, NistObjectIdentifiers.IdShake128);
AddDigestOid(X509ObjectIdentifiers.id_ecdsa_with_shake256, NistObjectIdentifiers.IdShake256);
AddAlgorithm("Ed25519", EdECObjectIdentifiers.id_Ed25519, null, true);
foreach (MLDsaParameters value in MLDsaParameters.ByName.Values) {
AddAlgorithm(value.Name, value.Oid, value.PreHashOid, true);
}
foreach (SlhDsaParameters value2 in SlhDsaParameters.ByName.Values) {
AddAlgorithm(value2.Name, value2.Oid, value2.PreHashOid, true);
}
}
protected DefaultSignatureAlgorithmFinder()
{
}
public virtual AlgorithmIdentifier Find(string signatureName)
{
if (!Algorithms.TryGetValue(signatureName, out DerObjectIdentifier value))
throw new ArgumentException("Unknown signature name: " + signatureName, "signatureName");
if (NoParams.Contains(value))
return new AlgorithmIdentifier(value);
if (!Parameters.TryGetValue(signatureName, out Asn1Encodable value2))
value2 = DerNull.Instance;
return new AlgorithmIdentifier(value, value2);
}
}
}