Hola buenas noches, alguien a tenido problemas al generar el sello de un CFDI 3.3 de factura global, por el tamaño de la cadena original y como lo resolvió.
Porque yo tengo un problemas cuando el tamaño de la cadena origina supera los 999,999 el tamaño de la cadena que estoy generando es de 1,375,455.
Revisando el código encontré que donde se genera el error en esta parte del código de la función para generar el sello
Tam:=Length(aCadena); // Obtenemos el tamaño de la cadena original
try
System.SysUtils.StrPLCopy(inbuf, aCadena, Tam); // Copiamos la cadena original al buffer de entrada
except On E:Exception do
begin
if Pos('Access', E.Message) > 0 then
Raise ELongitudBufferPequenoException.Create('Error de sellado digital: La cadena original fue mas grande que el tamaño del buffer,' + 'por favor intente aumentando el tamaño del buffer.');
end;
end;
Yo creo que es porque el tamaño de la cadena es mayo el array declarado en el siguiente codigo
function TOpenSSL.HacerDigestion(const aCadena: TCadenaUTF8; const aTipoDigestion: TMetodoDigestion): TCadenaUTF8;
var
mdctx: EVP_MD_CTX;
{$IF CompilerVersion >= 20}
Inbuf: Array[0..999999] of AnsiChar; // Antes [0..8192]
Outbuf: array [0..1024] of AnsiChar;
{$ELSE}
Inbuf: Array[0..999999] of Char;
Outbuf: array [0..1024] of Char;
{$IFEND}
Len, Tam: cardinal;
begin
Len := 0;
// Verificamos tener la llave privada desencriptada
if not Assigned(fLlavePrivadaDesencriptada) then
Raise ELlaveLecturaException.Create('No se tiene asiganada la llave privada, favor de asignarla con el metodo AsignarLlavePrivada');
Muchas gracias.
Miguel Angel Carrillo.