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