OpenSSL | Load Additional Functions

기본적으로 Indy는 통신을 암호화하는 데 필요한 가장 일반적인 OpenSSL 함수를 정의하지만, 때로는 암호화, 서명 등을 위해 더 많은 함수가 필요합니다. IdOpenSSLSetLoadFuncsCallback 메서드를 사용하여 추가 OpenSSL 함수를 동적으로 로드하는 콜백을 할당할 수 있습니다.

 

IdOpenSSLSetLoadFuncsCallback


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

이것은 콜백 역할을 하는 프로시저 유형이며, 세 개의 매개변수를 받습니다:

 


이 콜백의 목적은 OpenSSL 함수가 로드될 때 사용자가 사용자 지정 처리를 수행할 수 있게 하는 것입니다. 예: 실패한 함수 로드 로깅 또는 오류 처리.

 

 

IdOpenSSLSetUnLoadFuncsCallback

 


TIdUnLoadSSLFuncsCallback = procedure();

SSL 함수를 언로드하기 위한 콜백 역할을 합니다. OpenSSL 라이브러리가 언로드될 때 정리 작업을 수행하는 데 유용합니다.

 

 

사용자 정의 function을 로드하는 방법

아래에서 콜백을 사용하여 함수 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);