Comments (6)
From bigdata.mx on November 08, 2010 22:34:13
Lo más probable es que la llave utilizada para firmar el Comprobante no corresponda con el certificado utilizado para verificarlo.
Puedes agregar la linea de comando que estás utilizando?
Estas utilizando las llaves del programa de ejemplo?
Puedes pegar el stacktrace también?
from factura-electronica.
From [email protected] on November 09, 2010 00:10:10
Hola, el certificado y la llave son propios. estoy 100% seguro que son correspondientes ya que yo mismo los bajé en su momento del site del SAT.
- En cuanto al programa de ejemplo, no estoy utilizando las llaves del programa ya que no pude bajarlas de la pagina debido a que no me da la opcion de download...
Te muestro lo que hice con el programa de ejemplo para adaptarlo a mis archivos:
package facelectronica;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import mx.bigdata.cfdi.CFDv3;
import mx.bigdata.cfdi.TFDv1;
import mx.bigdata.cfdi.schema.ObjectFactory;
import mx.bigdata.cfdi.schema.Comprobante;
import mx.bigdata.cfdi.schema.Comprobante.Conceptos;
import mx.bigdata.cfdi.schema.Comprobante.Conceptos.Concepto;
import mx.bigdata.cfdi.schema.Comprobante.Emisor;
import mx.bigdata.cfdi.schema.Comprobante.Impuestos;
import mx.bigdata.cfdi.schema.Comprobante.Impuestos.Traslados;
import mx.bigdata.cfdi.schema.Comprobante.Impuestos.Traslados.Traslado;
import mx.bigdata.cfdi.schema.Comprobante.Receptor;
import mx.bigdata.cfdi.schema.TUbicacionFiscal;
import mx.bigdata.cfdi.schema.TUbicacion;
import mx.bigdata.cfdi.security.KeyLoader;
public final class Main {
public static void main(String[] args) throws Exception {
args = new String[5];
args[1] = "C:\temp\IISH740120P21_1002180844.key";
args[2] = "hipi2001";
args[3] = "C:\temp\00001000000101202567.cer";
CFDv3 cfd = new CFDv3(createComprobante());
cfd.validate();
PrivateKey key = KeyLoader.loadPKCS8PrivateKey(new FileInputStream(args[1]),
args[2]);
Certificate cert = KeyLoader
.loadX509Certificate(new FileInputStream(args[3]));
cfd.sign(key, cert);
cfd.verify();
cfd.marshal(System.err);
/*
TFDv1 tfd = new TFDv1(cfd);
PrivateKey ckey = KeyLoader
.loadPKCS8PrivateKey(new FileInputStream(args[4]), args[2]);
int code = tfd.stamp(ckey);
Certificate ccert = KeyLoader
.loadX509Certificate(new FileInputStream(args[5]));
code = tfd.verify(ccert);
tfd.marshal(System.err);
*/
}
Y el log del error es:
Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13_..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13_..)
at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DashoA13_..)
at javax.crypto.Cipher.doFinal(DashoA13_..)
at org.apache.commons.ssl.PKCS8Key.decrypt(PKCS8Key.java:483)
at org.apache.commons.ssl.PKCS8Key.decryptPKCS8(PKCS8Key.java:851)
at org.apache.commons.ssl.PKCS8Key.(PKCS8Key.java:275)
at org.apache.commons.ssl.PKCS8Key.(PKCS8Key.java:123)
at mx.bigdata.cfdi.security.KeyLoader.getBytes(KeyLoader.java:61)
at mx.bigdata.cfdi.security.KeyLoader.loadPKCS8PrivateKey(KeyLoader.java:36)
at facelectronica.Main.main(Main.java:41)
Java Result: 1
... donde la linea 41 es:
PrivateKey key = KeyLoader.loadPKCS8PrivateKey(new FileInputStream(args[1]), args[2]);
Gracias de antemano,
HIS
from factura-electronica.
From bigdata.mx on November 09, 2010 00:20:26
Ok, el problema es al desencriptar la llave privada.
¿El password de tu llave es el correcto? Es decir, ¿Puedes ver el contenido de la llave con ese password, utilizando una herramienta como openssl?
Por favor avisame,
from factura-electronica.
From [email protected] on November 09, 2010 01:59:55
Hola,
Tenías razon, el problema era la clave... ya pude generar el CFD completo con otro par de archivos key y cer...
Ahora solo me queda el tema del timbrado:
TFDv1 tfd = new TFDv1(cfd);
PrivateKey ckey = KeyLoader
.loadPKCS8PrivateKey(new FileInputStream(args[4]), args[2]);
int code = tfd.stamp(ckey);
Certificate ccert = KeyLoader
.loadX509Certificate(new FileInputStream(args[5]));
code = tfd.verify(ccert);
tfd.marshal(System.err);
aqui no entiendo muy bien que datos ocupa ??
PD.- Estas tu en mexico ?? hay manera de contactarte por correo o telefono ??
Gracias,
HIS
from factura-electronica.
From bigdata.mx on November 09, 2010 02:40:42
El TFDv1 utiliza los datos del certificado ya sellado para generar el timbrado, este paso no es necesario para el usuario del CFD, solo es para que es las PAC timbren los comprobantes
Para el próximo release voy a agregar mejores mensajes de error, que hagan más fácil utilizar las librerías.
from factura-electronica.
From bigdata.mx on November 26, 2010 18:39:15
Entérate de las mejoras y actualizaciones a las librerías a través de nuestra cuenta de twitter http://www.twitter.com/bigdata_mx
from factura-electronica.
Related Issues (20)
- CFDv33.sellar: NoSuchMethodError: org.apache.commons.codec.binary.Base64 HOT 7
- Error al Generar CFDI con complemento de Pagos v3.3 HOT 22
- CFDI33101 El campo Fecha no cumple con el patrón requerido. HOT 1
- CFDI v33 jar HOT 1
- Error al tratar de compilar el proyecto me podrian ayudar? HOT 1
- Error al intentar leer la llave HOT 1
- ejemplo implementacion cdfiv33
- Unsupported major.minor version 52.0 HOT 5
- Exception in thread "Thread-6" Exception in thread "main" Exception in thread "Thread-5"
- Exception in thread "Thread-6" java.lang.OutOfMemoryError: PermGen space
- Como agrego SchemaLocation a Detallista? HOT 5
- Problemas con complemento detallista
- Actualizar versión en el repositorio central de maven HOT 5
- Error al compilar cfdi-base-0.3.0 HOT 4
- Agregar complemento Dividendos HOT 1
- Complemento de Pago HOT 2
- Recuperar complemento de Pagos HOT 1
- Error al validar el complemento de pago Publico En General forma de pago distinta de efectivo HOT 3
- Error al crear xml de complemento de pago HOT 6
- Complemento de Pago error XML mal formado: cvc-complex-type.2.4.c HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from factura-electronica.