Giter Site home page Giter Site logo

Comments (6)

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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.

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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.

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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.

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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.

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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.

elmer-garduno avatar elmer-garduno commented on July 17, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.