Org.BouncyCastle.X509.X509Certificate.IsAlgIDEqual C# (CSharp) Method

IsAlgIDEqual() private static method

private static IsAlgIDEqual ( AlgorithmIdentifier id1, AlgorithmIdentifier id2 ) : bool
id1 AlgorithmIdentifier
id2 AlgorithmIdentifier
return bool
        private static bool IsAlgIDEqual(AlgorithmIdentifier id1, AlgorithmIdentifier id2)
        {
            if (!id1.ObjectID.Equals(id2.ObjectID))
                return false;

            Asn1Encodable p1 = id1.Parameters;
            Asn1Encodable p2 = id2.Parameters;

            if ((p1 == null) == (p2 == null))
                return Platform.Equals(p1, p2);

            // Exactly one of p1, p2 is null at this point
            return p1 == null
                ? p2.ToAsn1Object() is Asn1Null
                : p1.ToAsn1Object() is Asn1Null;
        }
    }

Usage Example

Example #1
0
        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");
            }
        }