기본적으로 Indy는 통신을 암호화하는 데 필요한 가장 일반적인 OpenSSL 함수를 정의하지만, 때로는 암호화, 서명 등을 위해 더 많은 함수가 필요합니다. IdOpenSSLSetLoadFuncsCallback 메서드를 사용하여 추가 OpenSSL 함수를 동적으로 로드하는 콜백을 할당할 수 있습니다.
TIdLoadSSLFuncsCallback = procedure(hIdSSL: TIdLibHandle; hIdCrypto: TIdLibHandle; const FailedLoadList: TStringList);
이것은 콜백 역할을 하는 프로시저 유형이며, 세 개의 매개변수를 받습니다:
이 콜백의 목적은 OpenSSL 함수가 로드될 때 사용자가 사용자 지정 처리를 수행할 수 있게 하는 것입니다. 예: 실패한 함수 로드 로깅 또는 오류 처리.
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);