在Java映射中需要帮助来签署XML。 数字签名

2020-09-06 01:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好专家 我正在尝试使用存储在...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我正在尝试使用存储在密钥库中的SSL证书对XML进行签名。 我试图使用以下代码调用证书。但是当我尝试跟踪已加载的证书时,它始终会给出nullPointer异常。

package com.nets.e2e; 导入java.io.ByteArrayOutputStream; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.OutputStream; 导入java.security.InvalidKeyException; 导入java.security.KeyStore; 导入java.security.KeyStoreException; 导入java.security.NoSuchAlgorithmException; 导入java.security.PrivateKey; 导入java.security.Security; 导入java.security.Signature; 导入java.security.UnrecoverableEntryException; 导入java.security.cert.Certificate; 导入java.security.cert.X509Certificate; 导入java.util.Date; 导入java.util.HashMap; 导入java.util.Map; 导入org.apache.commons.codec.binary.Base64; 导入javax.naming.InitialContext; 导入javax.naming.NamingException; 导入javax.xml.parsers.DocumentBuilder; 导入javax.xml.parsers.DocumentBuilderFactory; 导入javax.xml.parsers.ParserConfigurationException; 导入javax.xml.transform.OutputKeys; 导入javax.xml.transform.Transformer; 导入javax.xml.transform.TransformerConfigurationException; 导入javax.xml.transform.TransformerException; 导入javax.xml.transform.TransformerFactory; 导入javax.xml.transform.dom.DOMSource; 导入javax.xml.transform.stream.StreamResult; 导入org.w3c.dom.Document; 导入org.xml.sax.SAXException; 导入com.sap.aii.mapping.api.AbstractTrace; 导入com.sap.aii.mapping.api.AbstractTransformation; 导入com.sap.aii.mapping.api.MappingTrace; 导入com.sap.aii.mapping.api.StreamTransformationConstants; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutput; 导入com.sap.aii.security.lib.KeyStoreManager; 导入com.sap.security.api.ssf.ISsfData; 导入com.sap.security.api.ssf.ISsfProfile; 导入com.sap.security.core.server.ssf.SsfDataPKCS7; 导入com.sap.security.core.server.ssf.SsfInvalidKeyException; 导入com.sap.security.core.server.ssf.SsfProfileKeyStore; 导入com.sap.aii.af.service.resource.SAPSecurityResources; 公共类XadesSignature扩展了AbstractTransformation {@SuppressWarnings(" deprecation")public void transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)throws StreamTransformationException {try {InputStream inputstream = TransformationInput.getInputPayload()。getInputStream(); OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream(); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 文档doc = dBuilder.parse(inputstream); byte [] b =新的byte [inputstream.available()]; inputstream.read(b); ISsfData数据=新的SsfDataPKCS7(inputstream); getTrace()。addInfo(" ISsfdata对象已创建"); KeyStoreManager manager = null; manager = com.sap.aii.af.service.resource.SAPSecurityResources.getInstance()。getKeyStoreManager(com.sap.aii.security.lib.PermissionMode.SYSTEM_LEVEL); KeyStore keyStore = manager.getKeyStore(" ESigning_API_SSL");

SsfProfileKeyStore配置文件=新的SsfProfileKeyStore(keyStore," ESigning_API_SSL",null); //getTrace()。addInfo(profile.getCertificate()。getSignature()。toString()); //profile = manager.getISsfProfile(keyStore," ESigning_API_SSL",null); getTrace()。addInfo(profile.toString()); data.sign(profile); ByteArrayOutputStream baos = new ByteArrayOutputStream(); data.writeTo(baos); 字符串signedString =新字符串(baos.toByteArray()); doc.getElementsByTagName(" TrustB2BMessage")。item(0).setTextContent(signedString); doc.getDocumentElement()。normalize(); TransformerFactory TransformerFactory = TransformerFactory.newInstance(); 变压器变压器= transformerFactory.newTransformer(); DOMSource source =新的DOMSource(doc); StreamResult结果=新的StreamResult(outputstream); Transformer.setOutputProperty(OutputKeys.INDENT,"是"); Transformer.transform(来源,结果); } catch(KeyStoreException | SsfInvalidKeyException | IOException | ParserConfigurationException | SAXException | TransformerException ex){ex.printStackTrace(); } getTrace()。addInfo("程序结束"); }

5条回答
绿领巾童鞋
2020-09-06 01:55

你好,

您要使用自定义代码进行邮件签名而不使用标准邮件签名功能的任何特定原因吗?

一周热门 更多>