OpenSSL | Ładowanie dodatkowych funkcji

Domyślnie Indy definiuje najczęstsze funkcje OpenSSL potrzebne do szyfrowania komunikacji, jednak czasami wymagane są dodatkowe funkcje do szyfrowania, podpisywania itp. Można użyć metody IdOpenSSLSetLoadFuncsCallback, aby przypisać callback do dynamicznego ładowania dodatkowych funkcji OpenSSL.

 

IdOpenSSLSetLoadFuncsCallback


TIdLoadSSLFuncsCallback = procedure(hIdSSL: TIdLibHandle; hIdCrypto: TIdLibHandle; const FailedLoadList: TStringList);

Jest to typ procedury służący jako wywołanie zwrotne przyjmujące trzy parametry:

 


Celem tego wywołania zwrotnego jest umożliwienie użytkownikowi wykonywania niestandardowego przetwarzania podczas ładowania funkcji OpenSSL, takiego jak rejestrowanie nieudanych prób załadowania funkcji lub obsługa błędów.

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

Służy jako wywołanie zwrotne do zwalniania funkcji SSL. Jest przydatny do wykonywania czynności porządkowych podczas zwalniania bibliotek OpenSSL.

 

 

Jak załadować funkcję niestandardową

Poniżej znajduje się prosty przykład ładowania funkcji EVP_PKEY_CTX_set_rsa_padding przy użyciu wywołań zwrotnych.

 


var
  EVP_PKEY_CTX_set_rsa_padding : function(ctx: PEVP_PKEY_CTX; pad: Integer): Integer; cdecl;

procedure DoOpenSSLLoadFuncsCallback(hIdSSL: TIdLibHandle; hIdCrypto:
    TIdLibHandle; const FailedLoadList: TStringList);
begin
  @EVP_PKEY_CTX_set_rsa_padding := LoadLibFunction(hIdCrypto, 'EVP_PKEY_CTX_set_rsa_padding');
end;

procedure DoOpenSSLUnLoadFuncsCallback;
begin
  @EVP_PKEY_CTX_set_rsa_padding := nil;
end;

IdOpenSSLSetLoadFuncsCallback(DoOpenSSLLoadFuncsCallback);
IdOpenSSLSetUnLoadFuncsCallback(DoOpenSSLUnLoadFuncsCallback);