protected virtual void CheckSignature(AsymmetricKeyParameter publicKey, ISigner signature)
{
if (!X509Certificate.IsAlgIDEqual(this.c.SignatureAlgorithm, this.c.TbsCertificate.Signature))
{
throw new CertificateException("signature algorithm in TBS cert not same as outer cert");
}
Asn1Encodable parameters = this.c.SignatureAlgorithm.Parameters;
X509SignatureUtilities.SetSignatureParameters(signature, parameters);
signature.Init(false, publicKey);
byte[] tbsCertificate = this.GetTbsCertificate();
signature.BlockUpdate(tbsCertificate, 0, tbsCertificate.Length);
byte[] signature2 = this.GetSignature();
if (!signature.VerifySignature(signature2))
{
throw new InvalidKeyException("Public key presented not for certificate signature");
}
}