
Firma electronica xml con Xades-EPES
Publicado por Juan José (2 intervenciones) el 31/08/2017 18:38:30
Cordial saludo,
Estoy tratando de firmar un documento xml usando la especificación Xades-EPES. He buscado en internet y he encontrado que se puede usar la librería Xades4j pero no estoy seguro de como emplearla y sus archivos tes unit no son comprensibles para mi. He buscado bastante pero no he encontrado un ejemplo comprensible para firmar un xml usando esta librería.
Si alguien tiene experiencia en firma de documentos xml con esta especificación agradecería su ayuda.
P.D
Esto es algo que intenté hacer siguiendo la documentación https://github.com/luisgoncalves/xades4j/wiki/SignatureProduction:
pero esto genera un error que no sé a que se debe.
[Exception in thread "main" java.lang.NoClassDefFoundError: xades4j/providers/impl/FirstCertificateSelector
at Signer.Main.signBes(Main.java:91)
at Signer.Main.main(Main.java:70)
Caused by: java.lang.ClassNotFoundException: xades4j.providers.impl.FirstCertificateSelector
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Estoy tratando de firmar un documento xml usando la especificación Xades-EPES. He buscado en internet y he encontrado que se puede usar la librería Xades4j pero no estoy seguro de como emplearla y sus archivos tes unit no son comprensibles para mi. He buscado bastante pero no he encontrado un ejemplo comprensible para firmar un xml usando esta librería.
Si alguien tiene experiencia en firma de documentos xml con esta especificación agradecería su ayuda.
P.D
Esto es algo que intenté hacer siguiendo la documentación https://github.com/luisgoncalves/xades4j/wiki/SignatureProduction:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class Main {
private static final String CERT_FOLDER = "/home/jperez/Documentos/factura_electronica";
private static final String CERT = "cert.pm";
private static final String KEY_STORE = "KeyStore";
private static final String PASS = "summan"; //the same in cert and keystorage
private static final String TSA_URL = "http://XXX.XXX.XXX/ts.inx";
private static final String TSA_USER = "XXXXXXXX";
private static final String TSA_PASS = "XXXXXXXX";
private static final String UNSIGNED = "/home/jperez/Documentos/factura_electronica/unsigned.xml";
private static final String SIGNED = "/home/jperez/Documentos/factura_electronica/signed-epes.xml";
private static final String SIGNEDT = "/home/jperez/Documentos/factura_electronica/signed-t-epess.xml";
private static final String VERIFY = "/home/jperez/Documentos/factura_electronica/verify-epess.txt";
private static final String VERIFYT = "/home/jperez/Documentos/factura_electronica/verify-t-epes.txt";
private static final String DOCUMENT = "/home/jperez/Documentos/valid0.xml";
private static final String DOCSIGNED = "/home/jperez/Documentos/factura_electronica/signed.epes.xml";
public static void main(String[] args) throws Exception {
System.out.println("______________________");
System.out.println("\tSign");
System.out.println("______________________");
signBes();
System.out.println("______________________");
System.out.println("\tVerify");
System.out.println("______________________");
verifyBes();
}
private static void signBes() throws Exception {
Document doc = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new File(DOCUMENT));
Element elem = doc.getDocumentElement();
DOMHelper.useIdAsXmlId(elem);
KeyingDataProvider kdp = new FileSystemKeyStoreKeyingDataProvider(
"JKS",
CERT_FOLDER + CERT,
new FirstCertificateSelector(),
new DirectPasswordProvider(PASS),
new DirectPasswordProvider(PASS),
true);
DataObjectDesc obj = new DataObjectReference("#" + elem.getAttribute("Id"))
.withTransform(new EnvelopedSignatureTransform());
SignedDataObjects dataObjs = new SignedDataObjects().withSignedDataObject(obj);
XadesSigner signer = new XadesBesSigningProfile(kdp).newSigner();
signer.sign(dataObjs, elem);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(SIGNED));
transformer.transform(source, result);
}
pero esto genera un error que no sé a que se debe.
[Exception in thread "main" java.lang.NoClassDefFoundError: xades4j/providers/impl/FirstCertificateSelector
at Signer.Main.signBes(Main.java:91)
at Signer.Main.main(Main.java:70)
Caused by: java.lang.ClassNotFoundException: xades4j.providers.impl.FirstCertificateSelector
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Valora esta pregunta


0