mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-09 10:05:58 +02:00
* add SSL_ctrl, SSL_CTX_ctrl and friends to openSSL
git-svn-id: trunk@11119 -
This commit is contained in:
parent
46468145a7
commit
971a28ece4
@ -124,6 +124,62 @@ const
|
||||
SSL_ERROR_ZERO_RETURN = 6;
|
||||
SSL_ERROR_WANT_CONNECT = 7;
|
||||
SSL_ERROR_WANT_ACCEPT = 8;
|
||||
|
||||
SSL_CTRL_NEED_TMP_RSA = 1;
|
||||
SSL_CTRL_SET_TMP_RSA = 2;
|
||||
SSL_CTRL_SET_TMP_DH = 3;
|
||||
SSL_CTRL_SET_TMP_ECDH = 4;
|
||||
SSL_CTRL_SET_TMP_RSA_CB = 5;
|
||||
SSL_CTRL_SET_TMP_DH_CB = 6;
|
||||
SSL_CTRL_SET_TMP_ECDH_CB = 7;
|
||||
SSL_CTRL_GET_SESSION_REUSED = 8;
|
||||
SSL_CTRL_GET_CLIENT_CERT_REQUEST = 9;
|
||||
SSL_CTRL_GET_NUM_RENEGOTIATIONS = 10;
|
||||
SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 11;
|
||||
SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 12;
|
||||
SSL_CTRL_GET_FLAGS = 13;
|
||||
SSL_CTRL_EXTRA_CHAIN_CERT = 14;
|
||||
SSL_CTRL_SET_MSG_CALLBACK = 15;
|
||||
SSL_CTRL_SET_MSG_CALLBACK_ARG = 16;
|
||||
{ only applies to datagram connections }
|
||||
SSL_CTRL_SET_MTU = 17;
|
||||
{ Stats }
|
||||
SSL_CTRL_SESS_NUMBER = 20;
|
||||
SSL_CTRL_SESS_CONNECT = 21;
|
||||
SSL_CTRL_SESS_CONNECT_GOOD = 22;
|
||||
SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23;
|
||||
SSL_CTRL_SESS_ACCEPT = 24;
|
||||
SSL_CTRL_SESS_ACCEPT_GOOD = 25;
|
||||
SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26;
|
||||
SSL_CTRL_SESS_HIT = 27;
|
||||
SSL_CTRL_SESS_CB_HIT = 28;
|
||||
SSL_CTRL_SESS_MISSES = 29;
|
||||
SSL_CTRL_SESS_TIMEOUTS = 30;
|
||||
SSL_CTRL_SESS_CACHE_FULL = 31;
|
||||
SSL_CTRL_OPTIONS = 32;
|
||||
SSL_CTRL_MODE = 33;
|
||||
SSL_CTRL_GET_READ_AHEAD = 40;
|
||||
SSL_CTRL_SET_READ_AHEAD = 41;
|
||||
SSL_CTRL_SET_SESS_CACHE_SIZE = 42;
|
||||
SSL_CTRL_GET_SESS_CACHE_SIZE = 43;
|
||||
SSL_CTRL_SET_SESS_CACHE_MODE = 44;
|
||||
SSL_CTRL_GET_SESS_CACHE_MODE = 45;
|
||||
SSL_CTRL_GET_MAX_CERT_LIST = 50;
|
||||
SSL_CTRL_SET_MAX_CERT_LIST = 51;
|
||||
|
||||
{* Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
|
||||
* when just a single record has been written): *}
|
||||
SSL_MODE_ENABLE_PARTIAL_WRITE = 1;
|
||||
{* Make it possible to retry SSL_write() with changed buffer location
|
||||
* (buffer contents must stay the same!); this is not the default to avoid
|
||||
* the misconception that non-blocking SSL_write() behaves like
|
||||
* non-blocking write(): *}
|
||||
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 2;
|
||||
{* Never bother the application with retries if the transport
|
||||
* is blocking: *}
|
||||
SSL_MODE_AUTO_RETRY = 4;
|
||||
{* Don't attempt to automatically build certificate chain *}
|
||||
SSL_MODE_NO_AUTO_CHAIN = 8;
|
||||
|
||||
SSL_OP_NO_SSLv2 = $01000000;
|
||||
SSL_OP_NO_SSLv3 = $02000000;
|
||||
@ -193,6 +249,15 @@ var
|
||||
function SslCtxNew(meth: PSSL_METHOD):PSSL_CTX;
|
||||
procedure SslCtxFree(arg0: PSSL_CTX);
|
||||
function SslSetFd(s: PSSL; fd: cInt):cInt;
|
||||
|
||||
function SslCtrl(ssl: PSSL; cmd: cInt; larg: clong; parg: Pointer): cLong;
|
||||
function SslCTXCtrl(ctx: PSSL_CTX; cmd: cInt; larg: clong; parg: Pointer): cLong;
|
||||
|
||||
function SSLCTXSetMode(ctx: PSSL_CTX; mode: cLong): cLong;
|
||||
function SSLSetMode(s: PSSL; mode: cLong): cLong;
|
||||
function SSLCTXGetMode(ctx: PSSL_CTX): cLong;
|
||||
function SSLGetMode(s: PSSL): cLong;
|
||||
|
||||
function SslMethodV2:PSSL_METHOD;
|
||||
function SslMethodV3:PSSL_METHOD;
|
||||
function SslMethodTLSV1:PSSL_METHOD;
|
||||
@ -299,6 +364,8 @@ type
|
||||
TSslCtxNew = function(meth: PSSL_METHOD):PSSL_CTX; cdecl;
|
||||
TSslCtxFree = procedure(arg0: PSSL_CTX); cdecl;
|
||||
TSslSetFd = function(s: PSSL; fd: cInt):cInt; cdecl;
|
||||
TSslCtrl = function(ssl: PSSL; cmd: cInt; larg: clong; parg: Pointer): cLong; cdecl;
|
||||
TSslCTXCtrl = function(ctx: PSSL_CTX; cmd: cInt; larg: clong; parg: Pointer): cLong; cdecl;
|
||||
TSslMethodV2 = function:PSSL_METHOD; cdecl;
|
||||
TSslMethodV3 = function:PSSL_METHOD; cdecl;
|
||||
TSslMethodTLSV1 = function:PSSL_METHOD; cdecl;
|
||||
@ -397,6 +464,8 @@ var
|
||||
_SslCtxNew: TSslCtxNew = nil;
|
||||
_SslCtxFree: TSslCtxFree = nil;
|
||||
_SslSetFd: TSslSetFd = nil;
|
||||
_SslCtrl: TSslCtrl = nil;
|
||||
_SslCTXCtrl: TSslCTXCtrl = nil;
|
||||
_SslMethodV2: TSslMethodV2 = nil;
|
||||
_SslMethodV3: TSslMethodV3 = nil;
|
||||
_SslMethodTLSV1: TSslMethodTLSV1 = nil;
|
||||
@ -541,6 +610,43 @@ begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function SslCtrl(ssl: PSSL; cmd: cInt; larg: clong; parg: Pointer): cLong;
|
||||
begin
|
||||
if InitSSLInterface and Assigned(_SslCtrl) then
|
||||
Result := _SslCtrl(ssl, cmd, larg, parg)
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function SslCTXCtrl(ctx: PSSL_CTX; cmd: cInt; larg: clong; parg: Pointer
|
||||
): cLong;
|
||||
begin
|
||||
if InitSSLInterface and Assigned(_SslCTXCtrl) then
|
||||
Result := _SslCTXCtrl(ctx, cmd, larg, parg)
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function SSLCTXSetMode(ctx: PSSL_CTX; mode: cLong): cLong;
|
||||
begin
|
||||
Result := SslCTXCtrl(ctx, SSL_CTRL_MODE, mode, nil);
|
||||
end;
|
||||
|
||||
function SSLSetMode(s: PSSL; mode: cLong): cLong;
|
||||
begin
|
||||
Result := SSLctrl(s, SSL_CTRL_MODE, mode, nil);
|
||||
end;
|
||||
|
||||
function SSLCTXGetMode(ctx: PSSL_CTX): cLong;
|
||||
begin
|
||||
Result := SSLCTXctrl(ctx, SSL_CTRL_MODE, 0, nil);
|
||||
end;
|
||||
|
||||
function SSLGetMode(s: PSSL): cLong;
|
||||
begin
|
||||
Result := SSLctrl(s, SSL_CTRL_MODE, 0, nil);
|
||||
end;
|
||||
|
||||
function SslMethodV2:PSSL_METHOD;
|
||||
begin
|
||||
if InitSSLInterface and Assigned(_SslMethodV2) then
|
||||
@ -1206,6 +1312,8 @@ begin
|
||||
_SslCtxNew := GetProcAddr(SSLLibHandle, 'SSL_CTX_new');
|
||||
_SslCtxFree := GetProcAddr(SSLLibHandle, 'SSL_CTX_free');
|
||||
_SslSetFd := GetProcAddr(SSLLibHandle, 'SSL_set_fd');
|
||||
_SslCtrl := GetProcAddr(SSLLibHandle, 'SSL_ctrl');
|
||||
_SslCTXCtrl := GetProcAddr(SSLLibHandle, 'SSL_CTX_ctrl');
|
||||
_SslMethodV2 := GetProcAddr(SSLLibHandle, 'SSLv2_method');
|
||||
_SslMethodV3 := GetProcAddr(SSLLibHandle, 'SSLv3_method');
|
||||
_SslMethodTLSV1 := GetProcAddr(SSLLibHandle, 'TLSv1_method');
|
||||
@ -1357,6 +1465,8 @@ begin
|
||||
_SslCtxNew := nil;
|
||||
_SslCtxFree := nil;
|
||||
_SslSetFd := nil;
|
||||
_SslCtrl := nil;
|
||||
_SslCTXCtrl := nil;
|
||||
_SslMethodV2 := nil;
|
||||
_SslMethodV3 := nil;
|
||||
_SslMethodTLSV1 := nil;
|
||||
|
Loading…
Reference in New Issue
Block a user