Esempio n. 1
0
        /// <summary>
        /// Digitally signs the AS4Message using the given <paramref name="signatureConfiguration"/>
        /// </summary>
        /// <param name="signatureConfiguration"></param>
        public void Sign(CalculateSignatureConfig signatureConfiguration)
        {
            if (signatureConfiguration == null)
            {
                throw new ArgumentNullException(nameof(signatureConfiguration));
            }

            SignStrategy signingStrategy = SignStrategy.ForAS4Message(this, signatureConfiguration);

            SecurityHeader.Sign(signingStrategy);
        }
Esempio n. 2
0
        /// <summary>
        /// Sign using the given <paramref name="signingStrategy"/>
        /// </summary>
        /// <param name="signingStrategy"></param>
        internal void Sign(SignStrategy signingStrategy)
        {
            if (signingStrategy == null)
            {
                throw new ArgumentNullException(nameof(signingStrategy));
            }

            _signature = signingStrategy.SignDocument();

            IsSigned = true;
        }
        private static SignStrategy CreateSignStrategyForSigning()
        {
            var        signingId  = new SigningId("header-id", "body-id");
            AS4Message as4Message = AS4Message.Empty;

            as4Message.SigningId = signingId;

            var signingConfig = new CalculateSignatureConfig(new StubCertificateRepository().GetStubCertificate(),
                                                             X509ReferenceType.BSTReference, Constants.SignAlgorithms.Sha256, Constants.HashFunctions.Sha256);

            return(SignStrategy.ForAS4Message(as4Message, signingConfig));
        }
Esempio n. 4
0
        private static AS4Message SignAS4MessageWithPullRequestCert(AS4Message message)
        {
            var certificate =
                new X509Certificate2(
                    @".\samples\certificates\AccessPointA.pfx",
                    "Pz4cZK4SULUwmraZa",
                    X509KeyStorageFlags.Exportable);

            var config = new CalculateSignatureConfig(certificate,
                                                      X509ReferenceType.BSTReference,
                                                      Constants.SignAlgorithms.Sha256,
                                                      Constants.HashFunctions.Sha256);

            message.SecurityHeader.Sign(
                SignStrategy.ForAS4Message(message, config));

            return(message);
        }
        public void ThenSignStrategySignsCorrectlyAS4Message()
        {
            // Arrange
            SignStrategy signingStrategy = CreateSignStrategyForSigning();

            // Act
            Signature signature = signingStrategy.SignDocument();

            XmlNode signatureElement = signature.GetXml();

            Assert.Equal("Signature", signatureElement.LocalName);

            XmlNodeList signedInfoReferences = signatureElement.SelectEbmsNodes("/dsig:SignedInfo/dsig:Reference");

            Assert.True(
                signedInfoReferences.Count == 2,
                "The required 2 <Reference/> elements are not present under the <SignedInfo/> element in the <Signature/>");

            XmlNodeList keyInfoReferences = signatureElement.SelectEbmsNodes("/dsig:KeyInfo/wsse:SecurityTokenReference/wsse:Reference");

            Assert.True(
                keyInfoReferences.Count == 1,
                "The required 1 <Reference/> element is not present under the <KeyInfo/> element in the <Signature/>");
        }