OpenSSL | Cargar funciones adicionales

De forma predeterminada, Indy define las funciones OpenSSL más comunes necesarias para cifrar las comunicaciones, pero en ocasiones se necesitan más funciones para cifrado, firma, etc. Puede utilizar el método IdOpenSSLSetLoadFuncsCallback para asignar una devolución de llamada que cargue funciones OpenSSL adicionales de forma dinámica.

 

IdOpenSSLSetLoadFuncsCallback


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

Este es un tipo de procedimiento que actúa como devolución de llamada; acepta tres parámetros:

 


El propósito de esta devolución de llamada es permitir al usuario realizar un procesamiento personalizado cuando se cargan las funciones de OpenSSL, como registrar las cargas de funciones fallidas o gestionar errores.

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

Sirve como devolución de llamada para descargar funciones SSL. Esto resulta útil para realizar tareas de limpieza cuando las bibliotecas OpenSSL se están descargando.

 

 

Cómo cargar una función personalizada

A continuación encontrará un ejemplo sencillo de cómo cargar la función EVP_PKEY_CTX_set_rsa_padding utilizando los 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);