Cita:
Empezado por osmuar_exp
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 , Funcion:
Código PHP:
function ReadPrivateKey(AFileName: string): pEVP_PKEY; var keyfile: pBIO; 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; 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;