OpenSSL | Load Additional Functions

Por padrão, o Indy define as funções OpenSSL mais comuns necessárias para criptografar comunicações, mas às vezes você precisa de mais funções para criptografia, assinatura, etc. Você pode usar o método IdOpenSSLSetLoadFuncsCallback para atribuir um callback que carrega funções OpenSSL adicionais dinamicamente.

 

IdOpenSSLSetLoadFuncsCallback


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

Este é um tipo de procedimento que serve como callback, recebendo três parâmetros:

 


A finalidade deste callback é permitir que o usuário realize processamento personalizado quando as funções OpenSSL estão sendo carregadas, como registrar em log falhas de carregamento de funções ou tratar erros.

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

Serve como callback para o descarregamento de funções SSL. Isso é útil para realizar limpeza quando as bibliotecas OpenSSL estão sendo descarregadas.

 

 

Como carregar uma função personalizada

Encontre abaixo um exemplo simples de como carregar a função EVP_PKEY_CTX_set_rsa_padding utilizando os callbacks.

 


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