Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. String xml_entrada = "D:\CeslySoft\Ivap_facturador\CPE\FirmaXML\Schema-20480510144-RC-20170327-0001.xml";
  2. String xml_salida = "D:\CeslySoft\Ivap_facturador\CPE\FirmaXML\20480510144-RC-20170327-0001.xml";
  3. String certi_digital = "D:\CeslySoft\Ivap_facturador\Certificados\molchiclayo1.jks";
  4. String clave = "9ghi0nmbR0ft";
  5. String alias = "1";
  6. String tipodoc = "09";
  7.  
  8. int indice = (tipodoc.equals("09")? 0: 1);
  9. XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
  10. Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.SHA1,null),
  11. Collections.singletonList(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)),
  12. null,null);
  13. SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,
  14. (C14NMethodParameterSpec) null),
  15. fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
  16. Collections.singletonList(ref));
  17.  
  18. KeyStore ks = KeyStore.getInstance("JKS");
  19. ks.load(new FileInputStream(certi_digital), clave.toCharArray());
  20. KeyStore.PrivateKeyEntry keyEntry
  21. = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(clave.toCharArray()));
  22.  
  23. X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
  24.  
  25. KeyInfoFactory kif = fac.getKeyInfoFactory();
  26. List<Object> x509content = new ArrayList<>();
  27. x509content.add(cert.getSubjectX500Principal().getName());
  28. x509content.add(cert);
  29. X509Data xd = kif.newX509Data(x509content);
  30. KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
  31.  
  32. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  33. dbf.setNamespaceAware(true);
  34. //Document doc = dbf.newDocumentBuilder().parse(new FileInputStream(xml_entrada));
  35. InputSource is = new InputSource(new InputStreamReader(new FileInputStream(xml_entrada), "ISO-8859-1"));
  36. Document doc = dbf.newDocumentBuilder().parse(is);
  37.  
  38. Node nodePadre = doc.getElementsByTagName("ext:ExtensionContent").item(indice);
  39. nodePadre.getNodeValue();
  40. DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), nodePadre);
  41.  
  42. XMLSignature signature = fac.newXMLSignature(si, ki, null, "SignatureSP", null);
  43. signature.sign(dsc);
  44.  
  45. OutputStream os = new FileOutputStream(xml_salida);
  46. TransformerFactory tf = TransformerFactory.newInstance();
  47. Transformer trans = tf.newTransformer();
  48. trans.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
  49.  
  50. trans.transform(new DOMSource(doc), new StreamResult(os));
  51.  
  52. signature.sign(dsc)
  53.  
  54. javax.xml.crypto.XMLSignatureException: java.security.InvalidKeyException: Invalid RSA private key
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement