- new support for TLS SNI in OpenSSL.
- improved certificate verification - improved Cryptlib support git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@139 7c85be65-684b-0410-a082-b2ed4fbef004
This commit is contained in:
@ -218,6 +218,9 @@ const
|
||||
SSL_FILETYPE_PEM = 1;
|
||||
EVP_PKEY_RSA = 6;
|
||||
|
||||
SSL_CTRL_SET_TLSEXT_HOSTNAME = 55;
|
||||
TLSEXT_NAMETYPE_host_name = 0;
|
||||
|
||||
var
|
||||
SSLLibHandle: TLibHandle = 0;
|
||||
SSLUtilHandle: TLibHandle = 0;
|
||||
@ -420,6 +423,11 @@ var
|
||||
EntryPoint = 'SSL_get_verify_result')]
|
||||
function SSLGetVerifyResult(ssl: PSSL):Integer;external;
|
||||
|
||||
[DllImport(DLLSSLName, CharSet = CharSet.Ansi,
|
||||
SetLastError = False, CallingConvention= CallingConvention.cdecl,
|
||||
EntryPoint = 'SSL_ctrl')]
|
||||
function SslCtrl(ssl: PSSL; cmd: integer; larg: integer; parg: IntPtr): integer; external;
|
||||
|
||||
[DllImport(DLLUtilName, CharSet = CharSet.Ansi,
|
||||
SetLastError = False, CallingConvention= CallingConvention.cdecl,
|
||||
EntryPoint = 'X509_new')]
|
||||
@ -712,6 +720,7 @@ var
|
||||
function SSLCipherGetName(c: SslPtr): AnsiString;
|
||||
function SSLCipherGetBits(c: SslPtr; var alg_bits: Integer):Integer;
|
||||
function SSLGetVerifyResult(ssl: PSSL):Integer;
|
||||
function SSLCtrl(ssl: PSSL; cmd: integer; larg: integer; parg: SslPtr):Integer;
|
||||
|
||||
// libeay.dll
|
||||
function X509New: PX509;
|
||||
@ -821,6 +830,9 @@ type
|
||||
TSSLCipherGetName = function(c: Sslptr):PAnsiChar; cdecl;
|
||||
TSSLCipherGetBits = function(c: SslPtr; alg_bits: PInteger):Integer; cdecl;
|
||||
TSSLGetVerifyResult = function(ssl: PSSL):Integer; cdecl;
|
||||
TSSLCtrl = function(ssl: PSSL; cmd: integer; larg: integer; parg: SslPtr):Integer; cdecl;
|
||||
|
||||
TSSLSetTlsextHostName = function(ssl: PSSL; buf: PAnsiChar):Integer; cdecl;
|
||||
|
||||
// libeay.dll
|
||||
TX509New = function: PX509; cdecl;
|
||||
@ -920,6 +932,7 @@ var
|
||||
_SSLCipherGetName: TSSLCipherGetName = nil;
|
||||
_SSLCipherGetBits: TSSLCipherGetBits = nil;
|
||||
_SSLGetVerifyResult: TSSLGetVerifyResult = nil;
|
||||
_SSLCtrl: TSSLCtrl = nil;
|
||||
|
||||
// libeay.dll
|
||||
_X509New: TX509New = nil;
|
||||
@ -1301,6 +1314,15 @@ begin
|
||||
Result := X509_V_ERR_APPLICATION_VERIFICATION;
|
||||
end;
|
||||
|
||||
|
||||
function SSLCtrl(ssl: PSSL; cmd: integer; larg: integer; parg: SslPtr):Integer;
|
||||
begin
|
||||
if InitSSLInterface and Assigned(_SSLCtrl) then
|
||||
Result := _SSLCtrl(ssl, cmd, larg, parg)
|
||||
else
|
||||
Result := X509_V_ERR_APPLICATION_VERIFICATION;
|
||||
end;
|
||||
|
||||
// libeay.dll
|
||||
function X509New: PX509;
|
||||
begin
|
||||
@ -1785,6 +1807,7 @@ begin
|
||||
_SslCipherGetName := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_name');
|
||||
_SslCipherGetBits := GetProcAddr(SSLLibHandle, 'SSL_CIPHER_get_bits');
|
||||
_SslGetVerifyResult := GetProcAddr(SSLLibHandle, 'SSL_get_verify_result');
|
||||
_SslCtrl := GetProcAddr(SSLLibHandle, 'SSL_ctrl');
|
||||
|
||||
_X509New := GetProcAddr(SSLUtilHandle, 'X509_new');
|
||||
_X509Free := GetProcAddr(SSLUtilHandle, 'X509_free');
|
||||
@ -1969,6 +1992,7 @@ begin
|
||||
_SslCipherGetName := nil;
|
||||
_SslCipherGetBits := nil;
|
||||
_SslGetVerifyResult := nil;
|
||||
_SslCtrl := nil;
|
||||
|
||||
_X509New := nil;
|
||||
_X509Free := nil;
|
||||
|
Reference in New Issue
Block a user