Generacion de Sello Digital paso a paso

Es tan comun este tema que he decidido abrir un foro especial para este caso. Se trata de programadores que tienen problemas para crear el Sello Digital y que no pasan la validacion
vivi
Mensajes: 2
Registrado: Jue Dic 02, 2010 12:53 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor vivi » Jue Dic 02, 2010 1:53 pm

hola, soy totalmente novata en esto de las facturas electronicas, mira yo estoy trabajando en java (netbeans) y bueno, ya puedo obtener mi md5, lo he comprobado con muchas cadenas y todo bien. Ahora el problema es que no se que librerias usar en java y no encuentro información para realizar el paso 6 que ya es hacer el sello. He leido que seria bueno usar la libreria "bouncyCastle" he notado que tu la llamas boundycastle, es lo mismo? y he buscado informacion sobre como usar la libreria pero no he tenido exito en lo que deseo. Espero me puedas recomendar algun lugar... saludos ;)

Avatar de Usuario
DADO
Mensajes: 14445
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor DADO » Jue Dic 02, 2010 1:58 pm

vivi escribió:hola, soy totalmente novata en esto de las facturas electronicas, mira yo estoy trabajando en java (netbeans) y bueno, ya puedo obtener mi md5, lo he comprobado con muchas cadenas y todo bien. Ahora el problema es que no se que librerias usar en java y no encuentro información para realizar el paso 6 que ya es hacer el sello. He leido que seria bueno usar la libreria "bouncyCastle" he notado que tu la llamas boundycastle, es lo mismo? y he buscado informacion sobre como usar la libreria pero no he tenido exito en lo que deseo. Espero me puedas recomendar algun lugar... saludos ;)


Ups, error de dedo, boundycastle = bouncycastle, es lo mismo.

Siento no poder ayudarte, no conozco ni Java ni la libreria bouncy castle, por lugares para recomendar.....deja le pregunto al maestro google y si encuentro algo te aviso.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

Avatar de Usuario
ironman
Mensajes: 69
Registrado: Jue Nov 25, 2010 1:33 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor ironman » Jue Dic 02, 2010 5:34 pm

Vivi, yo programo en Java y no habia leido/escuchado de esa libreria. Prometo echarme un clavado y te comento al respecto. Saludos

Avatar de Usuario
ironman
Mensajes: 69
Registrado: Jue Nov 25, 2010 1:33 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor ironman » Mar Dic 07, 2010 10:09 am

Como dato técnico, el applet del SAT para validar CFD utiliza la libreria de BouncyCastle...

gopac
Mensajes: 3
Registrado: Jue Nov 11, 2010 4:45 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor gopac » Mié Dic 08, 2010 6:50 pm

En el paso 0 tienes un XML y un certificado, pero este certificado no es de este XML, a mi entender es netamente ilustrativo?
ya que si lo validas con SAT upss; el certificado es terminación 0800 y en el XML es terminación 2517

Avatar de Usuario
DADO
Mensajes: 14445
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor DADO » Jue Dic 09, 2010 10:10 am

gopac escribió:En el paso 0 tienes un XML y un certificado, pero este certificado no es de este XML, a mi entender es netamente ilustrativo?
ya que si lo validas con SAT upss; el certificado es terminación 0800 y en el XML es terminación 2517


Si tienes razon, el XML define un noCertificado distinto al certificado *.cer

Hay que corregir el atributo noCertificado.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

jblancas
Mensajes: 3
Registrado: Mar Dic 07, 2010 1:50 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor jblancas » Jue Dic 09, 2010 1:47 pm

Hola dado,

El día lunes hice una pregunta respecto a la FIRMA ELECTRÓNICA de documentos y amablemente me recomendaste algunos links para responder mis dudas, es por eso que ahora respondo en esta entrada...

Segui todos los pasos que recomendaste en esta entrada para generar el sello digital, solo que lo aplique a mi necesidad en particular que es la firma electrónica de documentos, te comento como lo hice:

1.- Descargue la cadena que usas en el ejemplo, el que ya esta libre de espacios, y los certificados.

||2.0|ABC|1234|2010-01-01T12:12:12|12345|2010|ingreso|Pago en una sola exhibicion|68.50|79.46|UCP090807ABC|UAMERO & Compañia SA de CV|Cuba|456|Col. Latinoamerica|Oaxaca|Oaxaca|Oaxaca|México|93736|MMC090909QWE|Mi Mejor Cliente SA de CV|Calle 5 de Mayo|345|Col. Bondojito|Guadalajara|Guadalajara|Guadalajara|México|48473|1|Pieza|Lapiz Berol del No. 2|2.50|2.50|12|Pieza|Borrador Saga|5.00|60.00|3|Pieza|Pluma Bic Negra|2.00|6.00|IVA|16.00|10.96|10.96||

2.- Codifico a UTF-8

3.- De la cadena resultante del paso 2 obtengo el hash correspondiente con SHA-1, y obtengo este resultado:
AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4
4.- Hasta aquí todo concuerda con tu ejemplo, pero al firmar con el archivo aaa010101aaa_csd_01.key obtengo este resultado:

HHSgXwj7B8NbH49lCNMYZv5QFJc5i4INjODJvcIQ5j/6UM0L734TIgbDZUYXp9ovEUzUOxTlwYep6vxlV0LtHwER8ROY7RlcDDKvkYRGXcF
hrIWJg5fP+BN4GOFL2S3n8rfhhhGH3+8gMxLdMKVftmgs2/E/ErQb9KHdAJsYW5U=

Es aquí donde entro en panico... pues estaba tan cerca de lograrlo... en fin, después estuve haciendo diferentes hipótesis:

a) En realidad el Hash que tu obtienes y el que yio obtengo no es exactamente igual, debido a que uno esta en mayúsculas y otro en minúsculas...
ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 <> AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

así que pruebo firmando la cadena en minusculas: ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 y el resultado de mi firma es este:

M71dYS89XWSrLRMUBucHg8krkqaQ7O1t561P4tk+9dVIaUic2q60qzOpfMWaeDXp+tcSxSO5qZsSsBFGCa06K6AgFicJae/Y3zJvjf0X6m/C4kz
9hxPkk3ppQ5hncKnVbRd8TIgUlVM2xIaS9zvabB4AlMWLoGSE9zpnoDCWXGY=

nuevamente no coincide con el que muestras... así que formula otra hipótesis.

b) Debe tener algo que ver el little-endian byte ordering que es el que yo estaba usando, pero quiza ustedes lo hacen con el big-endian, así que modifico mi código y firmo nuevamente, pero obtengo este otro sello:

ZlyWMKBnOveEZKCLxZQAHmzaO/eShsQ2U5UUiEx8F23VqXBnmENpepPkE4f9TOLCb+oX/Y1vMt/Y72kJJxYgoCs6rQlGEbASm6m5I8US1/rpNXiaxXy
pM6u0rtqcSGlI1fU+2eJPredt7eyQppIryYMH5wYUEy2rZF09L2FdvTM=

Así que quedo demostrado que mis hipotesis no eran correctas, así que ahora quedo nuevamente con la duda... ¿cómo se que mi sello es valido?

Personalmente estoy utilizando esta dll Chilkat.dll, http://www.example-code.com/csharp/rsa_sign_key_cer.asp y aquí existe un método para verificar la firma con la llave publica, *.cer , y la validación me dice que todo anda bien....

¿si una aplicación externa lo desea validar... que resultado le arrojara?

pues me parece que ya estoy cerca de concluir el asunto, debe haber alguna falla minima, pero en el foro pude aclarar muchas dudas que tenia al respecto...

Espero tus comentarios y el de los demas visitantes del foro, seguro en su experiencia, esto ya lo burlaron desde hace mucho...

Saludos y que tengan buen día :)


Resumen de los sellos obtenidos:

[b]cadena[/b]: ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4

Little endian: M71dYS89XWSrLRMUBucHg8krkqaQ7O1t561P4tk+9dVIaUic2q60qzOpfMWaeDXp+tcSxSO5qZsSsBFGCa06K6AgFicJae/Y3zJvjf0X6m/
C4kz9hxPkk3ppQ5hncKnVbRd8TIgUlVM2xIaS9zvabB4AlMWLoGSE9zpnoDCWXGY=
Big endian: ZlyWMKBnOveEZKCLxZQAHmzaO/eShsQ2U5UUiEx8F23VqXBnmENpepPkE4f9TOLCb+oX/Y1vMt/Y72kJJxYgoCs6rQlGEbASm6m5I8US1/rpNXiaxXypM6u0rtqcS
GlI1fU+2eJPredt7eyQppIryYMH5wYUEy2rZF09L2FdvTM=

cadena: AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

Big endian: lVsYmwDdofQbtBI/8dssaLZfpTDdEjMg79+HEYbht/LnLdlL4Rh4E/jPl4OJhaxhwV1GhJGvMgxcGe2YE/ERAR/tQldl/Oqph8HlFDvUTBEv2qcXRmXDBiITfu8LzVD6
P+YQwr3J4IwNgos5lxRQ/mYY0whljx9bwwf7CF+gdBw=
Little endian: HHSgXwj7B8NbH49lCNMYZv5QFJc5i4INjODJvcIQ5j/6UM0L734TIgbDZUYXp9ovEUzUOxTlwYep6vxlV0LtHwER8ROY7RlcDDKvkYRGXcFhrIWJg5fP+BN4GOF
L2S3n8rfhhhGH3+8gMxLdMKVftmgs2/E/ErQb9KHdAJsYW5U=


Esteban

Avatar de Usuario
DADO
Mensajes: 14445
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor DADO » Jue Dic 09, 2010 2:10 pm

Primero, aclarar varios conceptos.

El hash MD5 arroja una cadena de NUMEROS HEXADECIMALES, asi que tenemos la igualdad siguiente :

ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 = AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

A partir de aqui entonces debes revisar la libreria para el sellado ya que no deberia arrojar dos sellos distintos.

De wikipedia :

La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal. El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su correspondiente hash de salida:

MD5("Esto sí es una prueba de MD5") = e99008846853ff3b725c27315e469fbc


Para validar "de forma externa" debes seguir la liga que te decia aqui

Otro dato MUY IMPORTANTE, es posible que ESTES GENERANDO BIEN EL SELLO, NECESITAS VALIDARLO para saber si estas bien o no, en este hilo menciono que es posible TENER DOS SELLOS TOTALMENTE DISTINTO PERO VALIDOS
y ahi muestro un ejemplo de que esto es posible.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

condor0086
Mensajes: 425
Registrado: Jue Ago 05, 2010 4:11 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor condor0086 » Vie Dic 10, 2010 1:21 am

dado escribió:
El hash MD5 arroja una cadena de NUMEROS HEXADECIMALES, asi que tenemos la igualdad siguiente :

ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 = AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4


jblancas,

¿No será tu problema que firmas el STRING "ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4" en vez de la cadena que está representando en su notación hexadecimal?

Comentario al aire, no analicé a fondo todo tu post....

Saludos

mroblesp
Mensajes: 1
Registrado: Jue Dic 16, 2010 3:55 am

Re: Generacion de Sello Digital paso a paso

Mensajepor mroblesp » Jue Dic 16, 2010 3:58 am

Que buena guía. Yo utilizo Progress y me sirvió muchisimo.
Gracias


Volver a “SELLO DIGITAL INVALIDO”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados