OpenSSL | 加载附加函数

默认情况下,Indy 定义了加密通信所需的最常用 OpenSSL 函数,但有时您需要更多函数用于加密、签名等。您可以使用 IdOpenSSLSetLoadFuncsCallback 方法分配一个回调,用于动态加载其他 OpenSSL 函数。

 

IdOpenSSLSetLoadFuncsCallback


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

这是一个过程类型,用作回调,接受三个参数:

 


此回调的目的是允许用户在加载 OpenSSL 函数时执行自定义处理。

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

它作为卸载 SSL 函数的回调。当 OpenSSL 库被卸载时,可用于执行清理操作。

 

 

如何加载自定义函数

以下是如何使用回调加载 EVP_PKEY_CTX_set_rsa_padding 函数的简单示例。

 


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