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

Asn1VerifierFactory

Verifier class for signature verification in ASN.1 based profiles that use an AlgorithmIdentifier to preserve signature algorithm details.
using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Security; using Org.BouncyCastle.X509; using System; namespace Org.BouncyCastle.Crypto.Operators { public class Asn1VerifierFactory : IVerifierFactory { private readonly AlgorithmIdentifier m_algID; private readonly string m_algorithm; private readonly AsymmetricKeyParameter m_publicKey; public object AlgorithmDetails => m_algID; public Asn1VerifierFactory(string algorithm, AsymmetricKeyParameter publicKey) { if (algorithm == null) throw new ArgumentNullException("algorithm"); if (publicKey == null) throw new ArgumentNullException("publicKey"); if (publicKey.IsPrivate) throw new ArgumentException("Key for verifying must be public", "publicKey"); m_algID = X509Utilities.GetSigAlgID(algorithm); m_algorithm = algorithm; m_publicKey = publicKey; } public Asn1VerifierFactory(AlgorithmIdentifier algorithm, AsymmetricKeyParameter publicKey) { if (algorithm == null) throw new ArgumentNullException("algorithm"); if (publicKey == null) throw new ArgumentNullException("publicKey"); if (publicKey.IsPrivate) throw new ArgumentException("Key for verifying must be public", "publicKey"); m_algID = algorithm; m_algorithm = X509SignatureUtilities.GetSignatureName(algorithm); m_publicKey = publicKey; } public IStreamCalculator<IVerifier> CreateCalculator() { return new DefaultVerifierCalculator(SignerUtilities.InitSigner(m_algorithm, false, m_publicKey, null)); } } }