Ich muss mich aktuell mit digitaler Signierung herumschlagen. Dazu verwende ich OpenSSL (libeay32.dll). Die verwendeten Header-Übersetzungen habe ich von
hier. Jetzt ist mir ein Speicherleck aufgefallen, das sich hartnäckig hält.
Delphi-Quellcode:
procedure TMyClass.Verfify;
var
Certificate: TBytes;
CertStr: PPAnsiChar;
Cert: PX509;
begin
//...
CertStr := @PAnsiChar(Certificate);
Cert := d2i_X509(nil, CertStr, TC_LONG(Length(Certificate)));
if Assigned(Cert) then
try
//Auskommentierter Code
finally
X509_free(Cert);
end;
end;
Laut Doku dekrementiert X509_free den internen Referenzzähler auf die X509-Struktur und gibt diese bei Erreichen von 0 frei. Leider scheint dem nicht so zu sein, also mache ich wohl irgendetwas falsch. Kommentiere ich den Teil ab d2i_X509 bis X509_free aus, ist das Speicherleck weg, es muss also damit zu tun haben. Hat jemand einen Tipp für mich, die Speicherverwaltung von OpenSSL ist für mich doch recht gewöhnungsbedürftig?