Ver Mensaje Individual
  #148  
Antiguo 05-07-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Reputación: 15
dado Va por buen camino
Oscar ::::

Si, de hecho la idea principal de mi ValidaCFD es que pueda ser usado por todo el publico PARA RECIBIR FACTURAS, exactamente lo que tu estas haciendo.

Para validar el sello.....es un proceso largo pero sencillo (especialmente sencillo cuando sabes como hacerlo je je je).

Te doy "la punta de la madeja", te toca desentrañar todo el desarrollo.

1. Tomas la cadena "Certificado" de tu XML, la DIVIDES en lineas de 64 caracteres cada una, despues le agregas el encabezado -----BEGIN CERTIFICATE----- y el pie -----END CERTIFICATE----- (el numero de guiones y la frase debe ser EXACTA)

2. Grabas ese certificado en un archivo, digamos "certificado.PEM" (no voy a explicar muchos detalles, pero donde veas negrillas es porque hay informacion que debes estudiar si quieres saber que esta pasando)

3. Toma la cadena "Sello" de tu XML, la DIVIDES en lineas de 64 caracteres y la grabas en archivo con nombre digamos "sello.txt"

4. Generas la cadena original (esta te la tienes que aventar "a mano", es decir, no esta en el XML) y la grabas en un archivo, digamos "cadena.txt" IMPORTANTE no se te olvide grabarla codificada con UTF8 (ver UTF8ENCODE de Delphi)

5. Ejecutas lo siguiente :

openssl x509 -in "cert.PEM" -pubkey -noout >pubkey.txt
(para obtener la llave publica)

openssl enc -base64 -d -in "sello.txt" >sellobin.txt
(para pasar el sello de base64 a binario)

openssl dgst -md5 -verify "pubkey.txt" -signature "sellobin.txt" "cadoriginal.txt" >resultado.txt
(aqui esta toda la magia, en el archivo "resultado.txt" tienes......el resultado)
Responder Con Cita