Skip to content

Instantly share code, notes, and snippets.

@achechulin
Created May 25, 2022 04:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save achechulin/adbbc35aa0e14aaf9e70981810dc78c6 to your computer and use it in GitHub Desktop.
Save achechulin/adbbc35aa0e14aaf9e70981810dc78c6 to your computer and use it in GitHub Desktop.
OpenSSL 1.1 to 3.0
--- a/src/lib/mormot.lib.openssl11.pas
+++ b/src/lib/mormot.lib.openssl11.pas
@@ -1714,7 +1714,8 @@ function X509_NAME_print_ex_fp(fp: PPointer; nm: PX509_NAME; indent: integer;
flags: cardinal): integer; cdecl;
function X509_NAME_entry_count(name: PX509_NAME): integer; cdecl;
function X509_NAME_oneline(a: PX509_NAME; buf: PUtf8Char; size: integer): PUtf8Char; cdecl;
-function X509_NAME_hash(x: PX509_NAME): cardinal; cdecl;
+function X509_NAME_hash_ex(x: PX509_NAME; libctx: Pointer;
+ propq: PAnsiChar; ok: PInteger): cardinal; cdecl;
function X509_NAME_cmp(a: PX509_NAME; b: PX509_NAME): integer; cdecl;
function X509_STORE_CTX_get_current_cert(ctx: PX509_STORE_CTX): PX509; cdecl;
function X509_digest(data: PX509; typ: PEVP_MD; md: PByte; len: PCardinal): integer; cdecl;
@@ -2146,7 +2147,7 @@ type
SSL_get_error: function(s: PSSL; ret_code: integer): integer; cdecl;
SSL_ctrl: function(ssl: PSSL; cmd: integer; larg: clong; parg: pointer): clong; cdecl;
SSL_set_bio: procedure(s: PSSL; rbio: PBIO; wbio: PBIO); cdecl;
- SSL_get_peer_certificate: function(s: PSSL): PX509; cdecl;
+ SSL_get1_peer_certificate: function(s: PSSL): PX509; cdecl;
SSL_get_peer_cert_chain: function(s: PSSL): Pstack_st_X509; cdecl;
SSL_free: procedure(ssl: PSSL); cdecl;
SSL_connect: function(ssl: PSSL): integer; cdecl;
@@ -2197,7 +2198,7 @@ const
'SSL_get_error',
'SSL_ctrl',
'SSL_set_bio',
- 'SSL_get_peer_certificate',
+ 'SSL_get1_peer_certificate',
'SSL_get_peer_cert_chain',
'SSL_free',
'SSL_connect',
@@ -2334,7 +2335,7 @@ end;
function SSL_get_peer_certificate(s: PSSL): PX509;
begin
- result := libssl.SSL_get_peer_certificate(s);
+ result := libssl.SSL_get1_peer_certificate(s);
end;
function SSL_get_peer_cert_chain(s: PSSL): Pstack_st_X509;
@@ -2478,7 +2479,7 @@ type
ERR_load_BIO_strings: function(): integer; cdecl;
EVP_MD_CTX_create: function(): PEVP_MD_CTX; cdecl;
EVP_MD_CTX_destroy: procedure(ctx: PEVP_MD_CTX); cdecl;
- EVP_PKEY_size: function(pkey: PEVP_PKEY): integer; cdecl;
+ EVP_PKEY_get_size: function(pkey: PEVP_PKEY): integer; cdecl;
EVP_PKEY_free: procedure(pkey: PEVP_PKEY); cdecl;
EVP_DigestSignInit: function(ctx: PEVP_MD_CTX; pctx: PPEVP_PKEY_CTX; typ: PEVP_MD; e: PENGINE; pkey: PEVP_PKEY): integer; cdecl;
EVP_DigestUpdate: function(ctx: PEVP_MD_CTX; d: pointer; cnt: PtrUInt): integer; cdecl;
@@ -2535,7 +2536,8 @@ type
X509_NAME_print_ex_fp: function(fp: PPointer; nm: PX509_NAME; indent: integer; flags: cardinal): integer; cdecl;
X509_NAME_entry_count: function(name: PX509_NAME): integer; cdecl;
X509_NAME_oneline: function(a: PX509_NAME; buf: PUtf8Char; size: integer): PUtf8Char; cdecl;
- X509_NAME_hash: function(x: PX509_NAME): cardinal; cdecl;
+ X509_NAME_hash_ex: function(x: PX509_NAME; libctx: Pointer;
+ propq: PAnsiChar; ok: PInteger): cardinal; cdecl;
X509_NAME_cmp: function(a: PX509_NAME; b: PX509_NAME): integer; cdecl;
X509_STORE_CTX_get_current_cert: function(ctx: PX509_STORE_CTX): PX509; cdecl;
X509_digest: function(data: PX509; typ: PEVP_MD; md: PByte; len: PCardinal): integer; cdecl;
@@ -2692,8 +2694,8 @@ type
EVP_MD_CTX_new: function: PEVP_MD_CTX; cdecl;
EVP_MD_CTX_free: procedure(ctx: PEVP_MD_CTX); cdecl;
EVP_MD_CTX_md: function(ctx: PEVP_MD_CTX): PEVP_MD; cdecl;
- EVP_MD_flags: function(md: PEVP_MD): cardinal; cdecl;
- EVP_MD_size: function(md: PEVP_MD): integer; cdecl;
+ EVP_MD_get_flags: function(md: PEVP_MD): cardinal; cdecl;
+ EVP_MD_get_size: function(md: PEVP_MD): integer; cdecl;
EVP_DigestInit_ex: function(ctx: PEVP_MD_CTX; typ: PEVP_MD; impl: PENGINE): integer; cdecl;
EVP_DigestFinal_ex: function(ctx: PEVP_MD_CTX; md: PByte; s: PCardinal): integer; cdecl;
EVP_DigestFinalXOF: function(ctx: PEVP_MD_CTX; md: PByte; len: PtrUInt): integer; cdecl;
@@ -2764,7 +2766,7 @@ const
'ERR_load_BIO_strings',
'EVP_MD_CTX_new',
'EVP_MD_CTX_free',
- 'EVP_PKEY_size',
+ 'EVP_PKEY_get_size',
'EVP_PKEY_free',
'EVP_DigestSignInit',
'EVP_DigestUpdate',
@@ -2821,7 +2823,7 @@ const
'X509_NAME_print_ex_fp',
'X509_NAME_entry_count',
'X509_NAME_oneline',
- 'X509_NAME_hash',
+ 'X509_NAME_hash_ex',
'X509_NAME_cmp',
'X509_STORE_CTX_get_current_cert',
'X509_digest',
@@ -2978,8 +2980,8 @@ const
'EVP_MD_CTX_new',
'EVP_MD_CTX_free',
'EVP_MD_CTX_md',
- 'EVP_MD_flags',
- 'EVP_MD_size',
+ 'EVP_MD_get_flags',
+ 'EVP_MD_get_size',
'EVP_DigestInit_ex',
'EVP_DigestFinal_ex',
'EVP_DigestFinalXOF',
@@ -3093,7 +3095,7 @@ end;
function EVP_PKEY_size(pkey: PEVP_PKEY): integer;
begin
- result := libcrypto.EVP_PKEY_size(pkey);
+ result := libcrypto.EVP_PKEY_get_size(pkey);
end;
procedure EVP_PKEY_free(pkey: PEVP_PKEY);
@@ -3386,9 +3388,10 @@ begin
result := libcrypto.X509_NAME_oneline(a, buf, size);
end;
-function X509_NAME_hash(x: PX509_NAME): cardinal;
+function X509_NAME_hash_ex(x: PX509_NAME; libctx: Pointer;
+ propq: PAnsiChar; ok: PInteger): cardinal;
begin
- result := libcrypto.X509_NAME_hash(x);
+ result := libcrypto.X509_NAME_hash_ex(x, libctx, propq, ok);
end;
function X509_NAME_cmp(a: PX509_NAME; b: PX509_NAME): integer;
@@ -4203,12 +4206,12 @@ end;
function EVP_MD_flags(md: PEVP_MD): cardinal;
begin
- result := libcrypto.EVP_MD_flags(md);
+ result := libcrypto.EVP_MD_get_flags(md);
end;
function EVP_MD_size(md: PEVP_MD): integer;
begin
- result := libcrypto.EVP_MD_size(md);
+ result := libcrypto.EVP_MD_get_size(md);
end;
function EVP_DigestInit_ex(ctx: PEVP_MD_CTX; typ: PEVP_MD; impl: PENGINE): integer;
@@ -4705,7 +4708,7 @@ procedure SSL_set_bio(s: PSSL; rbio: PBIO; wbio: PBIO); cdecl;
external LIB_SSL name _PU + 'SSL_set_bio';
function SSL_get_peer_certificate(s: PSSL): PX509; cdecl;
- external LIB_SSL name _PU + 'SSL_get_peer_certificate';
+ external LIB_SSL name _PU + 'SSL_get1_peer_certificate';
function SSL_get_peer_cert_chain(s: PSSL): Pstack_st_X509; cdecl;
external LIB_SSL name _PU + 'SSL_get_peer_cert_chain';
@@ -4817,7 +4820,7 @@ procedure EVP_MD_CTX_destroy(ctx: PEVP_MD_CTX); cdecl;
external LIB_CRYPTO name _PU + 'EVP_MD_CTX_free';
function EVP_PKEY_size(pkey: PEVP_PKEY): integer; cdecl;
- external LIB_CRYPTO name _PU + 'EVP_PKEY_size';
+ external LIB_CRYPTO name _PU + 'EVP_PKEY_get_size';
procedure EVP_PKEY_free(pkey: PEVP_PKEY); cdecl;
external LIB_CRYPTO name _PU + 'EVP_PKEY_free';
@@ -4998,8 +5001,8 @@ function X509_NAME_entry_count(name: PX509_NAME): integer; cdecl;
function X509_NAME_oneline(a: PX509_NAME; buf: PUtf8Char; size: integer): PUtf8Char; cdecl;
external LIB_CRYPTO name _PU + 'X509_NAME_oneline';
-function X509_NAME_hash(x: PX509_NAME): cardinal; cdecl;
- external LIB_CRYPTO name _PU + 'X509_NAME_hash';
+function X509_NAME_hash_ex(x: PX509_NAME): cardinal; cdecl;
+ external LIB_CRYPTO name _PU + 'X509_NAME_hash_ex';
function X509_NAME_cmp(a: PX509_NAME; b: PX509_NAME): integer; cdecl;
external LIB_CRYPTO name _PU + 'X509_NAME_cmp';
@@ -5478,10 +5481,10 @@ function EVP_MD_CTX_md(ctx: PEVP_MD_CTX): PEVP_MD; cdecl;
external LIB_CRYPTO name _PU + 'EVP_MD_CTX_md';
function EVP_MD_flags(md: PEVP_MD): cardinal; cdecl;
- external LIB_CRYPTO name _PU + 'EVP_MD_flags';
+ external LIB_CRYPTO name _PU + 'EVP_MD_get_flags';
function EVP_MD_size(md: PEVP_MD): integer; cdecl;
- external LIB_CRYPTO name _PU + 'EVP_MD_size';
+ external LIB_CRYPTO name _PU + 'EVP_MD_get_size';
function EVP_DigestInit_ex(ctx: PEVP_MD_CTX; typ: PEVP_MD; impl: PENGINE): integer; cdecl;
external LIB_CRYPTO name _PU + 'EVP_DigestInit_ex';
@@ -6306,7 +6309,7 @@ begin
if @self = nil then
result := 0
else
- result := X509_NAME_hash(@self);
+ result := X509_NAME_hash_ex(@self, nil, nil, nil);
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment