Ver Mensaje Individual
  #1  
Antiguo 07-07-2014
Alexis De la Cr Alexis De la Cr is offline
Miembro
 
Registrado: may 2006
Ubicación: Puebla
Posts: 124
Reputación: 19
Alexis De la Cr Va por buen camino
Actualizacion de unidad sello.pas XE2

Buenas noches estimados colegas.

Hasta hace unos dias, la plataforma sobre la que programaba era Delphi 2007, pero por causas ajenas a mi, he tenido que migrar a la version XE2. Obviamente hubo que hacer mucha talacha, ya que con la incorporacion del famoso unicode, el codigo en 2007 ya no funciona corectamente en XE2, especificamente hablando de la unidad sello.pas con la cual se generan los sellosdigitales de los CFDIs. He logrado actualizar todas las rutinas de dicha unidad y aparentemente funcionan bien, pero la realidad es que el sello digital, no lo devuelve correctamente, por lo tanto a la hora de hacer la validacion, se rechaza el dicho sello. He estado buscando mas información en al web y creo que ya me agote todos los recursos existentes. He parado un rato con la unidad sello.pas para intentar con los componentes lockbox 3, pero tambien no he logrado sacar el sello correctamente. Ahora vuelvo otra vez a intentar ajustar la unidad sello.pas.

ya he bajado las versiones mas actualizadas de la unidad libeay32.pas, asi como de la libreria libeay32.dll y nada, sigue generandome el mismo sello invalido. he incluso monitoreado las variables que devuelven las rutinas de la libreria y he notado un cierto desfase, pero no se a que se como corregirlo. les envio dichos datos.

Datos Generados con la Version 2007
Cita:
Tamaño en Bytes de la Cadena Original: 4
Longitud de la Cadena Original: 626
Tamaño en Byes de inbuf: 8193
Longitud De la Cadena Orginal en UTF8: 628

key:=LoadPrivateKey(llaveprivada,'');

Valores de la Varible Key:
ktype: 6, save_type: 6, references: 1
pkey.ptr: , key.pkey.dsa.pad: 0, key.pkey.dsa.version: 0, key.pkey.dsa.write_params: 1662324256
key.pkey.dsa.flags: 20384720,key.pkey.dsa.references: 0
save_parameters: 1

EVP_SignInit(@mdctx,EVP_sha1());

Valores de la Varible mdctx:
digest._type: 64, digest.pkey_type: 65, digest.md_size: 20
sha.h0: 0, sha.h1: 0, sha.h2: 20384992, sha.h3: 0, sha.h4: 0
sha.Nl: 0, sha.Nh: 0, sha.num: 0
sha.data[0]: 0, sha.data[1]: 0, sha.data[2]: 0, sha.data[3]: 0, sha.data[4]: 0
sha.data[5]: 0, sha.data[6]: 0, sha.data[7]: 0, sha.data[8]: 0, sha.data[9]: 0
sha.data[10]: 0, sha.data[11]: 0, sha.data[12]: 0, sha.data[13]: 0, sha.data[14]: 0
sha.data[15]: 0, sha.data[16]: 0

sello
T8HRuNbBCpywc4fw7uWQEaM3qNNo0Iv3wQqomJx2ADYTxkCRBDBvBcDqnIo1KRj+KeDtEeI1CbH+AM6o8LZE/r2YZb4Tq7y08qqeVitvdxer2zokj5Sclnc0x/JthBlv72R0ZhWFaV/JI79dJBid48FwcfCiWYwMc+gXoguACwo=
Aplicando la misma cadena original, al mismo xml de ejemplo, pero en delphi xe2 me devuelve
Cita:
Tamaño en Bytes de la Cadena Original: 4
Longitud de la Cadena Original: 626
Tamaño en Bytes de inbuf: 1000000
Longitud De la Cadena Orginal en UTF8: 628

key:=LoadPrivateKey(llaveprivada,'');

Valores de la Varible Key:
ktype: 6, save_type: 6, references: 1
pkey.ptr: , key.pkey.dsa.pad: 0, key.pkey.dsa.version: 0, key.pkey.dsa.write_params: 1662324256
key.pkey.dsa.flags: 26449360,key.pkey.dsa.references: 0
save_parameters: 1

EVP_SignInit(@mdctx,EVP_sha1());

Valores de la Varible mdctx:
digest._type: 64, digest.pkey_type: 65, digest.md_size: 20
sha.h0: 0, sha.h1: 0, sha.h2: 26447576, sha.h3: 0, sha.h4: 0
sha.Nl: 0, sha.Nh: 0, sha.num: 0
sha.data[0]: 0, sha.data[1]: 0, sha.data[2]: 0, sha.data[3]: 0, sha.data[4]: 0
sha.data[5]: 0, sha.data[6]: 0, sha.data[7]: 0, sha.data[8]: 0, sha.data[9]: 0
sha.data[10]: 0, sha.data[11]: 0, sha.data[12]: 0, sha.data[13]: 0, sha.data[14]: 0
sha.data[15]: 0, sha.data[16]: 0

sello (Invalido)
fyppu5HOjV4YcpRUVNqvy1Z6Dwk/SnbxaC8OeiRV1UDZiAwlWA7TRrMpWxkIBvc32U1OhV8hp5hq3DjfxGfK+YFLlTpiZenIdzxSfZZX5Uf0Rk3XU4tIR3W2IwmgrQ5j hzuc78EG9RwoI9Hl+oR9MtDKWesEtMWxUAo/JJiKinU=
Noto que hay una diferencia en la varible key, en el valor key.pkey.dsa.flags que pasa de 20384720 a 26449360 y lo mismo sucede en la variable mdctx valor sha.h2, aumenta de tamaño en exactamente la misma cantidad en ambos casos. No se si este sea el problema, pero sospecho que debe ser algun tipo de dato que este afectando.

Alguien sabe a que se refieren ls valores dsa flags y sha ha2?

Cualquier ayuda sera bienvenida. Muchas Gracias.
Responder Con Cita