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