OpenSSL | Carica funzioni aggiuntive

Per impostazione predefinita, Indy definisce le funzioni OpenSSL più comuni necessarie per cifrare le comunicazioni, ma a volte sono necessarie ulteriori funzioni per cifratura, firma, ecc. È possibile utilizzare il metodo IdOpenSSLSetLoadFuncsCallback per assegnare un callback per il caricamento dinamico di funzioni OpenSSL aggiuntive.

 

IdOpenSSLSetLoadFuncsCallback


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

Si tratta di un tipo di procedura che funge da callback; accetta tre parametri:

 


Lo scopo di questo callback è consentire all'utente di eseguire un'elaborazione personalizzata durante il caricamento delle funzioni OpenSSL, ad esempio registrando i caricamenti di funzioni falliti o gestendo gli errori.

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

Funge da callback per lo scaricamento delle funzioni SSL. È utile per eseguire operazioni di pulizia quando le librerie OpenSSL vengono scaricate.

 

 

Come caricare una funzione personalizzata

Di seguito è riportato un semplice esempio di come caricare la funzione EVP_PKEY_CTX_set_rsa_padding utilizzando le callback.

 


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);