<div dir="ltr"><div>Hi All,<br><br></div><div>I'm having a test to encrypt and then 
decrypt a saml assertion. The assertion gets encrypted but when you try 
to decrypt I'm getting an error. The error is as follows:</div><div><br></div><div><b>Error</b></div><div><br>[main] ERROR org.opensaml.core.xml.io.AbstractXMLObjectMarshaller - Unable to root namespaces of cached DOM element, {<a href="http://www.w3.org/2001/04/xmlenc#%7DEncryptionMethod" target="_blank">http://www.w3.org/2001/04/xmlenc#}EncryptionMethod</a><br>org.w3c.dom.DOMException: Unable to resolve namespace prefix ds found on element {<a href="http://www.w3.org/2000/09/xmldsig#%7DDigestMethod" target="_blank">http://www.w3.org/2000/09/xmldsig#}DigestMethod</a><br>  at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:247)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:295)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:200)<br>       at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.prepareForAdoption(AbstractXMLObjectMarshaller.java:422)<br>      at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:144)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallChildElements(AbstractXMLObjectMarshaller.java:271)<br>   at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallInto(AbstractXMLObjectMarshaller.java:212)<br>    at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:118)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:75)<br> at org.opensaml.xmlsec.encryption.support.Decrypter.checkAndMarshall(Decrypter.java:963)<br>      at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:681)<br>    at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:643)<br>    at org.wso2.carbon.identity.sso.saml.TestUtils.getDecryptedAssertion(TestUtils.java:141)<br>      at org.wso2.carbon.identity.sso.saml.util.EncryptionTests.testSetEncryptedAssertionWithKeyEncryptionAlgorithm(EncryptionTests.java:77)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)<br>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>      at java.lang.reflect.Method.invoke(Method.java:498)<br>   at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)<br>    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)<br> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)<br>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)<br>   at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)<br>  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)<br>        at org.testng.TestRunner.privateRun(TestRunner.java:782)<br>      at org.testng.TestRunner.run(TestRunner.java:632)<br>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)<br>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)<br>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)<br>    at org.testng.SuiteRunner.run(SuiteRunner.java:268)<br>   at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)<br>   at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)<br>        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)<br>  at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)<br>       at org.testng.TestNG.run(TestNG.java:1064)<br>    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)<br>  at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)<br>[main] ERROR org.opensaml.xmlsec.encryption.support.Decrypter - Error marshalling target XMLObject<br>org.opensaml.core.xml.io.MarshallingException: Unable to root namespaces of cached DOM element, {<a href="http://www.w3.org/2001/04/xmlenc#%7DEncryptionMethod" target="_blank">http://www.w3.org/2001/04/xmlenc#}EncryptionMethod</a><br>      at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.prepareForAdoption(AbstractXMLObjectMarshaller.java:427)<br>      at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:144)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallChildElements(AbstractXMLObjectMarshaller.java:271)<br>   at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallInto(AbstractXMLObjectMarshaller.java:212)<br>    at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:118)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:75)<br> at org.opensaml.xmlsec.encryption.support.Decrypter.checkAndMarshall(Decrypter.java:963)<br>      at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:681)<br>    at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:643)<br>    at org.wso2.carbon.identity.sso.saml.TestUtils.getDecryptedAssertion(TestUtils.java:141)<br>      at org.wso2.carbon.identity.sso.saml.util.EncryptionTests.testSetEncryptedAssertionWithKeyEncryptionAlgorithm(EncryptionTests.java:77)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)<br>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>      at java.lang.reflect.Method.invoke(Method.java:498)<br>   at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)<br>    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)<br> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)<br>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)<br>   at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)<br>  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)<br>        at org.testng.TestRunner.privateRun(TestRunner.java:782)<br>      at org.testng.TestRunner.run(TestRunner.java:632)<br>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)<br>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)<br>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)<br>    at org.testng.SuiteRunner.run(SuiteRunner.java:268)<br>   at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)<br>   at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)<br>        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)<br>  at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)<br>       at org.testng.TestNG.run(TestNG.java:1064)<br>    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)<br>  at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)<br>Caused by: org.w3c.dom.DOMException: Unable to resolve namespace prefix ds found on element {<a href="http://www.w3.org/2000/09/xmldsig#%7DDigestMethod" target="_blank">http://www.w3.org/2000/09/xmldsig#}DigestMethod</a><br>    at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:247)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:295)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:200)<br>       at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.prepareForAdoption(AbstractXMLObjectMarshaller.java:422)<br>      ... 33 more<br>[main] ERROR org.opensaml.xmlsec.encryption.support.Decrypter - Error marshalling EncryptedKey for decryption<br>org.opensaml.xmlsec.encryption.support.DecryptionException: Error marshalling target XMLObject<br>    at org.opensaml.xmlsec.encryption.support.Decrypter.checkAndMarshall(Decrypter.java:966)<br>      at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:681)<br>    at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:643)<br>    at org.wso2.carbon.identity.sso.saml.TestUtils.getDecryptedAssertion(TestUtils.java:141)<br>      at org.wso2.carbon.identity.sso.saml.util.EncryptionTests.testSetEncryptedAssertionWithKeyEncryptionAlgorithm(EncryptionTests.java:77)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)<br>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>      at java.lang.reflect.Method.invoke(Method.java:498)<br>   at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)<br>    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)<br> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)<br>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)<br>   at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)<br>  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)<br>        at org.testng.TestRunner.privateRun(TestRunner.java:782)<br>      at org.testng.TestRunner.run(TestRunner.java:632)<br>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)<br>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)<br>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)<br>    at org.testng.SuiteRunner.run(SuiteRunner.java:268)<br>   at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)<br>   at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)<br>        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)<br>  at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)<br>       at org.testng.TestNG.run(TestNG.java:1064)<br>    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)<br>  at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)<br>Caused by: org.opensaml.core.xml.io.MarshallingException: Unable to root namespaces of cached DOM element, {<a href="http://www.w3.org/2001/04/xmlenc#%7DEncryptionMethod" target="_blank">http://www.w3.org/2001/04/xmlenc#}EncryptionMethod</a><br>       at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.prepareForAdoption(AbstractXMLObjectMarshaller.java:427)<br>      at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:144)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallChildElements(AbstractXMLObjectMarshaller.java:271)<br>   at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshallInto(AbstractXMLObjectMarshaller.java:212)<br>    at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:118)<br>        at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:75)<br> at org.opensaml.xmlsec.encryption.support.Decrypter.checkAndMarshall(Decrypter.java:963)<br>      ... 27 more<br>Caused by: org.w3c.dom.DOMException: Unable to resolve namespace prefix ds found on element {<a href="http://www.w3.org/2000/09/xmldsig#%7DDigestMethod" target="_blank">http://www.w3.org/2000/09/xmldsig#}DigestMethod</a><br>     at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:247)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:295)<br>       at net.shibboleth.utilities.java.support.xml.NamespaceSupport.rootNamespaces(NamespaceSupport.java:200)<br>       at org.opensaml.core.xml.io.AbstractXMLObjectMarshaller.prepareForAdoption(AbstractXMLObjectMarshaller.java:422)<br>      ... 33 more<br>[main] ERROR org.opensaml.xmlsec.encryption.support.Decrypter - Failed to decrypt EncryptedKey, valid decryption key could not be resolved<br><br>org.opensaml.xmlsec.encryption.support.DecryptionException: Valid decryption key for EncryptedKey could not be resolved<br><br>  at org.opensaml.xmlsec.encryption.support.Decrypter.decryptKey(Decrypter.java:655)<br>    at org.wso2.carbon.identity.sso.saml.TestUtils.getDecryptedAssertion(TestUtils.java:141)<br>      at org.wso2.carbon.identity.sso.saml.util.EncryptionTests.testSetEncryptedAssertionWithKeyEncryptionAlgorithm(EncryptionTests.java:77)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)<br>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>      at java.lang.reflect.Method.invoke(Method.java:498)<br>   at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)<br>    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)<br> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)<br>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)<br>   at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)<br>  at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)<br>        at org.testng.TestRunner.privateRun(TestRunner.java:782)<br>      at org.testng.TestRunner.run(TestRunner.java:632)<br>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)<br>       at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)<br>       at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)<br>    at org.testng.SuiteRunner.run(SuiteRunner.java:268)<br>   at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)<br>   at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)<br>        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)<br>  at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)<br>       at org.testng.TestNG.run(TestNG.java:1064)<br>    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)<br>  at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)</div><div><br></div><div><b>Error sources:</b></div><div><b><br></b></div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="color:rgb(204,120,50)">public void </span><span style="color:rgb(255,198,109)">testSetEncryptedAssertionWithKeyEncryptionAlgorithm</span>() <span style="color:rgb(204,120,50)">throws </span>Exception {<br><br>    Security.<span style="font-style:italic">addProvider</span>(<span style="color:rgb(204,120,50)">new </span>BouncyCastleProvider())<span style="color:rgb(204,120,50)">;</span><span style="color:rgb(128,128,128)"><br></span><span style="color:rgb(128,128,128)">    </span>Assertion assertion = SAMLTestAssertionBuilder.<span style="font-style:italic">buildDefaultSAMLAssertion</span>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>SAMLSSOUtil.<span style="font-style:italic">doBootstrap</span>()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span>prepareForAssertionEncryption()<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>EncryptedAssertion encryptedAssertion = SAMLSSOUtil.<span style="font-style:italic">setEncryptedAssertion</span>(assertion<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">            </span>TestConstants.<span style="color:rgb(152,118,170);font-style:italic">ASSERTION_ENCRYPTION_ALGO</span><span style="color:rgb(204,120,50)">, </span>TestConstants.<span style="color:rgb(152,118,170);font-style:italic">KEY_ENCRYPTION_ALGO</span><span style="color:rgb(204,120,50)">, </span>TestConstants.<span style="color:rgb(152,118,170);font-style:italic">WSO2_CARBON</span><span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">            </span><span style="color:rgb(106,135,89)">"carbon.super"</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span>TestUtils.<span style="font-style:italic">prepareCredentials</span>(<span style="color:rgb(152,118,170)">x509Credential</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>Assertion decryptedAssertion = TestUtils.<span style="font-style:italic">getDecryptedAssertion</span>(encryptedAssertion<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(152,118,170)">x509Credential</span>)<span style="color:rgb(204,120,50)">; // Error caused here<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span>assertEncryptedSAMLAssertion(assertion<span style="color:rgb(204,120,50)">, </span>encryptedAssertion<span style="color:rgb(204,120,50)">, </span>decryptedAssertion)<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div><br></div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"DejaVu Sans Mono";font-size:9pt"><span style="color:rgb(204,120,50)">public static </span>Assertion <span style="color:rgb(255,198,109)">getDecryptedAssertion</span>(EncryptedAssertion encryptedAssertion<span style="color:rgb(204,120,50)">, </span>X509Credential x509Credential)<br>        <span style="color:rgb(204,120,50)">throws </span>DecryptionException<span style="color:rgb(204,120,50)">, </span>KeyStoreException<span style="color:rgb(204,120,50)">, </span>UnrecoverableKeyException<span style="color:rgb(204,120,50)">, </span>NoSuchAlgorithmException {<br><br>    KeyInfoCredentialResolver keyResolver = <span style="color:rgb(204,120,50)">new </span>StaticKeyInfoCredentialResolver(x509Credential)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>Decrypter decrypter = <span style="color:rgb(204,120,50)">new </span>Decrypter(<span style="color:rgb(204,120,50)">null, </span>keyResolver<span style="color:rgb(204,120,50)">, null</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span>EncryptedKey key = encryptedAssertion.getEncryptedData().getKeyInfo().getEncryptedKeys().get(<span style="color:rgb(104,151,187)">0</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>SecretKey dkey = (SecretKey) decrypter.decryptKey(key<span style="color:rgb(204,120,50)">, </span>encryptedAssertion.getEncryptedData().<br>            getEncryptionMethod().getAlgorithm())<span style="color:rgb(204,120,50)">; // Error caused here<br></span><span style="color:rgb(204,120,50)">    </span>Credential shared = CredentialSupport.<span style="font-style:italic">getSimpleCredential</span>(dkey)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">    </span>decrypter = <span style="color:rgb(204,120,50)">new </span>Decrypter(<span style="color:rgb(204,120,50)">new </span>StaticKeyInfoCredentialResolver(shared)<span style="color:rgb(204,120,50)">, null, null</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    </span>decrypter.setRootInNewDocument(<span style="color:rgb(204,120,50)">true</span>)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">    return </span>decrypter.decrypt(encryptedAssertion)<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div><br></div><div>Useful links found were as below :</div><div><ol><li><a href="https://shibboleth.1660669.n2.nabble.com/Error-on-signing-outbound-SAML-message-td7621620.html" target="_blank">https://shibboleth.1660669.n2.nabble.com/Error-on-signing-outbound-SAML-message-td7621620.html</a></li><li><a href="https://shibboleth.1660669.n2.nabble.com/OpenSAML-V3-Problems-while-marshaling-encrypted-assertion-td7632834.html" target="_blank">https://shibboleth.1660669.n2.nabble.com/OpenSAML-V3-Problems-while-marshaling-encrypted-assertion-td7632834.html</a></li></ol><div>These
 links pointed out that there is a clash between xmlsec-1.5.6 and 
xmlsec-2.0.5. but the thing is when i check the dependency tree I can 
only find xmlsec-2.0.5. <br><div>Can anyone point out what this issue really is?<br><br></div><div>Any answers would be appreciated,<br></div><div>Deshan Koswatte</div></div></div></div>