/// <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); }
/// <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)); }
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/>"); }