Actualización liberada para firmar con los certificados electrónicos de todas las entidades emisoras del Ecuador, son las siguientes:
- ANFAC Autoridad de Certificación Ecuador C.A.
- Banco Central del Ecuador
- Consejo de la Judicatura
- Datilmedia S.A.
- Eclipsoft
- Security Data Seguridad En Datos Y Firma Digital S.A.
- Uanataca Ecuador S.A.
En teoría debe funcionar con los certificados de todas la entidades, en producción aún no hemos tenido la oportunidad de firmar un comprobante electrónico con los certificados de las siguientes entidades:
- Datilmedia S.A.
- Eclipsoft
El enlace para el código fuente está a continuación, en el encontraran un método Main donde se muestra los parámetros según su certificado.
https://gitlab.com/allku/QuijoteLuiFirmador
Vuelvo a compartir el vídeo donde se muestra el proceso, actualmente está desactualizado, pero seguro que pueden entenderlo.
Si logran firmar con los certificados aún no probados, comentan por favor. Con el tiempo empezaremos a probar todos los certificados y los quitaremos de la lista.
Muy bueno. Gran trabajo. Probado con firma de Uanataca y Consejo de la Judicatura.
Gracias por comentar
Gracias por estar siempre actualizando este proyecto. Estoy intentando con una firma de Security Data, pero no funciona, me sale el siguiente error:
«`
QuijoteLui Firmador
Archivo Firma P12: /Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets/oscar.p12
Exception in thread «main» java.lang.NullPointerException: Cannot invoke «String.toLowerCase(java.util.Locale)» because «alias» is null
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineGetCertificate(PKCS12KeyStore.java:508)
at java.base/sun.security.util.KeyStoreDelegator.engineGetCertificate(KeyStoreDelegator.java:101)
at java.base/java.security.KeyStore.getCertificate(KeyStore.java:1135)
at com.quijotelui.firmador.GenericXMLSignature.execute(GenericXMLSignature.java:140)
at com.quijotelui.firmador.XAdESBESSignature.sign(XAdESBESSignature.java:78)
at com.quijotelui.firmador.Main.main(Main.java:43)
«`
Este es el codigo que le tengo en el Main.java
«`
public static void main(String[] args) {
System.out.println(«QuijoteLui Firmador»);
XAdESBESSignature xadesBesFirma = new XAdESBESSignature();
File archivo = new File(«/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets/»
+ «factura-1.xml»);
String urlOutArchivo = «/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets»;
String PKCS12_RESOURCE = «/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets»;
String PKCS12_PASSWORD;
String nombreP12 = «oscar.p12»;
PKCS12_RESOURCE = PKCS12_RESOURCE + File.separatorChar + nombreP12;
System.out.println(«Archivo Firma P12: » + PKCS12_RESOURCE);
PKCS12_PASSWORD = «*******»;
/*
* Para firmar con un certificado emitido por Security Data
*/
xadesBesFirma.sign(archivo,
urlOutArchivo,
PKCS12_RESOURCE,
PKCS12_PASSWORD,
TokensAvailables.SD_EPASS3000);
/*
* Para firmar con un certificado emitido por el BCE
*/
// xadesBesFirma.sign(archivo,
// urlOutArchivo,
// PKCS12_RESOURCE,
// PKCS12_PASSWORD,
// TokensAvailables.BCE_IKEY2032);
/*
* Para firmar con un certificado emitido por el Consejo de la Judicatura
*/
// xadesBesFirma.sign(archivo,
// urlOutArchivo,
// PKCS12_RESOURCE,
// PKCS12_PASSWORD,
// TokensAvailables.KEY4_CONSEJO_JUDICATURA);
«`
Algun tipo de sugerencia para solucionar este error, estaría muy agradecido. 🙏🙏🙏
Hola Oscar. Prueba con el JDK 8 de Oracle
No pude resolver este error, alguna sugerencia gracias
Seguir intentando. Saludos
Saludos coridales, gracias por compartir el proyecto lo utilizo con Security Data, Consejo de la Judicatura y funciona muy bien.
Consulta, ¿quizá se puede actualizar el código a un JDK más actual?
Saludos cordiales, estoy pendando migrar a jdk 17 y probar con XAdES4j, también ya me es necesario
Estaré pendiente de la actualización, muchas gracias.
https://mestizos.dev/firmar-archivos-xml-con-el-algoritmo-xades-bes/
Muy amable por publicar una nueva versión.
Te envié un mail a este correo: friend@mestizos.dev, espero lo puedas revisar.
Estimados amigos, por favor su ayuda, en ambiente de PRUEBAS desde hace unos dias tengo un error en esta linea:
response = port.validarComprobante(ArchivoUtils.archivoToByte(xmlFile));
en el metodo public RespuestaSolicitud enviarComprobante(File xmlFile), del proyecto QuijoteLuiClient, adjunto capture:
https://ibb.co/XX4Lqtt
Te comento que algunos servicios del SRI han estado fallando.
Hola jorgeluis, te comento que el dia de hoy ya funciona el ambiente de pruebas.
Hola que puede ser este error
Exception in thread «main» java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at es.mityc.javasign.pkstore.keystore.KeyTool.(KeyTool.java:46)
at es.mityc.javasign.pkstore.keystore.KSStore.(KSStore.java:42)
at com.quijotelui.firmador.GenericXMLSignature.execute(GenericXMLSignature.java:128)
at com.quijotelui.firmador.XAdESBESSignature.sign(XAdESBESSignature.java:78)
at com.quijotelui.firmador.Main.main(Main.java:91)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 5 more
Hola. Puede ser que te falte la libreria:
commons-logging:commons-logging:1.1.3