diff --git a/common/src/main/java/com/genexus/common/interfaces/IGXWSSignature.java b/common/src/main/java/com/genexus/common/interfaces/IGXWSSignature.java index e09195284..07f51e9bc 100644 --- a/common/src/main/java/com/genexus/common/interfaces/IGXWSSignature.java +++ b/common/src/main/java/com/genexus/common/interfaces/IGXWSSignature.java @@ -8,5 +8,11 @@ public interface IGXWSSignature void setKeystore(IGXWSSecurityKeyStore keystore); int getKeyIdentifierType(); void setKeyIdentifierType(int keyIdentifierType); + String getCanonicalizationalgorithm(); + void setCanonicalizationalgorithm(String algorithm); + String getDigest(); + void setDigest(String digest); + String getSignaturealgorithm(); + void setSignaturealgorithm(String algorithm); } diff --git a/java/src/main/java/com/genexus/ws/security/GXWSSignature.java b/java/src/main/java/com/genexus/ws/security/GXWSSignature.java index 3e0ce741e..1addfc46a 100644 --- a/java/src/main/java/com/genexus/ws/security/GXWSSignature.java +++ b/java/src/main/java/com/genexus/ws/security/GXWSSignature.java @@ -8,6 +8,9 @@ public class GXWSSignature implements IGXWSSignature private IGXWSSecurityKeyStore keystore; private String alias; private int keyIdentifierType; + private String canonicalizationAlgorithm; + private String digest; + private String signatureAlgorithm; public GXWSSignature() { @@ -44,5 +47,17 @@ public void setKeyIdentifierType(int keyIdentifierType) { this.keyIdentifierType = keyIdentifierType; } + + public String getCanonicalizationalgorithm() {return canonicalizationAlgorithm;} + + public void setCanonicalizationalgorithm(String algorithm) {this.canonicalizationAlgorithm = algorithm;} + + public String getDigest() {return digest;} + + public void setDigest(String digest) {this.digest = digest;} + + public String getSignaturealgorithm() { return signatureAlgorithm;} + + public void setSignaturealgorithm(String algorithm) {this.signatureAlgorithm = algorithm;} } diff --git a/wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java b/wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java index 2ed1d5e35..6cbc5f55e 100644 --- a/wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java +++ b/wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java @@ -151,6 +151,12 @@ public boolean handleMessage(SOAPMessageContext messageContext) WSSecSignature sign = new WSSecSignature(); sign.setKeyIdentifierType(wsSignature.getKeyIdentifierType()); sign.setUserInfo(wsSignature.getAlias(), wsSignature.getKeystore().getPassword()); + if (wsSignature.getCanonicalizationalgorithm() != null) + sign.setSigCanonicalization(wsSignature.getCanonicalizationalgorithm()); + if (wsSignature.getDigest() != null) + sign.setDigestAlgo(wsSignature.getDigest()); + if (wsSignature.getSignaturealgorithm() != null) + sign.setSignatureAlgorithm(wsSignature.getSignaturealgorithm()); signedDoc = sign.build(doc, signatureCrypto, secHeader); if (expirationTimeout > 0) diff --git a/wrapperjavax/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java b/wrapperjavax/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java index 0256568c8..4b9169692 100644 --- a/wrapperjavax/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java +++ b/wrapperjavax/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java @@ -151,6 +151,12 @@ public boolean handleMessage(SOAPMessageContext messageContext) WSSecSignature sign = new WSSecSignature(); sign.setKeyIdentifierType(wsSignature.getKeyIdentifierType()); sign.setUserInfo(wsSignature.getAlias(), wsSignature.getKeystore().getPassword()); + if (wsSignature.getCanonicalizationalgorithm() != null) + sign.setSigCanonicalization(wsSignature.getCanonicalizationalgorithm()); + if (wsSignature.getDigest() != null) + sign.setDigestAlgo(wsSignature.getDigest()); + if (wsSignature.getSignaturealgorithm() != null) + sign.setSignatureAlgorithm(wsSignature.getSignaturealgorithm()); signedDoc = sign.build(doc, signatureCrypto, secHeader); if (expirationTimeout > 0)