Varsayılan olarak, Indy iletişimleri şifrelemek için gereken en yaygın OpenSSL işlevlerini tanımlar, ancak bazen şifreleme, imzalama vb. için daha fazla işleve ihtiyacınız vardır. Ek OpenSSL işlevlerini dinamik olarak yüklemek için bir geri çağrı atamak üzere IdOpenSSLSetLoadFuncsCallback yöntemini kullanabilirsiniz.
TIdLoadSSLFuncsCallback = procedure(hIdSSL: TIdLibHandle; hIdCrypto: TIdLibHandle; const FailedLoadList: TStringList);
Bu, geri çağırma görevi gören bir yordam türüdür ve üç parametre alır:
Bu geri çağrının (callback) amacı, OpenSSL işlevleri yüklenirken kullanıcının özel işlem gerçekleştirmesine olanak tanımaktır, örneğin başarısız işlev yüklemelerini günlüğe kaydetmek veya hataları işlemek.
TIdUnLoadSSLFuncsCallback = procedure();
SSL fonksiyonlarını kaldırmak için bir geri çağrı görevi görür. Bu, OpenSSL kütüphaneleri kaldırılırken temizlik yapmak için kullanışlıdır.
Geri çağırmaları kullanarak EVP_PKEY_CTX_set_rsa_padding işlevinin nasıl yükleneceğine dair basit bir örneği aşağıda bulun.
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);