Codigo Fuente en Delphi para validar el sello

Para los que programamos en Delphi, aqui estan las respuestas
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
agallardor13
Mensajes: 60
Registrado: Mié Oct 13, 2010 10:28 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor agallardor13 » Dom Dic 12, 2010 3:03 pm

Ok, ya estoy trabajando en hacerlo con .net, peroooo

Todo iba muy bien hasta que llegue a la parte de ejecutar el bat. Tengo el mismo problema que el otro compañero, ejecuto el bat y simplemente no hace nada cuando lo ejecuto desde el programa. Extrañamente si doy doble click al bat se ejecuta todo correcto.

Ya un poco desesperado, me fui a hacer una prueba más básica. Di doble click a openssl.exe e intenté ejecutar linea por linea las instrucciones del bat para ver si tenía algun error, y o sorpresa, si me marca error.

Escribo: x509 -in ".\cert.txt" -pubkey -noout >.\pubkey.txt

y me marca: unknown option >.\pubkey

ya en otras ocasiones había ejecutado comandos del openssl desde mi programa y veo que siempre utilizaba el -out

por lo que intenté ejecutar lo siguiente:
x509 -in ".\cert.txt" -pubkey -noout -out .\pubkey.txt

Lo que provoca que se muestre la llave privada en pantalla pero no me crea el archivo pubkey.txt

Alguno de ustedes sabe que está pasando o por que estos comandos del bat no funcionan cuando lo intento directamente con el openssl?

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor Dado » Dom Dic 12, 2010 7:59 pm

agallardor13 escribió:Ok, ya estoy trabajando en hacerlo con .net, peroooo

Todo iba muy bien hasta que llegue a la parte de ejecutar el bat. Tengo el mismo problema que el otro compañero, ejecuto el bat y simplemente no hace nada cuando lo ejecuto desde el programa. Extrañamente si doy doble click al bat se ejecuta todo correcto.

Ya un poco desesperado, me fui a hacer una prueba más básica. Di doble click a openssl.exe e intenté ejecutar linea por linea las instrucciones del bat para ver si tenía algun error, y o sorpresa, si me marca error.

Escribo: x509 -in ".\cert.txt" -pubkey -noout >.\pubkey.txt

y me marca: unknown option >.\pubkey

ya en otras ocasiones había ejecutado comandos del openssl desde mi programa y veo que siempre utilizaba el -out

por lo que intenté ejecutar lo siguiente:
x509 -in ".\cert.txt" -pubkey -noout -out .\pubkey.txt

Lo que provoca que se muestre la llave privada en pantalla pero no me crea el archivo pubkey.txt

Alguno de ustedes sabe que está pasando o por que estos comandos del bat no funcionan cuando lo intento directamente con el openssl?


Veamos por partes.

Cuando usas "openssl x509 -in ".\cert.txt" -pubkey -noout >.\pubkey.txt" SOLO FUNCIONA EN MSDOS MEDIANTE UN *.bat, mmmh no se si sea pertinente explicar estos dinosaurios (MSDOS) pero bueno en aquellos tiempos el caracter ">" es una instruccion que le indica a MSDOS que el resultado lo "exporte" a un archivo, en este caso pubkey.txt

Si usas el OpenSSL.EXE si debes usar la opcion -out

Otro detalle, es MUY IMPORTANTE que definas TOOOODA la ruta completa para TODOS LOS ARCHIVOS ya sean el certificado, el sello etc, fijate bien que el bat esta haciendo referencia a ".\" esto significa "aqui en el mismo directorio" pero si ejecutas el bat desde una ruta distinta no va a funcionar.

Espero haberme explicado, solo trata de recordar como funciona EN MSDOS las rutas absolutas y las relativas (ejemplo de referencia absoluta c:\mis archivos\carpeta ;; ejemplo de relativo .\..\..\carpeta)
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

agallardor13
Mensajes: 60
Registrado: Mié Oct 13, 2010 10:28 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor agallardor13 » Dom Dic 12, 2010 8:50 pm

Si, comprendido en su totalidad, unicamente que no logro hacer que ese bat se ejecute correctamente mandado llamar desde .net, es por eso que queria ver como podía hacerlo mandando llamar el openssl.exe mas los argumentos (ya que así lo había logrado para extraer la llave privada en otra parte de mi programa).

Sabes de casualidad como quedaría ejecutando los parámetros directamente desde la linea de comandos del openssl.exe?
openssl>

Algunas cosas las intenté cambiar con el out y algunos comandos como que no reconocen bien los comandos o creo que la razón es que cambia un poco la forma.
ejemplo:

openssl> x509 -in C:\OpenSSL\bin\cert.txt -pubkey -noout -out C:\OpenSSL\bin\pubkey.txt

Esto lo que me hace es que me muestra en pantalla la llave publica, pero no me está generando el archivo no se por qué.

Como verás mi conocimiento en openssl es muy limitado.

saludos
agallardo

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor Dado » Dom Dic 12, 2010 9:11 pm

agallardor13 escribió:Como verás mi conocimiento en openssl es muy limitado.


No te creas, yo ando igual

Ya probe varias combinaciones y me aparece algo raro, incluso yo diria que es un bug o nos esta faltando saber algo.

Ejecute:

openSSL> x509 -inform DER -in aaa010101aaa_CSD_01.cer -out test.txt -pubkey

Y paso algo raro, en pantalla obtuve la llave publica, tal como lo esperaba, y en el disco se grabo test.txt, todo bien hasta aqui PERO EL CONTENIDO de test.txt era TODO el certificado en base64 y no la llave publica como lo esperaba, ahora tambien ejecute tu propuesta asi :

openssl> x509 -in C:\OpenSSL\bin\cert.txt -pubkey -out C:\OpenSSL\bin\pubkey.txt
(nota que le quite el -noout)

Pero me hizo lo mismo, YA GRABA EL ARCHIVO pero graba TODO el certificado en base64 y no la llave publica como lo esperabamos.

RESUMEN, no tengo idea de que esta pasando, ya graba el archivo pero con otra informacion muy distinta a la que uno espera, yo creo que si vas a tener que irte por la opcion del bat
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

agallardor13
Mensajes: 60
Registrado: Mié Oct 13, 2010 10:28 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor agallardor13 » Dom Dic 12, 2010 9:31 pm

Así es, llevo todo el domingo peleandome con eso.

Leyendo un poco la documentacion del openssl veo que precisamente el parámetros -noout dice que con este parámetro no se guarda el certificado en el archivo resultante o algo así, es por eso que si se lo quitamos siempre nos pone el certificado en el archivo.

Bueno ni modos, tendré que seguirme peleando con el .net para ver por que no ejecuta correctamente el bat.

gracias por el apoyo.

saludos
agallardo

agallardor13
Mensajes: 60
Registrado: Mié Oct 13, 2010 10:28 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor agallardor13 » Lun Dic 13, 2010 2:34 pm

Ok, después de un entretenido fin de semana, ya quedó. Ya ves que esto queda por que queda.

Bueno les comento el errorzazo garrafal que estaba cometiendo para los que apenas lo vayan a hacer ya tenga una referencia y no se la pasen todo el domingo buscando diferentes formas de mandar llamar un bat desde .net y puedan ir al cine o hacer algo más entretenido, jeje.

Bueno encontré cual era el problema desde .net. Cuando mandas llamar un bat, la linea de comando arranca desde el mismo path donde está tu aplicación, es decir en la linea de comandos te va a ponar algo asi:

c:\MaquinaX\Programa\>

Entonces como el bat manda llamar el openssl, si no lo tienen en la misma ruta de tu aplicación, en .net, y creo que en cualquiera, te va a marcar que no reconoce el comando o la aplicacion openssl. Es por eso que me creaba los archivos pero todos en blanco.

Entonces, una solucion es agregar al bat antes de la primer linea el comando para posicionarte en el directorio donde se encuentra el openssl:
cd c:\openssl\bin

o de plano copiar el openssl al mismo directorio de tu aplicacion (esta no me gusta tanto por que luego quedan exes volando por todos lados)

o la ultima, que fue la que yo decidí tomar, es poner en el bat la ruta COMPLETA del ejecutable del openssl en las lineas del bat.

Así es que mi bat quedó asi:
c:\openssl\bin\openssl.exe x509 -in C:\OpenSSL\bin\cert.txt -pubkey -noout >C:\OpenSSL\bin\pubkey.txt
c:\openssl\bin\openssl.exe enc -base64 -d -in C:\OpenSSL\bin\sello.txt >C:\OpenSSL\bin\sellobin.txt
c:\openssl\bin\openssl.exe dgst -md5 -verify C:\OpenSSL\bin\pubkey.txt -signature C:\OpenSSL\bin\sellobin.txt C:\OpenSSL\bin\cadoriginal.txt >C:\OpenSSL\bin\resultado.txt
c:\openssl\bin\openssl.exe dgst -sha1 -verify C:\OpenSSL\bin\pubkey.txt -signature C:\OpenSSL\bin\sellobin.txt C:\OpenSSL\bin\cadoriginal.txt >C:\OpenSSL\bin\resultado_sha1.txt

observen como puse rutas absolutas en todo archivo utilizado en el bat. Igual y exageré pero creo que me aseguro más.

Bueno esto es para los que recurrimos al apoyo del open SSL por que cada cosa la puedes hacer un una sola linea y muy simple, desarfortunadamente para los que no sabemos utilizar bien las clases de System.Security.Cryptography que ya trae el .net para hacer estas cosas. Si alguien sabe como hacerlo sería interesante que compartiera el conocimiento.

Bueno, nos vemos en otros temas, este ya lo podemos palomear :P gracias Dado por el apoyo.

saludos
agallardo

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor Dado » Lun Dic 13, 2010 3:02 pm

Gracias a ti por compartir tus resultados. 8-)
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

ENHESIS
Mensajes: 59
Registrado: Mar Ene 04, 2011 11:03 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor ENHESIS » Lun Ene 10, 2011 9:27 pm

Hola

Buen Dia

Tengo un ligerito problemita Resulta que empeze a validar los XML con el validador de DADO y el primer error fue "Certificado no aparece en la lista"
Pues vi que le faltaban los 4 ceros ala izq y tambien el otro error era que estaba usando la FIel en lugar del CSD(Certificado de Sello Digital)
Y pues hacerle la modificacion resulta que el CSD tienen una S al final pero la KEy segi Tomando la que no tiene s al final
(Alomejor ese es la razon del ultimo error que me marca.... Bueno ya DADO me regañara !!!)

Y ahora resulta que todo se corrijio excepto Sello Digital: INVALIDO .Bueno esto esta pero que mi carcacha le arreglo algo y se descompone otra cosa

Saludos !!!!!

poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 9:32 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor poliman » Mié Ene 12, 2011 9:56 pm

Muy buen programa DADO, excelente aportacion, no cabe duda que eres muy bueno prgramando, me sera de mucha ayuda.


Muchas gracias.
:)

memorami
Mensajes: 6
Registrado: Mar Nov 09, 2010 12:34 pm

Re: Codigo Fuente en Delphi para validar el sello

Mensajepor memorami » Mié Feb 09, 2011 3:57 pm

Alguien me puede hecar la mano para validar el sello de los CFDI porque estoy perdido gracias


Volver a “Delphi”

¿Quién está conectado?

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