Ver Mensaje Individual
  #70  
Antiguo 06-05-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Reputación: 14
dado Va por buen camino
Cita:
Empezado por osmuar_exp Ver Mensaje
Buenas tardes, andamos en la mismas con la factura electrónica, ya pasé la validación de la factura en el validador de hacienda factura estilo , el problema que se me presenta es el siguiente:

Tengo una cadena original "grande" y me marca el error en la funcion
Código:
ReadPrivateKey
, Funcion:
Código PHP:
function ReadPrivateKey(AFileNamestring): pEVP_PKEY
  var 
keyfilepBIO;     
  
mx pEVP_PKey;  
 
begin     
   keyfile 
:= BIO_new(BIO_s_file());   
   
mx := nil;       
   
BIO_read_filename(keyfile,PChar(AFilename));     
   
result := PEM_read_bio_PrivateKey(keyfile,mx,nil,nil); 
end
Error:
me marca error en el begin antes de acceder al la primera linea de la funcion...
les dejo la cadena por si alguien quiere hacer la prueba y si ya encontrarón una solución me harian un gran favor si la postean...
Nota: Ya descargue la nueva version de la libreria OpenSSL junto con el Microsoft Visual C++ 2008 Redistributable y ni asi.
Nota: Si a la siguiente cadena le quito nose algunos 7 u 8 conceptos no me marca el error, entonces por ahi viene el error en la longitud de la cadena :S.
Gracias...

Cadena Original: Es de prueba
Si hay un bug en la rutina del sello. Solo tienes que hacer el buffer mas grande, quedaria asi :

Código Delphi [-]
function CalculaSello(llaveprivada,cadenaoriginal: string): string;
var inbuf: array [0..8192] of char; //AQUI AUMENTAMOS EL BUFFER PARA PASAR CADENAS MAS GRANDES
 outbuf: array [0..1024] of char;
 key: pEVP_PKEY;
 mdctx: EVP_MD_CTX;
 Len: cardinal;
begin
 StrPCopy(inbuf,cadenaoriginal);
 key := ReadPrivateKey(llaveprivada);
 EVP_SignInit(@mdctx,EVP_md5());
 EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
 EVP_SignFinal(@mdctx,@outbuf,Len,key);
 result := BinToBase64(@outbuf,Len);
end;
Responder Con Cita