<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

CmsSignedHelper

static class CmsSignedHelper
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Bsi; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Asn1.CryptoPro; using Org.BouncyCastle.Asn1.Eac; using Org.BouncyCastle.Asn1.EdEC; using Org.BouncyCastle.Asn1.GM; 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; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Cms { internal static class CmsSignedHelper { private static readonly Dictionary<DerObjectIdentifier, string> m_encryptionAlgs; private static readonly Dictionary<DerObjectIdentifier, string> m_digestAlgs; private static readonly Dictionary<string, string[]> m_digestAliases; private static readonly Dictionary<string, DerObjectIdentifier> m_ecAlgorithms; private static readonly HashSet<DerObjectIdentifier> m_noParams; private static readonly Dictionary<DerObjectIdentifier, DerObjectIdentifier> m_slhDsaDigestAlgs; private static void AddEntries(DerObjectIdentifier oid, string digest, string encryption) { m_digestAlgs.Add(oid, digest); m_encryptionAlgs.Add(oid, encryption); } static CmsSignedHelper() { m_encryptionAlgs = new Dictionary<DerObjectIdentifier, string>(); m_digestAlgs = new Dictionary<DerObjectIdentifier, string>(); m_digestAliases = new Dictionary<string, string[]>(); m_ecAlgorithms = new Dictionary<string, DerObjectIdentifier>(); m_noParams = new HashSet<DerObjectIdentifier>(); m_slhDsaDigestAlgs = new Dictionary<DerObjectIdentifier, DerObjectIdentifier>(); AddEntries(X9ObjectIdentifiers.IdDsaWithSha1, "SHA1", "DSA"); AddEntries(OiwObjectIdentifiers.DsaWithSha1, "SHA1", "DSA"); AddEntries(NistObjectIdentifiers.DsaWithSha224, "SHA224", "DSA"); AddEntries(NistObjectIdentifiers.DsaWithSha256, "SHA256", "DSA"); AddEntries(NistObjectIdentifiers.DsaWithSha384, "SHA384", "DSA"); AddEntries(NistObjectIdentifiers.DsaWithSha512, "SHA512", "DSA"); AddEntries(NistObjectIdentifiers.IdDsaWithSha3_224, "SHA3-224", "DSA"); AddEntries(NistObjectIdentifiers.IdDsaWithSha3_256, "SHA3-256", "DSA"); AddEntries(NistObjectIdentifiers.IdDsaWithSha3_384, "SHA3-384", "DSA"); AddEntries(NistObjectIdentifiers.IdDsaWithSha3_512, "SHA3-512", "DSA"); AddEntries(X9ObjectIdentifiers.ECDsaWithSha1, "SHA1", "ECDSA"); AddEntries(X9ObjectIdentifiers.ECDsaWithSha224, "SHA224", "ECDSA"); AddEntries(X9ObjectIdentifiers.ECDsaWithSha256, "SHA256", "ECDSA"); AddEntries(X9ObjectIdentifiers.ECDsaWithSha384, "SHA384", "ECDSA"); AddEntries(X9ObjectIdentifiers.ECDsaWithSha512, "SHA512", "ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA1, "SHA1", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA224, "SHA224", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA256, "SHA256", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA384, "SHA384", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA512, "SHA512", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_RIPEMD160, "RIPEMD160", "PLAIN-ECDSA"); AddEntries(NistObjectIdentifiers.IdEcdsaWithSha3_224, "SHA3-224", "ECDSA"); AddEntries(NistObjectIdentifiers.IdEcdsaWithSha3_256, "SHA3-256", "ECDSA"); AddEntries(NistObjectIdentifiers.IdEcdsaWithSha3_384, "SHA3-384", "ECDSA"); AddEntries(NistObjectIdentifiers.IdEcdsaWithSha3_512, "SHA3-512", "ECDSA"); AddEntries(X509ObjectIdentifiers.id_ecdsa_with_shake128, "SHAKE128", "ECDSA"); AddEntries(X509ObjectIdentifiers.id_ecdsa_with_shake256, "SHAKE256", "ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA3_224, "SHA3-224", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA3_256, "SHA3-256", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA3_384, "SHA3-384", "PLAIN-ECDSA"); AddEntries(BsiObjectIdentifiers.ecdsa_plain_SHA3_512, "SHA3-512", "PLAIN-ECDSA"); AddEntries(OiwObjectIdentifiers.MD4WithRsa, "MD4", "RSA"); AddEntries(OiwObjectIdentifiers.MD4WithRsaEncryption, "MD4", "RSA"); AddEntries(OiwObjectIdentifiers.MD5WithRsa, "MD5", "RSA"); AddEntries(OiwObjectIdentifiers.Sha1WithRsa, "SHA1", "RSA"); AddEntries(PkcsObjectIdentifiers.MD2WithRsaEncryption, "MD2", "RSA"); AddEntries(PkcsObjectIdentifiers.MD4WithRsaEncryption, "MD4", "RSA"); AddEntries(PkcsObjectIdentifiers.MD5WithRsaEncryption, "MD5", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha1WithRsaEncryption, "SHA1", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha224WithRsaEncryption, "SHA224", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha256WithRsaEncryption, "SHA256", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha384WithRsaEncryption, "SHA384", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha512WithRsaEncryption, "SHA512", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha512_224WithRSAEncryption, "SHA512(224)", "RSA"); AddEntries(PkcsObjectIdentifiers.Sha512_256WithRSAEncryption, "SHA512(256)", "RSA"); AddEntries(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224, "SHA3-224", "RSA"); AddEntries(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256, "SHA3-256", "RSA"); AddEntries(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384, "SHA3-384", "RSA"); AddEntries(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512, "SHA3-512", "RSA"); AddEntries(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128, "SHAKE128", "RSAPSS"); AddEntries(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256, "SHAKE256", "RSAPSS"); AddEntries(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128, "RIPEMD128", "RSA"); AddEntries(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160, "RIPEMD160", "RSA"); AddEntries(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256, "RIPEMD256", "RSA"); AddEntries(EacObjectIdentifiers.id_TA_ECDSA_SHA_1, "SHA1", "ECDSA"); AddEntries(EacObjectIdentifiers.id_TA_ECDSA_SHA_224, "SHA224", "ECDSA"); AddEntries(EacObjectIdentifiers.id_TA_ECDSA_SHA_256, "SHA256", "ECDSA"); AddEntries(EacObjectIdentifiers.id_TA_ECDSA_SHA_384, "SHA384", "ECDSA"); AddEntries(EacObjectIdentifiers.id_TA_ECDSA_SHA_512, "SHA512", "ECDSA"); AddEntries(EacObjectIdentifiers.id_TA_RSA_v1_5_SHA_1, "SHA1", "RSA"); AddEntries(EacObjectIdentifiers.id_TA_RSA_v1_5_SHA_256, "SHA256", "RSA"); AddEntries(EacObjectIdentifiers.id_TA_RSA_PSS_SHA_1, "SHA1", "RSAandMGF1"); AddEntries(EacObjectIdentifiers.id_TA_RSA_PSS_SHA_256, "SHA256", "RSAandMGF1"); AddEntries(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94, "GOST3411", "GOST3410"); AddEntries(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001, "GOST3411", "ECGOST3410"); AddEntries(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256, "GOST3411-2012-256", "ECGOST3410-2012-256"); AddEntries(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512, "GOST3411-2012-512", "ECGOST3410-2012-512"); AddEntries(GMObjectIdentifiers.sm2sign_with_sha256, "SHA256", "SM2"); AddEntries(GMObjectIdentifiers.sm2sign_with_sm3, "SM3", "SM2"); m_encryptionAlgs.Add(X9ObjectIdentifiers.IdDsa, "DSA"); m_encryptionAlgs.Add(PkcsObjectIdentifiers.RsaEncryption, "RSA"); m_encryptionAlgs.Add(TeleTrusTObjectIdentifiers.rsaSignature, "RSA"); m_encryptionAlgs.Add(X509ObjectIdentifiers.IdEARsa, "RSA"); m_encryptionAlgs.Add(PkcsObjectIdentifiers.IdRsassaPss, "RSAandMGF1"); m_encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x94, "GOST3410"); m_encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x2001, "ECGOST3410"); m_encryptionAlgs.Add(new DerObjectIdentifier("1.3.6.1.4.1.5849.1.6.2"), "ECGOST3410"); m_encryptionAlgs.Add(new DerObjectIdentifier("1.3.6.1.4.1.5849.1.1.5"), "GOST3410"); m_encryptionAlgs.Add(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256, "ECGOST3410-2012-256"); m_encryptionAlgs.Add(RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512, "ECGOST3410-2012-512"); m_encryptionAlgs.Add(X9ObjectIdentifiers.IdECPublicKey, "ECDSA"); m_digestAlgs.Add(PkcsObjectIdentifiers.MD2, "MD2"); m_digestAlgs.Add(PkcsObjectIdentifiers.MD4, "MD4"); m_digestAlgs.Add(PkcsObjectIdentifiers.MD5, "MD5"); m_digestAlgs.Add(OiwObjectIdentifiers.IdSha1, "SHA1"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha224, "SHA224"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha256, "SHA256"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha384, "SHA384"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha512, "SHA512"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha512_224, "SHA512(224)"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha512_256, "SHA512(256)"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_224, "SHA3-224"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_256, "SHA3-256"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_384, "SHA3-384"); m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_512, "SHA3-512"); m_digestAlgs.Add(NistObjectIdentifiers.IdShake128, "SHAKE128"); m_digestAlgs.Add(NistObjectIdentifiers.IdShake256, "SHAKE256"); m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD128, "RIPEMD128"); m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD160, "RIPEMD160"); m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD256, "RIPEMD256"); m_digestAlgs.Add(CryptoProObjectIdentifiers.GostR3411, "GOST3411"); m_digestAlgs.Add(new DerObjectIdentifier("1.3.6.1.4.1.5849.1.2.1"), "GOST3411"); m_digestAlgs.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256, "GOST3411-2012-256"); m_digestAlgs.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, "GOST3411-2012-512"); m_digestAlgs.Add(GMObjectIdentifiers.sm3, "SM3"); m_digestAliases.Add("SHA1", new string[1] { "SHA-1" }); m_digestAliases.Add("SHA224", new string[1] { "SHA-224" }); m_digestAliases.Add("SHA256", new string[1] { "SHA-256" }); m_digestAliases.Add("SHA384", new string[1] { "SHA-384" }); m_digestAliases.Add("SHA512", new string[1] { "SHA-512" }); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha1, X9ObjectIdentifiers.ECDsaWithSha1); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha224, X9ObjectIdentifiers.ECDsaWithSha224); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha256, X9ObjectIdentifiers.ECDsaWithSha256); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha384, X9ObjectIdentifiers.ECDsaWithSha384); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha512, X9ObjectIdentifiers.ECDsaWithSha512); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha3_224, NistObjectIdentifiers.IdEcdsaWithSha3_224); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha3_256, NistObjectIdentifiers.IdEcdsaWithSha3_256); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha3_384, NistObjectIdentifiers.IdEcdsaWithSha3_384); m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha3_512, NistObjectIdentifiers.IdEcdsaWithSha3_512); m_noParams.Add(X9ObjectIdentifiers.IdDsaWithSha1); m_noParams.Add(OiwObjectIdentifiers.DsaWithSha1); m_noParams.Add(NistObjectIdentifiers.DsaWithSha224); m_noParams.Add(NistObjectIdentifiers.DsaWithSha256); m_noParams.Add(NistObjectIdentifiers.DsaWithSha384); m_noParams.Add(NistObjectIdentifiers.DsaWithSha512); m_noParams.Add(NistObjectIdentifiers.IdDsaWithSha3_224); m_noParams.Add(NistObjectIdentifiers.IdDsaWithSha3_256); m_noParams.Add(NistObjectIdentifiers.IdDsaWithSha3_384); m_noParams.Add(NistObjectIdentifiers.IdDsaWithSha3_512); m_noParams.Add(X9ObjectIdentifiers.ECDsaWithSha1); m_noParams.Add(X9ObjectIdentifiers.ECDsaWithSha224); m_noParams.Add(X9ObjectIdentifiers.ECDsaWithSha256); m_noParams.Add(X9ObjectIdentifiers.ECDsaWithSha384); m_noParams.Add(X9ObjectIdentifiers.ECDsaWithSha512); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA224); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA256); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA384); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA512); m_noParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_224); m_noParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_256); m_noParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_384); m_noParams.Add(NistObjectIdentifiers.IdEcdsaWithSha3_512); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_224); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_256); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_384); m_noParams.Add(BsiObjectIdentifiers.ecdsa_plain_SHA3_512); m_noParams.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94); m_noParams.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001); m_noParams.Add(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256); m_noParams.Add(RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512); m_noParams.Add(GMObjectIdentifiers.sm2sign_with_sha256); m_noParams.Add(GMObjectIdentifiers.sm2sign_with_sm3); m_noParams.Add(EdECObjectIdentifiers.id_Ed25519); m_noParams.Add(EdECObjectIdentifiers.id_Ed448); m_noParams.Add(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE128); m_noParams.Add(X509ObjectIdentifiers.id_RSASSA_PSS_SHAKE256); m_noParams.Add(X509ObjectIdentifiers.id_ecdsa_with_shake128); m_noParams.Add(X509ObjectIdentifiers.id_ecdsa_with_shake256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_128f, NistObjectIdentifiers.IdSha256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_128s, NistObjectIdentifiers.IdSha256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_192f, NistObjectIdentifiers.IdSha512); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_192s, NistObjectIdentifiers.IdSha512); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_256f, NistObjectIdentifiers.IdSha512); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_sha2_256s, NistObjectIdentifiers.IdSha512); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_128f, NistObjectIdentifiers.IdShake128); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_128s, NistObjectIdentifiers.IdShake128); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_192f, NistObjectIdentifiers.IdShake256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_192s, NistObjectIdentifiers.IdShake256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_256f, NistObjectIdentifiers.IdShake256); m_slhDsaDigestAlgs.Add(NistObjectIdentifiers.id_slh_dsa_shake_256s, NistObjectIdentifiers.IdShake256); } internal static string GetDigestAlgName(DerObjectIdentifier digestOid) { if (m_digestAlgs.TryGetValue(digestOid, out string value)) return value; return digestOid.GetID(); } internal static AlgorithmIdentifier GetSigAlgID(DerObjectIdentifier sigAlgOid, Asn1Encodable sigAlgParams) { if (m_noParams.Contains(sigAlgOid)) return new AlgorithmIdentifier(sigAlgOid); return new AlgorithmIdentifier(sigAlgOid, sigAlgParams); } internal static string[] GetDigestAliases(string algName) { if (!m_digestAliases.TryGetValue(algName, out string[] value)) return new string[0]; return (string[])value.Clone(); } internal static string GetEncryptionAlgName(DerObjectIdentifier encryptionOid) { if (m_encryptionAlgs.TryGetValue(encryptionOid, out string value)) return value; return encryptionOid.GetID(); } internal static IDigest GetDigestInstance(string algorithm) { return DigestUtilities.GetDigest(algorithm); } internal static ISigner GetSignatureInstance(string algorithm) { return SignerUtilities.GetSigner(algorithm); } internal static DerObjectIdentifier GetEncOid(AsymmetricKeyParameter key, string digestOID) { DerObjectIdentifier value = null; RsaKeyParameters rsaKeyParameters = key as RsaKeyParameters; if (rsaKeyParameters != null) { if (!rsaKeyParameters.IsPrivate) throw new ArgumentException("Expected RSA private key"); value = PkcsObjectIdentifiers.RsaEncryption; } else if (key is DsaPrivateKeyParameters) { if (digestOID.Equals(CmsSignedGenerator.DigestSha1)) value = X9ObjectIdentifiers.IdDsaWithSha1; else if (digestOID.Equals(CmsSignedGenerator.DigestSha224)) { value = NistObjectIdentifiers.DsaWithSha224; } else if (digestOID.Equals(CmsSignedGenerator.DigestSha256)) { value = NistObjectIdentifiers.DsaWithSha256; } else if (digestOID.Equals(CmsSignedGenerator.DigestSha384)) { value = NistObjectIdentifiers.DsaWithSha384; } else { if (!digestOID.Equals(CmsSignedGenerator.DigestSha512)) throw new ArgumentException("can't mix DSA with anything but SHA1/SHA2"); value = NistObjectIdentifiers.DsaWithSha512; } } else { ECPrivateKeyParameters eCPrivateKeyParameters = key as ECPrivateKeyParameters; if (eCPrivateKeyParameters != null) { if (eCPrivateKeyParameters.AlgorithmName == "ECGOST3410") value = CryptoProObjectIdentifiers.GostR3410x2001; else { ECGost3410Parameters eCGost3410Parameters = eCPrivateKeyParameters.Parameters as ECGost3410Parameters; if (eCGost3410Parameters != null) { DerObjectIdentifier digestParamSet = eCGost3410Parameters.DigestParamSet; if (digestParamSet.Equals(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256)) value = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256; else { if (!digestParamSet.Equals(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512)) throw new ArgumentException("can't determine GOST3410 algorithm"); value = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512; } } else if (!m_ecAlgorithms.TryGetValue(digestOID, out value)) { throw new ArgumentException("can't mix ECDSA with anything but SHA family digests"); } } } else { if (!(key is Gost3410PrivateKeyParameters)) throw new ArgumentException("Unknown algorithm in CmsSignedGenerator.GetEncOid"); value = CryptoProObjectIdentifiers.GostR3410x94; } } return value; } internal static IStore<X509V2AttributeCertificate> GetAttributeCertificates(Asn1Set attrCertSet) { List<X509V2AttributeCertificate> list = new List<X509V2AttributeCertificate>(); if (attrCertSet != null) { foreach (Asn1Encodable item in attrCertSet) { if (Asn1Utilities.TryGetOptionalContextTagged(item, 2, false, out AttributeCertificate result, AttributeCertificate.GetTagged)) list.Add(new X509V2AttributeCertificate(result)); } } return CollectionUtilities.CreateStore(list); } internal static IStore<X509Certificate> GetCertificates(Asn1Set certSet) { List<X509Certificate> list = new List<X509Certificate>(); if (certSet != null) { foreach (Asn1Encodable item in certSet) { X509CertificateStructure optional = X509CertificateStructure.GetOptional(item); if (optional != null) list.Add(new X509Certificate(optional)); } } return CollectionUtilities.CreateStore(list); } internal static IStore<X509Crl> GetCrls(Asn1Set crlSet) { List<X509Crl> list = new List<X509Crl>(); if (crlSet != null) { foreach (Asn1Encodable item in crlSet) { CertificateList optional = CertificateList.GetOptional(item); if (optional != null) list.Add(new X509Crl(optional)); } } return CollectionUtilities.CreateStore(list); } internal static IStore<Asn1Encodable> GetOtherRevInfos(Asn1Set crlSet, DerObjectIdentifier infoFormat) { List<Asn1Encodable> list = new List<Asn1Encodable>(); if (crlSet != null && infoFormat != null) { foreach (Asn1Encodable item in crlSet) { if (Asn1Utilities.TryGetOptionalContextTagged(item, 1, false, out OtherRevocationInfoFormat result, OtherRevocationInfoFormat.GetTagged) && infoFormat.Equals(result.InfoFormat)) list.Add(result.Info); } } return CollectionUtilities.CreateStore(list); } internal static DerObjectIdentifier GetSlhDsaDigestOid(DerObjectIdentifier slhDsaOid) { return m_slhDsaDigestAlgs[slhDsaOid]; } } }