0
xades4j을 사용해 보려하지만 설명서는 약간 일반화되었습니다. 기본 서명 방법이 있지만 필요한 xml 태그를 얻지 못하고 있습니다.Java에서 XADES-EPES를 사용하여 XML Sign에 대한 좋은 예가 있습니까?
KeyStore ks = KeyStore.getInstance(KEYSTORE_TYPE);
ks.load(new FileInputStream(KEYSTORE_FILE), KEYSTORE_PASSWORD.toCharArray());
PrivateKey privateKey = (PrivateKey) ks.getKey(PRIVATE_KEY_ALIAS, PRIVATE_KEY_PASSWORD.toCharArray());
File signatureFile = new File("./invoice.xml");
String baseURI = signatureFile.toURL().toString(); // BaseURI para las URL Relativas.
// Instanciamos un objeto XMLSignature desde el Document. El algoritmo de firma será DSA
// Signature - Required DSAwithSHA1 (DSS)
XMLSignature xmlSignature = new XMLSignature(document, baseURI, XMLSignature.ALGO_ID_SIGNATURE_DSA);
// Añadimos el nodo de la firma a la raiz antes de firmar.
// Observe que ambos elementos pueden ser mezclados en una forma con referencias separadas
document.getDocumentElement().appendChild(xmlSignature.getElement());
// Creamos el objeto que mapea: Document/Reference
Transforms transforms = new Transforms(document);
transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE); // TRANSFORM_ENVELOPED_SIGNATURE
// Añadimos lo anterior Documento/Referencia
// ALGO_ID_DIGEST_SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1";
xmlSignature.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
// Añadimos el KeyInfo del certificado cuya clave privada usamos
X509Certificate cert = (X509Certificate) ks.getCertificate(PRIVATE_KEY_ALIAS);
xmlSignature.addKeyInfo(cert);
xmlSignature.addKeyInfo(cert.getPublicKey());
// Realizamos la firma
xmlSignature.sign(privateKey);
는 xades4j에 대한 기본 라이브러리 아파치 투아 리오를 사용하는 것 같다. 위에 공유 된 링크와 https://github.com/luisgoncalves/xades4j/wiki를 시작해야합니다. – lgoncalves