ssl_cryptlib.pas Support for TLS1.2 and 1.3 (by ACBr)
git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@257 7c85be65-684b-0410-a082-b2ed4fbef004
This commit is contained in:
parent
9ebe828363
commit
2330641499
@ -79,6 +79,10 @@ and @link(TCustomSSL.password). You can use special SSH channels too, see
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$H+}
|
{$H+}
|
||||||
|
|
||||||
|
{$IFDEF NEXTGEN}
|
||||||
|
{$ZEROBASEDSTRINGS OFF}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
unit ssl_cryptlib;
|
unit ssl_cryptlib;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
@ -296,7 +300,7 @@ begin
|
|||||||
FcryptSession := CRYPT_SESSION(CRYPT_SESSION_NONE);
|
FcryptSession := CRYPT_SESSION(CRYPT_SESSION_NONE);
|
||||||
if server then
|
if server then
|
||||||
case FSSLType of
|
case FSSLType of
|
||||||
LT_all, LT_SSLv3, LT_TLSv1, LT_TLSv1_1:
|
LT_all, LT_SSLv3, LT_TLSv1, LT_TLSv1_1, LT_TLSv1_2, LT_TLSv1_3:
|
||||||
st := CRYPT_SESSION_SSL_SERVER;
|
st := CRYPT_SESSION_SSL_SERVER;
|
||||||
LT_SSHv2:
|
LT_SSHv2:
|
||||||
st := CRYPT_SESSION_SSH_SERVER;
|
st := CRYPT_SESSION_SSH_SERVER;
|
||||||
@ -305,7 +309,7 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
case FSSLType of
|
case FSSLType of
|
||||||
LT_all, LT_SSLv3, LT_TLSv1, LT_TLSv1_1:
|
LT_all, LT_SSLv3, LT_TLSv1, LT_TLSv1_1, LT_TLSv1_2, LT_TLSv1_3:
|
||||||
st := CRYPT_SESSION_SSL;
|
st := CRYPT_SESSION_SSL;
|
||||||
LT_SSHv2:
|
LT_SSHv2:
|
||||||
st := CRYPT_SESSION_SSH;
|
st := CRYPT_SESSION_SSH;
|
||||||
@ -322,6 +326,10 @@ begin
|
|||||||
x := 1;
|
x := 1;
|
||||||
LT_TLSv1_1:
|
LT_TLSv1_1:
|
||||||
x := 2;
|
x := 2;
|
||||||
|
LT_TLSv1_2:
|
||||||
|
x := 3;
|
||||||
|
LT_TLSv1_3:
|
||||||
|
x := 4;
|
||||||
end;
|
end;
|
||||||
if x >= 0 then
|
if x >= 0 then
|
||||||
if not SSLCheck(cryptSetAttribute(FCryptSession, CRYPT_SESSINFO_VERSION, x)) then
|
if not SSLCheck(cryptSetAttribute(FCryptSession, CRYPT_SESSINFO_VERSION, x)) then
|
||||||
@ -507,7 +515,7 @@ begin
|
|||||||
if FcryptSession = CRYPT_SESSION(CRYPT_SESSION_NONE) then
|
if FcryptSession = CRYPT_SESSION(CRYPT_SESSION_NONE) then
|
||||||
Exit;
|
Exit;
|
||||||
cryptGetAttribute(FCryptSession, CRYPT_SESSINFO_VERSION, x);
|
cryptGetAttribute(FCryptSession, CRYPT_SESSINFO_VERSION, x);
|
||||||
if FSSLType in [LT_SSLv3, LT_TLSv1, LT_TLSv1_1, LT_all] then
|
if FSSLType in [LT_SSLv3, LT_TLSv1, LT_TLSv1_1, LT_TLSv1_2, LT_TLSv1_3, LT_all] then
|
||||||
case x of
|
case x of
|
||||||
0:
|
0:
|
||||||
Result := 'SSLv3';
|
Result := 'SSLv3';
|
||||||
@ -515,6 +523,10 @@ begin
|
|||||||
Result := 'TLSv1';
|
Result := 'TLSv1';
|
||||||
2:
|
2:
|
||||||
Result := 'TLSv1.1';
|
Result := 'TLSv1.1';
|
||||||
|
3:
|
||||||
|
Result := 'TLSv1.2';
|
||||||
|
4:
|
||||||
|
Result := 'TLSv1.3';
|
||||||
end;
|
end;
|
||||||
if FSSLType in [LT_SSHv2] then
|
if FSSLType in [LT_SSHv2] then
|
||||||
case x of
|
case x of
|
||||||
@ -677,5 +689,3 @@ initialization
|
|||||||
finalization
|
finalization
|
||||||
cryptEnd;
|
cryptEnd;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user