示例#1
0
        /// <summary>
        /// Verifies if the digital signature on the AS4 Message is valid.
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public bool VerifySignature(VerifySignatureConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            var verifier = new SignatureVerificationStrategy(EnvelopeDocument);

            return(verifier.VerifySignature(config));
        }
示例#2
0
            public async Task ThenVerifySignatureFailsWithUntrustedCertificate()
            {
                var as4Message = await GetAS4Message(Properties.Resources.as4_soap_untrusted_signed_message);

                // Assert to make sure that our arranged AS4Message is indeed signed.
                Assert.True(as4Message.IsSigned);

                var verificationStrategy = new SignatureVerificationStrategy(as4Message.EnvelopeDocument);

                // Act / Assert
                Assert.Throws <System.Security.Cryptography.CryptographicException>(
                    () => verificationStrategy.VerifySignature(AllowedUnknownRootCertAuthorityConfig()));
            }
示例#3
0
            public async Task ThenSignStrategyVerifiesAS4MessageCorrectly()
            {
                // Arrange
                var as4Message = await GetAS4Message(Properties.Resources.as4_soap_signed_message);

                // Assert to make sure that our arranged AS4Message is indeed signed.
                Assert.True(as4Message.IsSigned);

                var verificationStrategy = new SignatureVerificationStrategy(as4Message.EnvelopeDocument);

                bool validSignature = verificationStrategy.VerifySignature(AllowedUnknownRootCertAuthorityConfig());

                Assert.True(validSignature);
            }
示例#4
0
        /// <summary>
        /// Get the Signed References from the signature.
        /// </summary>
        /// <returns></returns>
        public IEnumerable <System.Security.Cryptography.Xml.Reference> GetReferences()
        {
            // TODO: this must be improved.

            try
            {
                var securityHeader = this.GetXml();

                if (securityHeader == null)
                {
                    return(new System.Security.Cryptography.Xml.Reference[] { });
                }

                var signature = new SignatureVerificationStrategy(securityHeader.OwnerDocument);

                return(signature.SignedInfo.References.OfType <System.Security.Cryptography.Xml.Reference>());
            }
            catch (Exception ex)
            {
                LogManager.GetCurrentClassLogger().Error(ex);
                return(Enumerable.Empty <System.Security.Cryptography.Xml.Reference>());
            }
        }