Ejemplo n.º 1
0
        public void RabbitHoleTest()
        {
            var doc = CreateXmlDoc();

            Sign(doc);

            var xmlElement = doc.DocumentElement;
            var signedXml  = new SignedXmlWithIdFix(xmlElement);

            var signatureElement = xmlElement["Signature", SignedXml.XmlDsigNamespaceUrl];

            if (signatureElement == null)
            {
                throw new ArgumentNullException(nameof(signatureElement));
            }

            signedXml.LoadXml(signatureElement);
            XmlHelpers.ValidateReference(
                signedXml, xmlElement,
                XmlHelpers.GetCorrespondingDigestAlgorithm(minIncomingSignatureAlgorithm));

            X509Chain chain = new X509Chain();

            chain.ChainPolicy.ExtraStore.AddRange(BuildBagOfCerts(signedXml));
            chain.ChainPolicy.VerificationFlags |= X509VerificationFlags.AllowUnknownCertificateAuthority;
            chain.Build(_certificate).Should().BeTrue();
        }
Ejemplo n.º 2
0
        private bool CheckSignature(XmlDocument doc)
        {
            var xmlElement = doc.DocumentElement;
            var signedXml  = new SignedXmlWithIdFix(xmlElement);

            var signatureElement = xmlElement["Signature", SignedXml.XmlDsigNamespaceUrl];

            if (signatureElement == null)
            {
                throw new ArgumentNullException(nameof(signatureElement));
            }

            signedXml.LoadXml(signatureElement);
            XmlHelpers.ValidateReference(
                signedXml, xmlElement,
                XmlHelpers.GetCorrespondingDigestAlgorithm(minIncomingSignatureAlgorithm));

            var key = _certificate.PublicKey.Key;

            return(signedXml.CheckSignature(key));
        }
Ejemplo n.º 3
0
 public void XmlHelpers_GetCorrespondingDigestAlgorithmName_Sha256()
 {
     XmlHelpers.GetCorrespondingDigestAlgorithm(SignedXml.XmlDsigRSASHA256Url)
     .Should().Be(SignedXml.XmlDsigSHA256Url);
 }
Ejemplo n.º 4
0
 public void XmlHelpers_GetCorrespondingDigestAlgorithmName_Sha256()
 {
     XmlHelpers.GetCorrespondingDigestAlgorithm(SecurityAlgorithms.RsaSha256Signature)
     .Should().Be(SecurityAlgorithms.Sha256Digest);
 }