rsa_sign报libeay32.dll内存错误,我的indy版本是10.2.3,请问大神怎么解决呢
空指针吧,看看具体的代码贴出来
function TForm1.Sign(filename, msg: String): string;
var
ctx: EVP_MD_CTX;
buf_in: PChar;
m_len, outl: cardinal;
pkey: PEVP_PKEY;
m, buf_out: array [0 .. 1024] of Char;
p: array [0 .. 255] of Char;
i: Integer;
begin
buf_out := '';
if filename = '' then
begin
Result := '';
Exit;
end;
// ZeroMemory(@m, SizeOf(m));
// ZeroMemory(@buf_out, SizeOf(buf_out));
pkey := LoadPrivateKey(filename);
buf_in := PChar(msg);
EVP_MD_CTX_init(@ctx); // 初始化
EVP_SignInit(@ctx, EVP_sha1()); //将需要使用的摘要算法存入ctxl中
EVP_SignUpdate(@ctx, buf_in, Length(buf_in));////存入编码值
EVP_DigestFinal(@ctx, m, m_len);//求取编码的长度为m_len摘要值存入m中
RSA_sign(EVP_sha1()._type, m, m_len, buf_out, outl, pkey.pkey.rsa);//64为SHA1的NID
EVP_MD_CTX_cleanup(@ctx);
Result := EncodeString(StrPas(buf_out));
end;
在RSA_Sign处报错