Hola masrmty.
Lo primero que noto es que el arreglo está declarado dentro de la función por lo que será almacenado en el
stack, y dado su tamaño, no me extraña que haya desborde...
Intenta declarándolo como variable global oculta, dentro de la sección
implemetation de la unidad donde resida la función:
Código Delphi
[-]
...
implementation
var
inbuf : array [0..500000000] of AnsiChar;
function CalculaSelloConBig(cadenaoriginal: string; Hash:THash; key: pEVP_PKEY): AnsiChar;
var
outbuf: array [0..1024] of ansichar;
...
begin
...
Saludos