在网上看到这段代码?uses OpenSSLUtils,libeay32;function ReadPrivateKey(AFileName: TFileName): pEVP_PKEY;
var
keyfile: pBIO;
  function cb(buffer: PChar; blength: integer;
    verify: integer; data: pointer): integer; cdecl;
  var
    Passphrase: String;
    begin
      result := 0;
    end;begin
  keyfile := BIO_new(BIO_s_file());
  BIO_read_filename(keyfile, PChar(AFilename));
  result := PEM_read_bio_PrivateKey(keyfile, nil, @cb, nil);
  BIO_free(keyfile);
end;function EVP_Sign(keyfile,str:string):string;
var key: pEVP_PKEY;mdLength, b64Length: dword;
mdValue: array [0..2200] of byte;
mdctx: EVP_MD_CTX;
memout, b64: pBIO;
inbuf, outbuf: array [0..1023] of char;
ss:string;
i:integer;
begin
result:= '';
key := ReadPrivateKey(keyfile);
if key <> nil then
begin
StrPCopy(inbuf, str);
EVP_SignInit(@mdctx, EVP_sha1());
EVP_SignUpdate(@mdctx, @inbuf, StrLen(inbuf));mdLength := 0;
EVP_SignFinal (@mdctx, @mdValue, mdLength,key);
for i:= 0 to mdLength-1 do
begin
ss:= ss+inttohex(mdValue[i],2);
end;
EVP_PKEY_free(key);
result :=ss;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := EVP_Sign('D:\1.pem',edit1.Text );
end;---------------------------------------------------------------怎么运行到 result := PEM_read_bio_PrivateKey(keyfile, nil, @cb, nil); 的时候出错啦...错误信息:Types of actual and formal var parameters must be identcal