<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic JAVA Mapping Message Signature in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/java-mapping-message-signature/m-p/531650#M19421</link>
    <description>&lt;P&gt;Hello, guys.&lt;/P&gt;
  &lt;P&gt;We are trying to sign a message using java mapping. Unfortunately we are getting exception:&lt;/P&gt;
  &lt;P&gt;Java mapping com/delaware/generateSignature has thrown a StreamTransformationException.&lt;BR /&gt;Thrown:&lt;BR /&gt;com.sap.aii.mapping.api.StreamTransformationException: java.security.NoSuchAlgorithmException: ID21109: Remote call failed&lt;BR /&gt;at com.delaware.generateSignature.execute(generateSignature.java:119)&lt;BR /&gt;at com.delaware.generateSignature.transform(generateSignature.java:257)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep(JavaMapping.java:112)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:71)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:123)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:73)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79)&lt;BR /&gt;at sun.reflect.GeneratedMethodAccessor2065.invoke(Unknown Source)&lt;BR /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;BR /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)&lt;BR /&gt;at com.sun.proxy.$Proxy696.processFunction(Unknown Source)&lt;BR /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;BR /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;BR /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;BR /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;BR /&gt;at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:214)&lt;BR /&gt;at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:214)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)&lt;BR /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)&lt;/P&gt;
  &lt;P&gt;Our code is:&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;public&lt;/STRONG&gt;&lt;STRONG&gt;class&lt;/STRONG&gt; generateSignature &lt;STRONG&gt;extends&lt;/STRONG&gt; AbstractTransformation {&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;public&lt;/STRONG&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; execute(InputStream in, OutputStream out) &lt;STRONG&gt;throws&lt;/STRONG&gt; StreamTransformationException {&lt;/P&gt;
  &lt;P&gt; String toRemove = "&amp;lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?&amp;gt;";&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; DocumentBuilderFactory factory = DocumentBuilderFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; DocumentBuilder dbuilder = factory.newDocumentBuilder();&lt;/P&gt;
  &lt;P&gt; ;&lt;/P&gt;
  &lt;P&gt; Document docin = dbuilder.parse(in);&lt;/P&gt;
  &lt;P&gt; Document docout = dbuilder.newDocument();&lt;/P&gt;
  &lt;P&gt; TransformerFactory tf = TransformerFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; Transformer transform = tf.newTransformer();&lt;/P&gt;
  &lt;P&gt; InitialContext context = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;context = &lt;STRONG&gt;new&lt;/STRONG&gt; InitialContext();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NamingException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeystoreManager manager = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;manager = (KeystoreManager) context.lookup("keystore");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NamingException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyStore ks = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;ks = manager.getKeystore("NFE");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (RemoteException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; PrivateKey privatekey = (PrivateKey) ks.getKey("Leo", "".toCharArray());&lt;/P&gt;
  &lt;P&gt; String sDocin = generateDigitalSignature(docin, privatekey);&lt;/P&gt;
  &lt;P&gt;sDocin = sDocin.replace(toRemove, " ");&lt;/P&gt;
  &lt;P&gt; Text xmlIn = docout.createTextNode(sDocin);&lt;/P&gt;
  &lt;P&gt; Element root = docout.createElement("ReceberLoteEventos");&lt;/P&gt;
  &lt;P&gt;root.setAttribute("xmlns:ns1", "http://sped.fazenda.gov.br");&lt;/P&gt;
  &lt;P&gt;docout.appendChild(root);&lt;/P&gt;
  &lt;P&gt; Element loteEventos = docout.createElement("loteEventos");&lt;/P&gt;
  &lt;P&gt;root.appendChild(loteEventos);&lt;/P&gt;
  &lt;P&gt;loteEventos.appendChild(xmlIn);&lt;/P&gt;
  &lt;P&gt;Source source = &lt;STRONG&gt;new&lt;/STRONG&gt; DOMSource(docout);&lt;/P&gt;
  &lt;P&gt;StreamResult result = &lt;STRONG&gt;new&lt;/STRONG&gt; StreamResult(out);&lt;/P&gt;
  &lt;P&gt;transform.transform(source, result);&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception exception) {&lt;/P&gt;
  &lt;P&gt; getTrace().addDebugMessage(exception.getMessage());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;throw&lt;/STRONG&gt;&lt;STRONG&gt;new&lt;/STRONG&gt; StreamTransformationException(exception.toString());&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;@SuppressWarnings("unused")&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String getSignature() {&lt;/P&gt;
  &lt;P&gt; String signature = "";&lt;/P&gt;
  &lt;P&gt; String view = "NFE";&lt;/P&gt;
  &lt;P&gt; String key = "Leo";&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo("Start Certificate Read...");&lt;/P&gt;
  &lt;P&gt; InitialContext context = &lt;STRONG&gt;new&lt;/STRONG&gt; InitialContext();&lt;/P&gt;
  &lt;P&gt; KeystoreManager manager = (KeystoreManager) context.lookup("keystore");&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (!manager.existKeystoreView(view)) {&lt;/P&gt;
  &lt;P&gt; String[] aliases = manager.getKeystoreViewAliases();&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;for&lt;/STRONG&gt; (String s : aliases) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(s);&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyStore ks = manager.getKeystore(view);&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (!ks.containsAlias(key)) {&lt;/P&gt;
  &lt;P&gt; Enumeration&amp;lt;String&amp;gt; test = ks.aliases();&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;while&lt;/STRONG&gt; (test.hasMoreElements()) {&lt;/P&gt;
  &lt;P&gt; String string = (String) test.nextElement();&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(string);&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; PrivateKey privatekey = (PrivateKey) ks.getKey(key, "".toCharArray());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (privatekey == &lt;STRONG&gt;null&lt;/STRONG&gt;) {&lt;/P&gt;
  &lt;P&gt; getTrace().addWarning("Certificate not found");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;else&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;signature = Base64.&lt;EM&gt;encodeToString&lt;/EM&gt;(privatekey.toString().getBytes(), &lt;STRONG&gt;true&lt;/STRONG&gt;);&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(signature);&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(privatekey.getAlgorithm());&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;signature;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String convertDocumentToString(Document doc) {&lt;/P&gt;
  &lt;P&gt; String output = "";&lt;/P&gt;
  &lt;P&gt; TransformerFactory tf = TransformerFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; Transformer transformer;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;transformer = tf.newTransformer();&lt;/P&gt;
  &lt;P&gt;// below code to remove XML declaration&lt;/P&gt;
  &lt;P&gt;// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,&lt;/P&gt;
  &lt;P&gt;// "yes");&lt;/P&gt;
  &lt;P&gt; StringWriter writer = &lt;STRONG&gt;new&lt;/STRONG&gt; StringWriter();&lt;/P&gt;
  &lt;P&gt;transformer.transform(&lt;STRONG&gt;new&lt;/STRONG&gt; DOMSource(doc), &lt;STRONG&gt;new&lt;/STRONG&gt; StreamResult(writer));&lt;/P&gt;
  &lt;P&gt;output = writer.getBuffer().toString();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (TransformerException e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;output;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;@SuppressWarnings("unused")&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; Document convertStringToDocument(String xmlStr) {&lt;/P&gt;
  &lt;P&gt;DocumentBuilderFactory factory = DocumentBuilderFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; DocumentBuilder builder;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;builder = factory.newDocumentBuilder();&lt;/P&gt;
  &lt;P&gt; Document doc = builder.parse(&lt;STRONG&gt;new&lt;/STRONG&gt; InputSource(&lt;STRONG&gt;new&lt;/STRONG&gt; StringReader(xmlStr)));&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;doc;&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String generateDigitalSignature(Document docXML, PrivateKey privateKey) &lt;STRONG&gt;throws&lt;/STRONG&gt; NoSuchAlgorithmException,&lt;/P&gt;
  &lt;P&gt; InvalidAlgorithmParameterException, IOException, KeyException, TransformerException,&lt;/P&gt;
  &lt;P&gt; javax.xml.crypto.MarshalException, InstantiationException, IllegalAccessException, ClassNotFoundException {&lt;/P&gt;
  &lt;P&gt; XMLSignatureFactory fac = XMLSignatureFactory.&lt;EM&gt;getInstance&lt;/EM&gt;("DOM");&lt;/P&gt;
  &lt;P&gt; SignedInfo signedInfo = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;DOMSignContext si = &lt;STRONG&gt;new&lt;/STRONG&gt; DOMSignContext(privateKey, docXML.getDocumentElement());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.&lt;STRONG&gt;&lt;EM&gt;SHA1&lt;/EM&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;),&lt;/P&gt;
  &lt;P&gt; Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(fac.newTransform(Transform.&lt;STRONG&gt;&lt;EM&gt;ENVELOPED&lt;/EM&gt;&lt;/STRONG&gt;, (TransformParameterSpec) &lt;STRONG&gt;null&lt;/STRONG&gt;)),&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;null&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;);&lt;/P&gt;
  &lt;P&gt;signedInfo = fac.newSignedInfo(&lt;/P&gt;
  &lt;P&gt;fac.newCanonicalizationMethod(CanonicalizationMethod.&lt;STRONG&gt;&lt;EM&gt;INCLUSIVE_WITH_COMMENTS&lt;/EM&gt;&lt;/STRONG&gt;,&lt;/P&gt;
  &lt;P&gt; (C14NMethodParameterSpec) &lt;STRONG&gt;null&lt;/STRONG&gt;),&lt;/P&gt;
  &lt;P&gt;fac.newSignatureMethod(SignatureMethod.&lt;STRONG&gt;&lt;EM&gt;DSA_SHA1&lt;/EM&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;), Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(ref));&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NoSuchAlgorithmException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addWarning("Error at NoSuch");&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (InvalidAlgorithmParameterException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyPairGenerator kpg = KeyPairGenerator.&lt;EM&gt;getInstance&lt;/EM&gt;("DSA");&lt;/P&gt;
  &lt;P&gt;kpg.initialize(512);&lt;/P&gt;
  &lt;P&gt; KeyPair kp = kpg.generateKeyPair();&lt;/P&gt;
  &lt;P&gt; KeyInfoFactory kif = fac.getKeyInfoFactory();&lt;/P&gt;
  &lt;P&gt; KeyValue kv = kif.newKeyValue(kp.getPublic());&lt;/P&gt;
  &lt;P&gt; KeyInfo ki = kif.newKeyInfo(Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(kv));&lt;/P&gt;
  &lt;P&gt; XMLSignature xmlSignature = fac.newXMLSignature(signedInfo, ki);&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;xmlSignature.sign(si);&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (XMLSignatureException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addDebugMessage(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt; convertDocumentToString(docXML);&lt;/P&gt;
  &lt;P&gt;}&lt;/P&gt;
  &lt;P&gt;We do not have great knowledge in java. Do you have any idea why or what is causing the exception? &lt;/P&gt;</description>
    <pubDate>Fri, 01 Dec 2017 11:38:38 GMT</pubDate>
    <dc:creator>former_member538314</dc:creator>
    <dc:date>2017-12-01T11:38:38Z</dc:date>
    <item>
      <title>JAVA Mapping Message Signature</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/java-mapping-message-signature/m-p/531650#M19421</link>
      <description>&lt;P&gt;Hello, guys.&lt;/P&gt;
  &lt;P&gt;We are trying to sign a message using java mapping. Unfortunately we are getting exception:&lt;/P&gt;
  &lt;P&gt;Java mapping com/delaware/generateSignature has thrown a StreamTransformationException.&lt;BR /&gt;Thrown:&lt;BR /&gt;com.sap.aii.mapping.api.StreamTransformationException: java.security.NoSuchAlgorithmException: ID21109: Remote call failed&lt;BR /&gt;at com.delaware.generateSignature.execute(generateSignature.java:119)&lt;BR /&gt;at com.delaware.generateSignature.transform(generateSignature.java:257)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep(JavaMapping.java:112)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87)&lt;BR /&gt;at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:71)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:123)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:73)&lt;BR /&gt;at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79)&lt;BR /&gt;at sun.reflect.GeneratedMethodAccessor2065.invoke(Unknown Source)&lt;BR /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;BR /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)&lt;BR /&gt;at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)&lt;BR /&gt;at com.sun.proxy.$Proxy696.processFunction(Unknown Source)&lt;BR /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;BR /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;BR /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;BR /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;BR /&gt;at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:214)&lt;BR /&gt;at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:214)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)&lt;BR /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)&lt;BR /&gt;at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)&lt;/P&gt;
  &lt;P&gt;Our code is:&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;public&lt;/STRONG&gt;&lt;STRONG&gt;class&lt;/STRONG&gt; generateSignature &lt;STRONG&gt;extends&lt;/STRONG&gt; AbstractTransformation {&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;public&lt;/STRONG&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; execute(InputStream in, OutputStream out) &lt;STRONG&gt;throws&lt;/STRONG&gt; StreamTransformationException {&lt;/P&gt;
  &lt;P&gt; String toRemove = "&amp;lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?&amp;gt;";&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; DocumentBuilderFactory factory = DocumentBuilderFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; DocumentBuilder dbuilder = factory.newDocumentBuilder();&lt;/P&gt;
  &lt;P&gt; ;&lt;/P&gt;
  &lt;P&gt; Document docin = dbuilder.parse(in);&lt;/P&gt;
  &lt;P&gt; Document docout = dbuilder.newDocument();&lt;/P&gt;
  &lt;P&gt; TransformerFactory tf = TransformerFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; Transformer transform = tf.newTransformer();&lt;/P&gt;
  &lt;P&gt; InitialContext context = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;context = &lt;STRONG&gt;new&lt;/STRONG&gt; InitialContext();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NamingException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeystoreManager manager = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;manager = (KeystoreManager) context.lookup("keystore");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NamingException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyStore ks = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;ks = manager.getKeystore("NFE");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (RemoteException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; PrivateKey privatekey = (PrivateKey) ks.getKey("Leo", "".toCharArray());&lt;/P&gt;
  &lt;P&gt; String sDocin = generateDigitalSignature(docin, privatekey);&lt;/P&gt;
  &lt;P&gt;sDocin = sDocin.replace(toRemove, " ");&lt;/P&gt;
  &lt;P&gt; Text xmlIn = docout.createTextNode(sDocin);&lt;/P&gt;
  &lt;P&gt; Element root = docout.createElement("ReceberLoteEventos");&lt;/P&gt;
  &lt;P&gt;root.setAttribute("xmlns:ns1", "http://sped.fazenda.gov.br");&lt;/P&gt;
  &lt;P&gt;docout.appendChild(root);&lt;/P&gt;
  &lt;P&gt; Element loteEventos = docout.createElement("loteEventos");&lt;/P&gt;
  &lt;P&gt;root.appendChild(loteEventos);&lt;/P&gt;
  &lt;P&gt;loteEventos.appendChild(xmlIn);&lt;/P&gt;
  &lt;P&gt;Source source = &lt;STRONG&gt;new&lt;/STRONG&gt; DOMSource(docout);&lt;/P&gt;
  &lt;P&gt;StreamResult result = &lt;STRONG&gt;new&lt;/STRONG&gt; StreamResult(out);&lt;/P&gt;
  &lt;P&gt;transform.transform(source, result);&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception exception) {&lt;/P&gt;
  &lt;P&gt; getTrace().addDebugMessage(exception.getMessage());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;throw&lt;/STRONG&gt;&lt;STRONG&gt;new&lt;/STRONG&gt; StreamTransformationException(exception.toString());&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;@SuppressWarnings("unused")&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String getSignature() {&lt;/P&gt;
  &lt;P&gt; String signature = "";&lt;/P&gt;
  &lt;P&gt; String view = "NFE";&lt;/P&gt;
  &lt;P&gt; String key = "Leo";&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo("Start Certificate Read...");&lt;/P&gt;
  &lt;P&gt; InitialContext context = &lt;STRONG&gt;new&lt;/STRONG&gt; InitialContext();&lt;/P&gt;
  &lt;P&gt; KeystoreManager manager = (KeystoreManager) context.lookup("keystore");&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (!manager.existKeystoreView(view)) {&lt;/P&gt;
  &lt;P&gt; String[] aliases = manager.getKeystoreViewAliases();&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;for&lt;/STRONG&gt; (String s : aliases) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(s);&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyStore ks = manager.getKeystore(view);&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (!ks.containsAlias(key)) {&lt;/P&gt;
  &lt;P&gt; Enumeration&amp;lt;String&amp;gt; test = ks.aliases();&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;while&lt;/STRONG&gt; (test.hasMoreElements()) {&lt;/P&gt;
  &lt;P&gt; String string = (String) test.nextElement();&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(string);&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; PrivateKey privatekey = (PrivateKey) ks.getKey(key, "".toCharArray());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (privatekey == &lt;STRONG&gt;null&lt;/STRONG&gt;) {&lt;/P&gt;
  &lt;P&gt; getTrace().addWarning("Certificate not found");&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;else&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;signature = Base64.&lt;EM&gt;encodeToString&lt;/EM&gt;(privatekey.toString().getBytes(), &lt;STRONG&gt;true&lt;/STRONG&gt;);&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(signature);&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(privatekey.getAlgorithm());&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;signature;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String convertDocumentToString(Document doc) {&lt;/P&gt;
  &lt;P&gt; String output = "";&lt;/P&gt;
  &lt;P&gt; TransformerFactory tf = TransformerFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; Transformer transformer;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;transformer = tf.newTransformer();&lt;/P&gt;
  &lt;P&gt;// below code to remove XML declaration&lt;/P&gt;
  &lt;P&gt;// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,&lt;/P&gt;
  &lt;P&gt;// "yes");&lt;/P&gt;
  &lt;P&gt; StringWriter writer = &lt;STRONG&gt;new&lt;/STRONG&gt; StringWriter();&lt;/P&gt;
  &lt;P&gt;transformer.transform(&lt;STRONG&gt;new&lt;/STRONG&gt; DOMSource(doc), &lt;STRONG&gt;new&lt;/STRONG&gt; StreamResult(writer));&lt;/P&gt;
  &lt;P&gt;output = writer.getBuffer().toString();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (TransformerException e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;output;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;@SuppressWarnings("unused")&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; Document convertStringToDocument(String xmlStr) {&lt;/P&gt;
  &lt;P&gt;DocumentBuilderFactory factory = DocumentBuilderFactory.&lt;EM&gt;newInstance&lt;/EM&gt;();&lt;/P&gt;
  &lt;P&gt; DocumentBuilder builder;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;builder = factory.newDocumentBuilder();&lt;/P&gt;
  &lt;P&gt; Document doc = builder.parse(&lt;STRONG&gt;new&lt;/STRONG&gt; InputSource(&lt;STRONG&gt;new&lt;/STRONG&gt; StringReader(xmlStr)));&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;doc;&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (Exception e) {&lt;/P&gt;
  &lt;P&gt;e.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;private&lt;/STRONG&gt; String generateDigitalSignature(Document docXML, PrivateKey privateKey) &lt;STRONG&gt;throws&lt;/STRONG&gt; NoSuchAlgorithmException,&lt;/P&gt;
  &lt;P&gt; InvalidAlgorithmParameterException, IOException, KeyException, TransformerException,&lt;/P&gt;
  &lt;P&gt; javax.xml.crypto.MarshalException, InstantiationException, IllegalAccessException, ClassNotFoundException {&lt;/P&gt;
  &lt;P&gt; XMLSignatureFactory fac = XMLSignatureFactory.&lt;EM&gt;getInstance&lt;/EM&gt;("DOM");&lt;/P&gt;
  &lt;P&gt; SignedInfo signedInfo = &lt;STRONG&gt;null&lt;/STRONG&gt;;&lt;/P&gt;
  &lt;P&gt;DOMSignContext si = &lt;STRONG&gt;new&lt;/STRONG&gt; DOMSignContext(privateKey, docXML.getDocumentElement());&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt; Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.&lt;STRONG&gt;&lt;EM&gt;SHA1&lt;/EM&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;),&lt;/P&gt;
  &lt;P&gt; Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(fac.newTransform(Transform.&lt;STRONG&gt;&lt;EM&gt;ENVELOPED&lt;/EM&gt;&lt;/STRONG&gt;, (TransformParameterSpec) &lt;STRONG&gt;null&lt;/STRONG&gt;)),&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;null&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;);&lt;/P&gt;
  &lt;P&gt;signedInfo = fac.newSignedInfo(&lt;/P&gt;
  &lt;P&gt;fac.newCanonicalizationMethod(CanonicalizationMethod.&lt;STRONG&gt;&lt;EM&gt;INCLUSIVE_WITH_COMMENTS&lt;/EM&gt;&lt;/STRONG&gt;,&lt;/P&gt;
  &lt;P&gt; (C14NMethodParameterSpec) &lt;STRONG&gt;null&lt;/STRONG&gt;),&lt;/P&gt;
  &lt;P&gt;fac.newSignatureMethod(SignatureMethod.&lt;STRONG&gt;&lt;EM&gt;DSA_SHA1&lt;/EM&gt;&lt;/STRONG&gt;, &lt;STRONG&gt;null&lt;/STRONG&gt;), Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(ref));&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (NoSuchAlgorithmException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addWarning("Error at NoSuch");&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (InvalidAlgorithmParameterException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addInfo(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt; KeyPairGenerator kpg = KeyPairGenerator.&lt;EM&gt;getInstance&lt;/EM&gt;("DSA");&lt;/P&gt;
  &lt;P&gt;kpg.initialize(512);&lt;/P&gt;
  &lt;P&gt; KeyPair kp = kpg.generateKeyPair();&lt;/P&gt;
  &lt;P&gt; KeyInfoFactory kif = fac.getKeyInfoFactory();&lt;/P&gt;
  &lt;P&gt; KeyValue kv = kif.newKeyValue(kp.getPublic());&lt;/P&gt;
  &lt;P&gt; KeyInfo ki = kif.newKeyInfo(Collections.&lt;EM&gt;singletonList&lt;/EM&gt;(kv));&lt;/P&gt;
  &lt;P&gt; XMLSignature xmlSignature = fac.newXMLSignature(signedInfo, ki);&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;try&lt;/STRONG&gt; {&lt;/P&gt;
  &lt;P&gt;xmlSignature.sign(si);&lt;/P&gt;
  &lt;P&gt; } &lt;STRONG&gt;catch&lt;/STRONG&gt; (XMLSignatureException ex) {&lt;/P&gt;
  &lt;P&gt; getTrace().addDebugMessage(ex.getMessage());&lt;/P&gt;
  &lt;P&gt;ex.printStackTrace();&lt;/P&gt;
  &lt;P&gt; }&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;return&lt;/STRONG&gt; convertDocumentToString(docXML);&lt;/P&gt;
  &lt;P&gt;}&lt;/P&gt;
  &lt;P&gt;We do not have great knowledge in java. Do you have any idea why or what is causing the exception? &lt;/P&gt;</description>
      <pubDate>Fri, 01 Dec 2017 11:38:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/java-mapping-message-signature/m-p/531650#M19421</guid>
      <dc:creator>former_member538314</dc:creator>
      <dc:date>2017-12-01T11:38:38Z</dc:date>
    </item>
  </channel>
</rss>

