Exemple #1
0
        private static void VerifySigningCertificate(VerificationParameters parameters, X509Certificate2 signingCertificate)
        {
            var certificateBase64 = signingCertificate.RawData;
            var calculatedHash    = CryptoHelper.GetBytesSHA1(certificateBase64);

            var xmlDocument = new XmlDocument();

            xmlDocument.Load(parameters.InputPath);
            var signingCertificateNode = XmlHelper.FindNodesIn(xmlDocument.DocumentElement,
                                                               "Signature/Object/QualifyingProperties/SignedProperties/" +
                                                               "SignedSignatureProperties/SigningCertificate/Cert/CertDigest");
            var certificateHashNode = XmlHelper.FindNodesIn(signingCertificateNode[0],
                                                            "DigestValue");
            var certificateHashInSignature = Convert.FromBase64String(certificateHashNode[0].InnerText);

            if (!ArrayHelper.ArraysAreEqual(certificateHashInSignature, calculatedHash))
            {
                throw new InvalidSignedDocumentException("SigningCertificate cannot be verified");
            }
        }