Browse Source

* Add crypto.h functions

Michaël Van Canneyt 3 years ago
parent
commit
e994bacbba
1 changed files with 363 additions and 113 deletions
  1. 363 113
      packages/gnutls/src/gnutls.pp

+ 363 - 113
packages/gnutls/src/gnutls.pp

@@ -773,6 +773,10 @@ const
   GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE = 1 shl 8;
   GNUTLS_PRIVKEY_FLAG_CA = 1 shl 9;
 
+  GNUTLS_RND_NONCE = 0;
+  GNUTLS_RND_RANDOM = 1;
+  GNUTLS_RND_KEY = 2;
+
 { Pointers to basic pascal types, inserted by h2pas conversion program.}
 Type
   PLongint  = ^Longint;
@@ -1352,11 +1356,142 @@ Type
   Tgnutls_openpgp_keyid_t = longint;
   Tgnutls_tpmkey_fmt_t = longint;
 
+
+  Papi_aead_cipher_hd_st  = ^api_aead_cipher_hd_st;
+  Papi_cipher_hd_st  = ^api_cipher_hd_st;
+  Pgnutls_aead_cipher_hd_t  = ^gnutls_aead_cipher_hd_t;
+  Pgnutls_cipher_hd_t  = ^gnutls_cipher_hd_t;
+  Pgnutls_hash_hd_t  = ^tgnutls_hash_hd_t;
+  Pgnutls_hmac_hd_t  = ^tgnutls_hmac_hd_t;
+  Pgnutls_rnd_level  = ^tgnutls_rnd_level;
+  Pgnutls_rnd_level_t  = ^tgnutls_rnd_level_t;
+  Phash_hd_st  = ^thash_hd_st;
+  Phmac_hd_st  = ^thmac_hd_st;
+
+  Tgnutls_cipher_hd_t = Papi_cipher_hd_st;
+  Tgnutls_aead_cipher_hd_t = Papi_aead_cipher_hd_st;
+  Tgnutls_hash_hd_t = Phash_hd_st;
+  Tgnutls_hmac_hd_t = Phmac_hd_st;
+  Tgnutls_rnd_level =  Longint;
+  Gnutls_aead_cipher_hd_t  = longint;
+  Gnutls_cipher_hd_t  = longint;
+
+  Tgnutls_rnd_level_t = Tgnutls_rnd_level;
+
+  Api_aead_cipher_hd_st = record end;
+  Api_cipher_hd_st = record end;
+  thash_hd_st = record end;
+  thmac_hd_st = record end;
+  gnutls_hash_hd_st = record end;
+  gnutls_hmac_hd_st = record end;
+
+  Tgnutls_cipher_init_func = function (para1:Tgnutls_cipher_algorithm_t; ctx:Ppointer; enc:longint):longint;cdecl;
+  Tgnutls_cipher_setkey_func = function (ctx:pointer; key:pointer; keysize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_setiv_func = function (ctx:pointer; iv:pointer; ivsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_getiv_func = function (ctx:pointer; iv:pointer; ivsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_encrypt_func = function (ctx:pointer; plain:pointer; plainsize:Tsize_t; encr:pointer; encrsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_decrypt_func = function (ctx:pointer; encr:pointer; encrsize:Tsize_t; plain:pointer; plainsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_auth_func = function (ctx:pointer; data:pointer; datasize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_tag_func = procedure (ctx:pointer; tag:pointer; tagsize:Tsize_t);cdecl;
+  Tgnutls_cipher_aead_encrypt_func = function (ctx:pointer; nonce:pointer; noncesize:Tsize_t; auth:pointer; authsize:Tsize_t;
+               tag_size:Tsize_t; plain:pointer; plainsize:Tsize_t; encr:pointer; encrsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_aead_decrypt_func = function (ctx:pointer; nonce:pointer; noncesize:Tsize_t; auth:pointer; authsize:Tsize_t;
+               tag_size:Tsize_t; encr:pointer; encrsize:Tsize_t; plain:pointer; plainsize:Tsize_t):longint;cdecl;
+  Tgnutls_cipher_deinit_func = procedure (ctx:pointer);cdecl;
+
+  Tgnutls_mac_init_func = function (para1:Tgnutls_mac_algorithm_t; ctx:Ppointer):longint;cdecl;
+  Tgnutls_mac_setkey_func = function (ctx:pointer; key:pointer; keysize:Tsize_t):longint;cdecl;
+  Tgnutls_mac_setnonce_func = function (ctx:pointer; nonce:pointer; noncesize:Tsize_t):longint;cdecl;
+  Tgnutls_mac_hash_func = function (ctx:pointer; text:pointer; textsize:Tsize_t):longint;cdecl;
+  Tgnutls_mac_output_func = function (src_ctx:pointer; digest:pointer; digestsize:Tsize_t):longint;cdecl;
+  Tgnutls_mac_deinit_func = procedure (ctx:pointer);cdecl;
+  Tgnutls_mac_fast_func = function (para1:Tgnutls_mac_algorithm_t; nonce:pointer; nonce_size:Tsize_t; key:pointer; keysize:Tsize_t;
+               text:pointer; textsize:Tsize_t; digest:pointer):longint;cdecl;
+  Pgnutls_mac_copy_func = ^Tgnutls_mac_copy_func;
+  Tgnutls_mac_copy_func = function (ctx:pointer):pointer;cdecl;
+
+  Tgnutls_digest_init_func = function (para1:Tgnutls_digest_algorithm_t; ctx:Ppointer):longint;cdecl;
+
+  Tgnutls_digest_hash_func = function (ctx:pointer; text:pointer; textsize:Tsize_t):longint;cdecl;
+  Tgnutls_digest_output_func = function (src_ctx:pointer; digest:pointer; digestsize:Tsize_t):longint;cdecl;
+  Tgnutls_digest_deinit_func = procedure (ctx:pointer);cdecl;
+  Tgnutls_digest_fast_func = function (para1:Tgnutls_digest_algorithm_t; text:pointer; textsize:Tsize_t; digest:pointer):longint;cdecl;
+  Pgnutls_digest_copy_func = ^Tgnutls_digest_copy_func;
+  Tgnutls_digest_copy_func = function (ctx:pointer):pointer;cdecl;
+
+var
+  gnutls_cipher_init : function(handle:Pgnutls_cipher_hd_t; cipher:Tgnutls_cipher_algorithm_t; key:Pgnutls_datum_t; iv:Pgnutls_datum_t):longint;cdecl;
+  gnutls_cipher_encrypt : function(handle:Tgnutls_cipher_hd_t; text:pointer; textlen:Tsize_t):longint;cdecl;
+  gnutls_cipher_decrypt : function(handle:Tgnutls_cipher_hd_t; ciphertext:pointer; ciphertextlen:Tsize_t):longint;cdecl;
+  gnutls_cipher_decrypt2 : function(handle:Tgnutls_cipher_hd_t; ciphertext:pointer; ciphertextlen:Tsize_t; text:pointer; textlen:Tsize_t):longint;cdecl;
+  gnutls_cipher_encrypt2 : function(handle:Tgnutls_cipher_hd_t; text:pointer; textlen:Tsize_t; ciphertext:pointer; ciphertextlen:Tsize_t):longint;cdecl;
+  gnutls_cipher_set_iv : procedure(handle:Tgnutls_cipher_hd_t; iv:pointer; ivlen:Tsize_t);cdecl;
+  gnutls_cipher_tag : function(handle:Tgnutls_cipher_hd_t; tag:pointer; tag_size:Tsize_t):longint;cdecl;
+  gnutls_cipher_add_auth : function(handle:Tgnutls_cipher_hd_t; text:pointer; text_size:Tsize_t):longint;cdecl;
+  gnutls_cipher_deinit : procedure(handle:Tgnutls_cipher_hd_t);cdecl;
+  gnutls_cipher_get_block_size : function(algorithm:Tgnutls_cipher_algorithm_t):dword;cdecl;
+  gnutls_cipher_get_iv_size : function(algorithm:Tgnutls_cipher_algorithm_t):dword;cdecl;
+  gnutls_cipher_get_tag_size : function(algorithm:Tgnutls_cipher_algorithm_t):dword;cdecl;
+  gnutls_aead_cipher_init : function(handle:Pgnutls_aead_cipher_hd_t; cipher:Tgnutls_cipher_algorithm_t; key:Pgnutls_datum_t):longint;cdecl;
+  gnutls_aead_cipher_decrypt : function(handle:Tgnutls_aead_cipher_hd_t; nonce:pointer; nonce_len:Tsize_t; auth:pointer; auth_len:Tsize_t;
+      tag_size:Tsize_t; ctext:pointer; ctext_len:Tsize_t; ptext:pointer; ptext_len:Psize_t):longint;cdecl;
+  gnutls_aead_cipher_encrypt : function(handle:Tgnutls_aead_cipher_hd_t; nonce:pointer; nonce_len:Tsize_t; auth:pointer; auth_len:Tsize_t;
+      tag_size:Tsize_t; ptext:pointer; ptext_len:Tsize_t; ctext:pointer; ctext_len:Psize_t):longint;cdecl;
+  gnutls_aead_cipher_encryptv : function(handle:Tgnutls_aead_cipher_hd_t; nonce:pointer; nonce_len:Tsize_t; auth_iov:Pgiovec_t; auth_iovcnt:longint;
+      tag_size:Tsize_t; iov:Pgiovec_t; iovcnt:longint; ctext:pointer; ctext_len:Psize_t):longint;cdecl;
+  gnutls_aead_cipher_encryptv2 : function(handle:Tgnutls_aead_cipher_hd_t; nonce:pointer; nonce_len:Tsize_t; auth_iov:Pgiovec_t; auth_iovcnt:longint;
+      iov:Pgiovec_t; iovcnt:longint; tag:pointer; tag_size:Psize_t):longint;cdecl;
+  gnutls_aead_cipher_decryptv2 : function(handle:Tgnutls_aead_cipher_hd_t; nonce:pointer; nonce_len:Tsize_t; auth_iov:Pgiovec_t; auth_iovcnt:longint;
+      iov:Pgiovec_t; iovcnt:longint; tag:pointer; tag_size:Tsize_t):longint;cdecl;
+  gnutls_aead_cipher_deinit : procedure(handle:Tgnutls_aead_cipher_hd_t);cdecl;
+  gnutls_mac_get_nonce_size : function(algorithm:Tgnutls_mac_algorithm_t):Tsize_t;cdecl;
+  gnutls_hmac_init : function(dig:Pgnutls_hmac_hd_t; algorithm:Tgnutls_mac_algorithm_t; key:pointer; keylen:Tsize_t):longint;cdecl;
+  gnutls_hmac_set_nonce : procedure(handle:Tgnutls_hmac_hd_t; nonce:pointer; nonce_len:Tsize_t);cdecl;
+  gnutls_hmac : function(handle:Tgnutls_hmac_hd_t; text:pointer; textlen:Tsize_t):longint;cdecl;
+  gnutls_hmac_output : procedure(handle:Tgnutls_hmac_hd_t; digest:pointer);cdecl;
+  gnutls_hmac_deinit : procedure(handle:Tgnutls_hmac_hd_t; digest:pointer);cdecl;
+  gnutls_hmac_get_len : function(algorithm:Tgnutls_mac_algorithm_t):dword;cdecl;
+  gnutls_hmac_get_key_size : function(algorithm:Tgnutls_mac_algorithm_t):dword;cdecl;
+  gnutls_hmac_fast : function(algorithm:Tgnutls_mac_algorithm_t; key:pointer; keylen:Tsize_t; text:pointer; textlen:Tsize_t;
+      digest:pointer):longint;cdecl;
+  gnutls_hmac_copy : function(handle:Tgnutls_hmac_hd_t):Tgnutls_hmac_hd_t;cdecl;
+  gnutls_hash_init : function(dig:Pgnutls_hash_hd_t; algorithm:Tgnutls_digest_algorithm_t):longint;cdecl;
+  gnutls_hash : function(handle:Tgnutls_hash_hd_t; text:pointer; textlen:Tsize_t):longint;cdecl;
+  gnutls_hash_output : procedure(handle:Tgnutls_hash_hd_t; digest:pointer);cdecl;
+  gnutls_hash_deinit : procedure(handle:Tgnutls_hash_hd_t; digest:pointer);cdecl;
+  gnutls_hash_get_len : function(algorithm:Tgnutls_digest_algorithm_t):dword;cdecl;
+  gnutls_hash_fast : function(algorithm:Tgnutls_digest_algorithm_t; text:pointer; textlen:Tsize_t; digest:pointer):longint;cdecl;
+  gnutls_hash_copy : function(handle:Tgnutls_hash_hd_t):Tgnutls_hash_hd_t;cdecl;
+  gnutls_hkdf_extract : function(mac:Tgnutls_mac_algorithm_t; key:Pgnutls_datum_t; salt:Pgnutls_datum_t; output:pointer):longint;cdecl;
+  gnutls_hkdf_expand : function(mac:Tgnutls_mac_algorithm_t; key:Pgnutls_datum_t; info:Pgnutls_datum_t; output:pointer; length:Tsize_t):longint;cdecl;
+  gnutls_pbkdf2 : function(mac:Tgnutls_mac_algorithm_t; key:Pgnutls_datum_t; salt:Pgnutls_datum_t; iter_count:dword; output:pointer;
+      length:Tsize_t):longint;cdecl;
+
+  gnutls_rnd : function(level:Tgnutls_rnd_level_t; data:pointer; len:Tsize_t):longint;cdecl;
+  gnutls_rnd_refresh : procedure;cdecl;
+
+  gnutls_crypto_register_cipher : function(algorithm:Tgnutls_cipher_algorithm_t; priority:longint; init:Tgnutls_cipher_init_func; setkey:Tgnutls_cipher_setkey_func; setiv:Tgnutls_cipher_setiv_func;
+      encrypt:Tgnutls_cipher_encrypt_func; decrypt:Tgnutls_cipher_decrypt_func; deinit:Tgnutls_cipher_deinit_func):longint;cdecl;
+  gnutls_crypto_register_aead_cipher : function(algorithm:Tgnutls_cipher_algorithm_t; priority:longint; init:Tgnutls_cipher_init_func; setkey:Tgnutls_cipher_setkey_func; aead_encrypt:Tgnutls_cipher_aead_encrypt_func;
+      aead_decrypt:Tgnutls_cipher_aead_decrypt_func; deinit:Tgnutls_cipher_deinit_func):longint;cdecl;
+
+  gnutls_crypto_register_mac : function(mac:Tgnutls_mac_algorithm_t; priority:longint; init:Tgnutls_mac_init_func; setkey:Tgnutls_mac_setkey_func; setnonce:Tgnutls_mac_setnonce_func;
+      hash:Tgnutls_mac_hash_func; output:Tgnutls_mac_output_func; deinit:Tgnutls_mac_deinit_func; hash_fast:Tgnutls_mac_fast_func):longint;cdecl;
+  gnutls_crypto_register_digest : function(digest:Tgnutls_digest_algorithm_t; priority:longint; init:Tgnutls_digest_init_func; hash:Tgnutls_digest_hash_func; output:Tgnutls_digest_output_func;
+      deinit:Tgnutls_digest_deinit_func; hash_fast:Tgnutls_digest_fast_func):longint;cdecl;
+  gnutls_encode_ber_digest_info : function(hash:Tgnutls_digest_algorithm_t; digest:Pgnutls_datum_t; output:Pgnutls_datum_t):longint;cdecl;
+  gnutls_decode_ber_digest_info : function(info:Pgnutls_datum_t; hash:Pgnutls_digest_algorithm_t; digest:Pbyte; digest_size:Pdword):longint;cdecl;
+  gnutls_decode_rs_value : function(sig_value:Pgnutls_datum_t; r:Pgnutls_datum_t; s:Pgnutls_datum_t):longint;cdecl;
+  gnutls_encode_rs_value : function(sig_value:Pgnutls_datum_t; r:Pgnutls_datum_t; s:Pgnutls_datum_t):longint;cdecl;
+  gnutls_encode_gost_rs_value : function(sig_value:Pgnutls_datum_t; r:Pgnutls_datum_t; s:Pgnutls_datum_t):longint;cdecl;
+  gnutls_decode_gost_rs_value : function(sig_value:Pgnutls_datum_t; r:Pgnutls_datum_t; s:Pgnutls_datum_t):longint;cdecl;
+
+
 Var
-  gnutls_malloc : Tgnutls_alloc_function;cvar;external;
-  gnutls_realloc : Tgnutls_realloc_function;cvar;external;
-  gnutls_calloc : Tgnutls_calloc_function;cvar;external;
-  gnutls_free : Tgnutls_free_function;cvar;external;
+  gnutls_malloc : Tgnutls_alloc_function;
+  gnutls_realloc : Tgnutls_realloc_function;
+  gnutls_calloc : Tgnutls_calloc_function;
+  gnutls_free : Tgnutls_free_function;
   gnutls_strdup : function (para1:Pchar):Pchar;cvar;external;
   gnutls_srp_4096_group_prime : Tgnutls_datum_t;cvar;external;
   gnutls_srp_4096_group_generator : Tgnutls_datum_t;cvar;external;
@@ -2177,6 +2312,7 @@ var
   gnutls_certificate_set_key : function(res:Tgnutls_certificate_credentials_t; names:PPchar; names_size:longint; pcert_list:Pgnutls_pcert_st; pcert_list_size:longint;      key:Tgnutls_privkey_t):longint;cdecl;
   gnutls_pubkey_print : function(pubkey:Tgnutls_pubkey_t; format:Tgnutls_certificate_print_formats_t; aout:Pgnutls_datum_t):longint;cdecl;
 
+
 function GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION : Ttime_t;
 function gnutls_x509_crl_get_certificate_count(crl:Tgnutls_x509_crl_t)  : cint;
 function gnutls_x509_crl_get_certificate (crl:Tgnutls_x509_crl_t; indx:longint; serial:Pbyte; serial_size:Psize_t; t:Ptime_t):longint;
@@ -2985,6 +3121,64 @@ begin
   gnutls_certificate_set_retrieve_function3:=nil;
   gnutls_certificate_set_key:=nil;
   gnutls_pubkey_print:=nil;
+  gnutls_decode_rs_value:=Nil;
+  gnutls_free:=nil;
+  gnutls_malloc:=nil;
+  gnutls_realloc:=nil;
+  gnutls_calloc:=nil;
+
+  gnutls_cipher_init:=nil;
+  gnutls_cipher_encrypt:=nil;
+  gnutls_cipher_decrypt:=nil;
+  gnutls_cipher_decrypt2:=nil;
+  gnutls_cipher_encrypt2:=nil;
+  gnutls_cipher_set_iv:=nil;
+  gnutls_cipher_tag:=nil;
+  gnutls_cipher_add_auth:=nil;
+  gnutls_cipher_deinit:=nil;
+  gnutls_cipher_get_block_size:=nil;
+  gnutls_cipher_get_iv_size:=nil;
+  gnutls_cipher_get_tag_size:=nil;
+  gnutls_aead_cipher_init:=nil;
+  gnutls_aead_cipher_decrypt:=nil;
+  gnutls_aead_cipher_encrypt:=nil;
+  gnutls_aead_cipher_encryptv:=nil;
+  gnutls_aead_cipher_encryptv2:=nil;
+  gnutls_aead_cipher_decryptv2:=nil;
+  gnutls_aead_cipher_deinit:=nil;
+  gnutls_mac_get_nonce_size:=nil;
+  gnutls_hmac_init:=nil;
+  gnutls_hmac_set_nonce:=nil;
+  gnutls_hmac:=nil;
+  gnutls_hmac_output:=nil;
+  gnutls_hmac_deinit:=nil;
+  gnutls_hmac_get_len:=nil;
+  gnutls_hmac_get_key_size:=nil;
+  gnutls_hmac_fast:=nil;
+  gnutls_hmac_copy:=nil;
+  gnutls_hash_init:=nil;
+  gnutls_hash:=nil;
+  gnutls_hash_output:=nil;
+  gnutls_hash_deinit:=nil;
+  gnutls_hash_get_len:=nil;
+  gnutls_hash_fast:=nil;
+  gnutls_hash_copy:=nil;
+  gnutls_hkdf_extract:=nil;
+  gnutls_hkdf_expand:=nil;
+  gnutls_pbkdf2:=nil;
+  gnutls_rnd:=nil;
+  gnutls_rnd_refresh:=nil;
+  gnutls_crypto_register_cipher:=nil;
+  gnutls_crypto_register_aead_cipher:=nil;
+  gnutls_crypto_register_mac:=nil;
+  gnutls_crypto_register_digest:=nil;
+  gnutls_encode_ber_digest_info:=nil;
+  gnutls_decode_ber_digest_info:=nil;
+  gnutls_decode_rs_value:=nil;
+  gnutls_encode_rs_value:=nil;
+  gnutls_encode_gost_rs_value:=nil;
+  gnutls_decode_gost_rs_value:=nil;
+
 end;
 
 
@@ -3653,116 +3847,172 @@ begin
   pointer(gnutls_pkcs7_get_crt_raw2):=GPA('gnutls_pkcs7_get_crt_raw2');
   pointer(gnutls_pkcs7_get_crl_raw2):=GPA('gnutls_pkcs7_get_crl_raw2');
   pointer(gnutls_pkcs7_print):=GPA('gnutls_pkcs7_print');
-  pointer(gnutls_pubkey_init):=GetProcAddress(hlib,'gnutls_pubkey_init');
-
-  pointer(gnutls_pubkey_deinit):=GetProcAddress(hlib,'gnutls_pubkey_deinit');
-  pointer(gnutls_pubkey_verify_params):=GetProcAddress(hlib,'gnutls_pubkey_verify_params');
-  pointer(gnutls_pubkey_set_pin_function):=GetProcAddress(hlib,'gnutls_pubkey_set_pin_function');
-  pointer(gnutls_pubkey_get_pk_algorithm):=GetProcAddress(hlib,'gnutls_pubkey_get_pk_algorithm');
-  pointer(gnutls_pubkey_set_spki):=GetProcAddress(hlib,'gnutls_pubkey_set_spki');
-  pointer(gnutls_pubkey_get_spki):=GetProcAddress(hlib,'gnutls_pubkey_get_spki');
-  pointer(gnutls_pubkey_import_x509):=GetProcAddress(hlib,'gnutls_pubkey_import_x509');
-  pointer(gnutls_pubkey_import_x509_crq):=GetProcAddress(hlib,'gnutls_pubkey_import_x509_crq');
-  pointer(gnutls_pubkey_import_pkcs11):=GetProcAddress(hlib,'gnutls_pubkey_import_pkcs11');
-  pointer(gnutls_pubkey_import_openpgp):=GetProcAddress(hlib,'gnutls_pubkey_import_openpgp');
-  pointer(gnutls_pubkey_import_openpgp_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_openpgp_raw');
-  pointer(gnutls_pubkey_import_x509_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_x509_raw');
-  pointer(gnutls_pubkey_import_privkey):=GetProcAddress(hlib,'gnutls_pubkey_import_privkey');
-  pointer(gnutls_pubkey_import_tpm_url):=GetProcAddress(hlib,'gnutls_pubkey_import_tpm_url');
-  pointer(gnutls_pubkey_import_url):=GetProcAddress(hlib,'gnutls_pubkey_import_url');
-  pointer(gnutls_pubkey_import_tpm_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_tpm_raw');
-  pointer(gnutls_pubkey_get_preferred_hash_algorithm):=GetProcAddress(hlib,'gnutls_pubkey_get_preferred_hash_algorithm');
-  pointer(gnutls_pubkey_export_rsa_raw):=GetProcAddress(hlib,'gnutls_pubkey_export_rsa_raw');
-  pointer(gnutls_pubkey_export_rsa_raw2):=GetProcAddress(hlib,'gnutls_pubkey_export_rsa_raw2');
-  pointer(gnutls_pubkey_export_dsa_raw):=GetProcAddress(hlib,'gnutls_pubkey_export_dsa_raw');
-  pointer(gnutls_pubkey_export_dsa_raw2):=GetProcAddress(hlib,'gnutls_pubkey_export_dsa_raw2');
-  pointer(gnutls_pubkey_export_ecc_raw2):=GetProcAddress(hlib,'gnutls_pubkey_export_ecc_raw2');
-  pointer(gnutls_pubkey_export_gost_raw2):=GetProcAddress(hlib,'gnutls_pubkey_export_gost_raw2');
-  pointer(gnutls_pubkey_export_ecc_raw):=GetProcAddress(hlib,'gnutls_pubkey_export_ecc_raw');
-  pointer(gnutls_pubkey_export_ecc_x962):=GetProcAddress(hlib,'gnutls_pubkey_export_ecc_x962');
-  pointer(gnutls_pubkey_export):=GetProcAddress(hlib,'gnutls_pubkey_export');
-  pointer(gnutls_pubkey_export2):=GetProcAddress(hlib,'gnutls_pubkey_export2');
-  pointer(gnutls_pubkey_get_key_id):=GetProcAddress(hlib,'gnutls_pubkey_get_key_id');
-  pointer(gnutls_pubkey_get_openpgp_key_id):=GetProcAddress(hlib,'gnutls_pubkey_get_openpgp_key_id');
-  pointer(gnutls_pubkey_get_key_usage):=GetProcAddress(hlib,'gnutls_pubkey_get_key_usage');
-  pointer(gnutls_pubkey_set_key_usage):=GetProcAddress(hlib,'gnutls_pubkey_set_key_usage');
-  pointer(gnutls_pubkey_import):=GetProcAddress(hlib,'gnutls_pubkey_import');
-  pointer(gnutls_pubkey_import_dsa_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_dsa_raw');
-  pointer(gnutls_pubkey_import_rsa_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_rsa_raw');
-  pointer(gnutls_pubkey_import_ecc_x962):=GetProcAddress(hlib,'gnutls_pubkey_import_ecc_x962');
-  pointer(gnutls_pubkey_import_ecc_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_ecc_raw');
-  pointer(gnutls_pubkey_import_gost_raw):=GetProcAddress(hlib,'gnutls_pubkey_import_gost_raw');
-  pointer(gnutls_pubkey_encrypt_data):=GetProcAddress(hlib,'gnutls_pubkey_encrypt_data');
-  pointer(gnutls_x509_crt_set_pubkey):=GetProcAddress(hlib,'gnutls_x509_crt_set_pubkey');
-  pointer(gnutls_x509_crq_set_pubkey):=GetProcAddress(hlib,'gnutls_x509_crq_set_pubkey');
-  pointer(gnutls_pubkey_verify_hash2):=GetProcAddress(hlib,'gnutls_pubkey_verify_hash2');
-  pointer(gnutls_pubkey_verify_data2):=GetProcAddress(hlib,'gnutls_pubkey_verify_data2');
-  pointer(gnutls_privkey_init):=GetProcAddress(hlib,'gnutls_privkey_init');
-  pointer(gnutls_privkey_deinit):=GetProcAddress(hlib,'gnutls_privkey_deinit');
-  pointer(gnutls_privkey_generate):=GetProcAddress(hlib,'gnutls_privkey_generate');
-  pointer(gnutls_privkey_generate2):=GetProcAddress(hlib,'gnutls_privkey_generate2');
-  pointer(gnutls_privkey_set_spki):=GetProcAddress(hlib,'gnutls_privkey_set_spki');
-  pointer(gnutls_privkey_get_spki):=GetProcAddress(hlib,'gnutls_privkey_get_spki');
-  pointer(gnutls_privkey_verify_seed):=GetProcAddress(hlib,'gnutls_privkey_verify_seed');
-  pointer(gnutls_privkey_get_seed):=GetProcAddress(hlib,'gnutls_privkey_get_seed');
-  pointer(gnutls_privkey_verify_params):=GetProcAddress(hlib,'gnutls_privkey_verify_params');
-  pointer(gnutls_privkey_set_flags):=GetProcAddress(hlib,'gnutls_privkey_set_flags');
-  pointer(gnutls_privkey_set_pin_function):=GetProcAddress(hlib,'gnutls_privkey_set_pin_function');
-  pointer(gnutls_privkey_get_pk_algorithm):=GetProcAddress(hlib,'gnutls_privkey_get_pk_algorithm');
-  pointer(gnutls_privkey_get_type):=GetProcAddress(hlib,'gnutls_privkey_get_type');
-  pointer(gnutls_privkey_status):=GetProcAddress(hlib,'gnutls_privkey_status');
-  pointer(gnutls_privkey_import_pkcs11):=GetProcAddress(hlib,'gnutls_privkey_import_pkcs11');
-  pointer(gnutls_privkey_import_x509):=GetProcAddress(hlib,'gnutls_privkey_import_x509');
-  pointer(gnutls_privkey_import_openpgp):=GetProcAddress(hlib,'gnutls_privkey_import_openpgp');
-  pointer(gnutls_privkey_export_x509):=GetProcAddress(hlib,'gnutls_privkey_export_x509');
-  pointer(gnutls_privkey_export_openpgp):=GetProcAddress(hlib,'gnutls_privkey_export_openpgp');
-  pointer(gnutls_privkey_export_pkcs11):=GetProcAddress(hlib,'gnutls_privkey_export_pkcs11');
-  pointer(gnutls_privkey_import_openpgp_raw):=GetProcAddress(hlib,'gnutls_privkey_import_openpgp_raw');
-  pointer(gnutls_privkey_import_x509_raw):=GetProcAddress(hlib,'gnutls_privkey_import_x509_raw');
-  pointer(gnutls_privkey_import_tpm_raw):=GetProcAddress(hlib,'gnutls_privkey_import_tpm_raw');
-  pointer(gnutls_privkey_import_tpm_url):=GetProcAddress(hlib,'gnutls_privkey_import_tpm_url');
-  pointer(gnutls_privkey_import_url):=GetProcAddress(hlib,'gnutls_privkey_import_url');
-  pointer(gnutls_privkey_import_ext):=GetProcAddress(hlib,'gnutls_privkey_import_ext');
-  pointer(gnutls_privkey_import_ext2):=GetProcAddress(hlib,'gnutls_privkey_import_ext2');
-  pointer(gnutls_privkey_import_ext3):=GetProcAddress(hlib,'gnutls_privkey_import_ext3');
-  pointer(gnutls_privkey_import_ext4):=GetProcAddress(hlib,'gnutls_privkey_import_ext4');
-  pointer(gnutls_privkey_import_dsa_raw):=GetProcAddress(hlib,'gnutls_privkey_import_dsa_raw');
-  pointer(gnutls_privkey_import_rsa_raw):=GetProcAddress(hlib,'gnutls_privkey_import_rsa_raw');
-  pointer(gnutls_privkey_import_ecc_raw):=GetProcAddress(hlib,'gnutls_privkey_import_ecc_raw');
-  pointer(gnutls_privkey_import_gost_raw):=GetProcAddress(hlib,'gnutls_privkey_import_gost_raw');
-  pointer(gnutls_privkey_sign_data):=GetProcAddress(hlib,'gnutls_privkey_sign_data');
-  pointer(gnutls_privkey_sign_data2):=GetProcAddress(hlib,'gnutls_privkey_sign_data2');
-  pointer(gnutls_privkey_sign_hash):=GetProcAddress(hlib,'gnutls_privkey_sign_hash');
-  pointer(gnutls_privkey_sign_hash2):=GetProcAddress(hlib,'gnutls_privkey_sign_hash2');
-  pointer(gnutls_privkey_decrypt_data):=GetProcAddress(hlib,'gnutls_privkey_decrypt_data');
-  pointer(gnutls_privkey_decrypt_data2):=GetProcAddress(hlib,'gnutls_privkey_decrypt_data2');
-  pointer(gnutls_privkey_export_rsa_raw):=GetProcAddress(hlib,'gnutls_privkey_export_rsa_raw');
-  pointer(gnutls_privkey_export_rsa_raw2):=GetProcAddress(hlib,'gnutls_privkey_export_rsa_raw2');
-  pointer(gnutls_privkey_export_dsa_raw):=GetProcAddress(hlib,'gnutls_privkey_export_dsa_raw');
-  pointer(gnutls_privkey_export_dsa_raw2):=GetProcAddress(hlib,'gnutls_privkey_export_dsa_raw2');
-  pointer(gnutls_privkey_export_ecc_raw):=GetProcAddress(hlib,'gnutls_privkey_export_ecc_raw');
-  pointer(gnutls_privkey_export_ecc_raw2):=GetProcAddress(hlib,'gnutls_privkey_export_ecc_raw2');
-  pointer(gnutls_privkey_export_gost_raw2):=GetProcAddress(hlib,'gnutls_privkey_export_gost_raw2');
-  pointer(gnutls_x509_crt_privkey_sign):=GetProcAddress(hlib,'gnutls_x509_crt_privkey_sign');
-  pointer(gnutls_x509_crl_privkey_sign):=GetProcAddress(hlib,'gnutls_x509_crl_privkey_sign');
-  pointer(gnutls_x509_crq_privkey_sign):=GetProcAddress(hlib,'gnutls_x509_crq_privkey_sign');
-  pointer(gnutls_pcert_import_x509):=GetProcAddress(hlib,'gnutls_pcert_import_x509');
-  pointer(gnutls_pcert_import_x509_list):=GetProcAddress(hlib,'gnutls_pcert_import_x509_list');
-  pointer(gnutls_pcert_export_x509):=GetProcAddress(hlib,'gnutls_pcert_export_x509');
-  pointer(gnutls_pcert_list_import_x509_raw):=GetProcAddress(hlib,'gnutls_pcert_list_import_x509_raw');
-  pointer(gnutls_pcert_list_import_x509_file):=GetProcAddress(hlib,'gnutls_pcert_list_import_x509_file');
-  pointer(gnutls_pcert_import_x509_raw):=GetProcAddress(hlib,'gnutls_pcert_import_x509_raw');
-  pointer(gnutls_pcert_import_openpgp_raw):=GetProcAddress(hlib,'gnutls_pcert_import_openpgp_raw');
-  pointer(gnutls_pcert_import_openpgp):=GetProcAddress(hlib,'gnutls_pcert_import_openpgp');
-  pointer(gnutls_pcert_export_openpgp):=GetProcAddress(hlib,'gnutls_pcert_export_openpgp');
-  pointer(gnutls_pcert_deinit):=GetProcAddress(hlib,'gnutls_pcert_deinit');
-  pointer(gnutls_pcert_import_rawpk):=GetProcAddress(hlib,'gnutls_pcert_import_rawpk');
-  pointer(gnutls_pcert_import_rawpk_raw):=GetProcAddress(hlib,'gnutls_pcert_import_rawpk_raw');
-  pointer(gnutls_certificate_set_retrieve_function2):=GetProcAddress(hlib,'gnutls_certificate_set_retrieve_function2');
-  pointer(gnutls_certificate_set_retrieve_function3):=GetProcAddress(hlib,'gnutls_certificate_set_retrieve_function3');
-  pointer(gnutls_certificate_set_key):=GetProcAddress(hlib,'gnutls_certificate_set_key');
-  pointer(gnutls_pubkey_print):=GetProcAddress(hlib,'gnutls_pubkey_print');
 
+  pointer(gnutls_pubkey_init):=GPA('gnutls_pubkey_init');
+  pointer(gnutls_pubkey_deinit):=GPA('gnutls_pubkey_deinit');
+  pointer(gnutls_pubkey_verify_params):=GPA('gnutls_pubkey_verify_params');
+  pointer(gnutls_pubkey_set_pin_function):=GPA('gnutls_pubkey_set_pin_function');
+  pointer(gnutls_pubkey_get_pk_algorithm):=GPA('gnutls_pubkey_get_pk_algorithm');
+  pointer(gnutls_pubkey_set_spki):=GPA('gnutls_pubkey_set_spki');
+  pointer(gnutls_pubkey_get_spki):=GPA('gnutls_pubkey_get_spki');
+  pointer(gnutls_pubkey_import_x509):=GPA('gnutls_pubkey_import_x509');
+  pointer(gnutls_pubkey_import_x509_crq):=GPA('gnutls_pubkey_import_x509_crq');
+  pointer(gnutls_pubkey_import_pkcs11):=GPA('gnutls_pubkey_import_pkcs11');
+  pointer(gnutls_pubkey_import_openpgp):=GPA('gnutls_pubkey_import_openpgp');
+  pointer(gnutls_pubkey_import_openpgp_raw):=GPA('gnutls_pubkey_import_openpgp_raw');
+  pointer(gnutls_pubkey_import_x509_raw):=GPA('gnutls_pubkey_import_x509_raw');
+  pointer(gnutls_pubkey_import_privkey):=GPA('gnutls_pubkey_import_privkey');
+  pointer(gnutls_pubkey_import_tpm_url):=GPA('gnutls_pubkey_import_tpm_url');
+  pointer(gnutls_pubkey_import_url):=GPA('gnutls_pubkey_import_url');
+  pointer(gnutls_pubkey_import_tpm_raw):=GPA('gnutls_pubkey_import_tpm_raw');
+  pointer(gnutls_pubkey_get_preferred_hash_algorithm):=GPA('gnutls_pubkey_get_preferred_hash_algorithm');
+  pointer(gnutls_pubkey_export_rsa_raw):=GPA('gnutls_pubkey_export_rsa_raw');
+  pointer(gnutls_pubkey_export_rsa_raw2):=GPA('gnutls_pubkey_export_rsa_raw2');
+  pointer(gnutls_pubkey_export_dsa_raw):=GPA('gnutls_pubkey_export_dsa_raw');
+  pointer(gnutls_pubkey_export_dsa_raw2):=GPA('gnutls_pubkey_export_dsa_raw2');
+  pointer(gnutls_pubkey_export_ecc_raw2):=GPA('gnutls_pubkey_export_ecc_raw2');
+  pointer(gnutls_pubkey_export_gost_raw2):=GPA('gnutls_pubkey_export_gost_raw2');
+  pointer(gnutls_pubkey_export_ecc_raw):=GPA('gnutls_pubkey_export_ecc_raw');
+  pointer(gnutls_pubkey_export_ecc_x962):=GPA('gnutls_pubkey_export_ecc_x962');
+  pointer(gnutls_pubkey_export):=GPA('gnutls_pubkey_export');
+  pointer(gnutls_pubkey_export2):=GPA('gnutls_pubkey_export2');
+  pointer(gnutls_pubkey_get_key_id):=GPA('gnutls_pubkey_get_key_id');
+  pointer(gnutls_pubkey_get_openpgp_key_id):=GPA('gnutls_pubkey_get_openpgp_key_id');
+  pointer(gnutls_pubkey_get_key_usage):=GPA('gnutls_pubkey_get_key_usage');
+  pointer(gnutls_pubkey_set_key_usage):=GPA('gnutls_pubkey_set_key_usage');
+  pointer(gnutls_pubkey_import):=GPA('gnutls_pubkey_import');
+  pointer(gnutls_pubkey_import_dsa_raw):=GPA('gnutls_pubkey_import_dsa_raw');
+  pointer(gnutls_pubkey_import_rsa_raw):=GPA('gnutls_pubkey_import_rsa_raw');
+  pointer(gnutls_pubkey_import_ecc_x962):=GPA('gnutls_pubkey_import_ecc_x962');
+  pointer(gnutls_pubkey_import_ecc_raw):=GPA('gnutls_pubkey_import_ecc_raw');
+  pointer(gnutls_pubkey_import_gost_raw):=GPA('gnutls_pubkey_import_gost_raw');
+  pointer(gnutls_pubkey_encrypt_data):=GPA('gnutls_pubkey_encrypt_data');
+  pointer(gnutls_x509_crt_set_pubkey):=GPA('gnutls_x509_crt_set_pubkey');
+  pointer(gnutls_x509_crq_set_pubkey):=GPA('gnutls_x509_crq_set_pubkey');
+  pointer(gnutls_pubkey_verify_hash2):=GPA('gnutls_pubkey_verify_hash2');
+  pointer(gnutls_pubkey_verify_data2):=GPA('gnutls_pubkey_verify_data2');
+  pointer(gnutls_privkey_init):=GPA('gnutls_privkey_init');
+  pointer(gnutls_privkey_deinit):=GPA('gnutls_privkey_deinit');
+  pointer(gnutls_privkey_generate):=GPA('gnutls_privkey_generate');
+  pointer(gnutls_privkey_generate2):=GPA('gnutls_privkey_generate2');
+  pointer(gnutls_privkey_set_spki):=GPA('gnutls_privkey_set_spki');
+  pointer(gnutls_privkey_get_spki):=GPA('gnutls_privkey_get_spki');
+  pointer(gnutls_privkey_verify_seed):=GPA('gnutls_privkey_verify_seed');
+  pointer(gnutls_privkey_get_seed):=GPA('gnutls_privkey_get_seed');
+  pointer(gnutls_privkey_verify_params):=GPA('gnutls_privkey_verify_params');
+  pointer(gnutls_privkey_set_flags):=GPA('gnutls_privkey_set_flags');
+  pointer(gnutls_privkey_set_pin_function):=GPA('gnutls_privkey_set_pin_function');
+  pointer(gnutls_privkey_get_pk_algorithm):=GPA('gnutls_privkey_get_pk_algorithm');
+  pointer(gnutls_privkey_get_type):=GPA('gnutls_privkey_get_type');
+  pointer(gnutls_privkey_status):=GPA('gnutls_privkey_status');
+  pointer(gnutls_privkey_import_pkcs11):=GPA('gnutls_privkey_import_pkcs11');
+  pointer(gnutls_privkey_import_x509):=GPA('gnutls_privkey_import_x509');
+  pointer(gnutls_privkey_import_openpgp):=GPA('gnutls_privkey_import_openpgp');
+  pointer(gnutls_privkey_export_x509):=GPA('gnutls_privkey_export_x509');
+  pointer(gnutls_privkey_export_openpgp):=GPA('gnutls_privkey_export_openpgp');
+  pointer(gnutls_privkey_export_pkcs11):=GPA('gnutls_privkey_export_pkcs11');
+  pointer(gnutls_privkey_import_openpgp_raw):=GPA('gnutls_privkey_import_openpgp_raw');
+  pointer(gnutls_privkey_import_x509_raw):=GPA('gnutls_privkey_import_x509_raw');
+  pointer(gnutls_privkey_import_tpm_raw):=GPA('gnutls_privkey_import_tpm_raw');
+  pointer(gnutls_privkey_import_tpm_url):=GPA('gnutls_privkey_import_tpm_url');
+  pointer(gnutls_privkey_import_url):=GPA('gnutls_privkey_import_url');
+  pointer(gnutls_privkey_import_ext):=GPA('gnutls_privkey_import_ext');
+  pointer(gnutls_privkey_import_ext2):=GPA('gnutls_privkey_import_ext2');
+  pointer(gnutls_privkey_import_ext3):=GPA('gnutls_privkey_import_ext3');
+  pointer(gnutls_privkey_import_ext4):=GPA('gnutls_privkey_import_ext4');
+  pointer(gnutls_privkey_import_dsa_raw):=GPA('gnutls_privkey_import_dsa_raw');
+  pointer(gnutls_privkey_import_rsa_raw):=GPA('gnutls_privkey_import_rsa_raw');
+  pointer(gnutls_privkey_import_ecc_raw):=GPA('gnutls_privkey_import_ecc_raw');
+  pointer(gnutls_privkey_import_gost_raw):=GPA('gnutls_privkey_import_gost_raw');
+  pointer(gnutls_privkey_sign_data):=GPA('gnutls_privkey_sign_data');
+  pointer(gnutls_privkey_sign_data2):=GPA('gnutls_privkey_sign_data2');
+  pointer(gnutls_privkey_sign_hash):=GPA('gnutls_privkey_sign_hash');
+  pointer(gnutls_privkey_sign_hash2):=GPA('gnutls_privkey_sign_hash2');
+  pointer(gnutls_privkey_decrypt_data):=GPA('gnutls_privkey_decrypt_data');
+  pointer(gnutls_privkey_decrypt_data2):=GPA('gnutls_privkey_decrypt_data2');
+  pointer(gnutls_privkey_export_rsa_raw):=GPA('gnutls_privkey_export_rsa_raw');
+  pointer(gnutls_privkey_export_rsa_raw2):=GPA('gnutls_privkey_export_rsa_raw2');
+  pointer(gnutls_privkey_export_dsa_raw):=GPA('gnutls_privkey_export_dsa_raw');
+  pointer(gnutls_privkey_export_dsa_raw2):=GPA('gnutls_privkey_export_dsa_raw2');
+  pointer(gnutls_privkey_export_ecc_raw):=GPA('gnutls_privkey_export_ecc_raw');
+  pointer(gnutls_privkey_export_ecc_raw2):=GPA('gnutls_privkey_export_ecc_raw2');
+  pointer(gnutls_privkey_export_gost_raw2):=GPA('gnutls_privkey_export_gost_raw2');
+  pointer(gnutls_x509_crt_privkey_sign):=GPA('gnutls_x509_crt_privkey_sign');
+  pointer(gnutls_x509_crl_privkey_sign):=GPA('gnutls_x509_crl_privkey_sign');
+  pointer(gnutls_x509_crq_privkey_sign):=GPA('gnutls_x509_crq_privkey_sign');
+  pointer(gnutls_pcert_import_x509):=GPA('gnutls_pcert_import_x509');
+  pointer(gnutls_pcert_import_x509_list):=GPA('gnutls_pcert_import_x509_list');
+  pointer(gnutls_pcert_export_x509):=GPA('gnutls_pcert_export_x509');
+  pointer(gnutls_pcert_list_import_x509_raw):=GPA('gnutls_pcert_list_import_x509_raw');
+  pointer(gnutls_pcert_list_import_x509_file):=GPA('gnutls_pcert_list_import_x509_file');
+  pointer(gnutls_pcert_import_x509_raw):=GPA('gnutls_pcert_import_x509_raw');
+  pointer(gnutls_pcert_import_openpgp_raw):=GPA('gnutls_pcert_import_openpgp_raw');
+  pointer(gnutls_pcert_import_openpgp):=GPA('gnutls_pcert_import_openpgp');
+  pointer(gnutls_pcert_export_openpgp):=GPA('gnutls_pcert_export_openpgp');
+  pointer(gnutls_pcert_deinit):=GPA('gnutls_pcert_deinit');
+  pointer(gnutls_pcert_import_rawpk):=GPA('gnutls_pcert_import_rawpk');
+  pointer(gnutls_pcert_import_rawpk_raw):=GPA('gnutls_pcert_import_rawpk_raw');
+  pointer(gnutls_certificate_set_retrieve_function2):=GPA('gnutls_certificate_set_retrieve_function2');
+  pointer(gnutls_certificate_set_retrieve_function3):=GPA('gnutls_certificate_set_retrieve_function3');
+  pointer(gnutls_certificate_set_key):=GPA('gnutls_certificate_set_key');
+  pointer(gnutls_pubkey_print):=GPA('gnutls_pubkey_print');
+  pointer(gnutls_decode_rs_value):=GPA('gnutls_decode_rs_value');
+  pointer(gnutls_free):=GPA('gnutls_free');
+  pointer(gnutls_malloc):=GPA('gnutls_malloc');
+  pointer(gnutls_realloc):=GPA('gnutls_realloc');
+  pointer(gnutls_calloc):=GPA('gnutls_cealloc');
+
+  pointer(gnutls_cipher_init):=GPA('gnutls_cipher_init');
+  pointer(gnutls_cipher_encrypt):=GPA('gnutls_cipher_encrypt');
+  pointer(gnutls_cipher_decrypt):=GPA('gnutls_cipher_decrypt');
+  pointer(gnutls_cipher_decrypt2):=GPA('gnutls_cipher_decrypt2');
+  pointer(gnutls_cipher_encrypt2):=GPA('gnutls_cipher_encrypt2');
+  pointer(gnutls_cipher_set_iv):=GPA('gnutls_cipher_set_iv');
+  pointer(gnutls_cipher_tag):=GPA('gnutls_cipher_tag');
+  pointer(gnutls_cipher_add_auth):=GPA('gnutls_cipher_add_auth');
+  pointer(gnutls_cipher_deinit):=GPA('gnutls_cipher_deinit');
+  pointer(gnutls_cipher_get_block_size):=GPA('gnutls_cipher_get_block_size');
+  pointer(gnutls_cipher_get_iv_size):=GPA('gnutls_cipher_get_iv_size');
+  pointer(gnutls_cipher_get_tag_size):=GPA('gnutls_cipher_get_tag_size');
+  pointer(gnutls_aead_cipher_init):=GPA('gnutls_aead_cipher_init');
+  pointer(gnutls_aead_cipher_decrypt):=GPA('gnutls_aead_cipher_decrypt');
+  pointer(gnutls_aead_cipher_encrypt):=GPA('gnutls_aead_cipher_encrypt');
+  pointer(gnutls_aead_cipher_encryptv):=GPA('gnutls_aead_cipher_encryptv');
+  pointer(gnutls_aead_cipher_encryptv2):=GPA('gnutls_aead_cipher_encryptv2');
+  pointer(gnutls_aead_cipher_decryptv2):=GPA('gnutls_aead_cipher_decryptv2');
+  pointer(gnutls_aead_cipher_deinit):=GPA('gnutls_aead_cipher_deinit');
+  pointer(gnutls_mac_get_nonce_size):=GPA('gnutls_mac_get_nonce_size');
+  pointer(gnutls_hmac_init):=GPA('gnutls_hmac_init');
+  pointer(gnutls_hmac_set_nonce):=GPA('gnutls_hmac_set_nonce');
+  pointer(gnutls_hmac):=GPA('gnutls_hmac');
+  pointer(gnutls_hmac_output):=GPA('gnutls_hmac_output');
+  pointer(gnutls_hmac_deinit):=GPA('gnutls_hmac_deinit');
+  pointer(gnutls_hmac_get_len):=GPA('gnutls_hmac_get_len');
+  pointer(gnutls_hmac_get_key_size):=GPA('gnutls_hmac_get_key_size');
+  pointer(gnutls_hmac_fast):=GPA('gnutls_hmac_fast');
+  pointer(gnutls_hmac_copy):=GPA('gnutls_hmac_copy');
+  pointer(gnutls_hash_init):=GPA('gnutls_hash_init');
+  pointer(gnutls_hash):=GPA('gnutls_hash');
+  pointer(gnutls_hash_output):=GPA('gnutls_hash_output');
+  pointer(gnutls_hash_deinit):=GPA('gnutls_hash_deinit');
+  pointer(gnutls_hash_get_len):=GPA('gnutls_hash_get_len');
+  pointer(gnutls_hash_fast):=GPA('gnutls_hash_fast');
+  pointer(gnutls_hash_copy):=GPA('gnutls_hash_copy');
+  pointer(gnutls_hkdf_extract):=GPA('gnutls_hkdf_extract');
+  pointer(gnutls_hkdf_expand):=GPA('gnutls_hkdf_expand');
+  pointer(gnutls_pbkdf2):=GPA('gnutls_pbkdf2');
+  pointer(gnutls_rnd):=GPA('gnutls_rnd');
+  pointer(gnutls_rnd_refresh):=GPA('gnutls_rnd_refresh');
+  pointer(gnutls_crypto_register_cipher):=GPA('gnutls_crypto_register_cipher');
+  pointer(gnutls_crypto_register_aead_cipher):=GPA('gnutls_crypto_register_aead_cipher');
+  pointer(gnutls_crypto_register_mac):=GPA('gnutls_crypto_register_mac');
+  pointer(gnutls_crypto_register_digest):=GPA('gnutls_crypto_register_digest');
+  pointer(gnutls_encode_ber_digest_info):=GPA('gnutls_encode_ber_digest_info');
+  pointer(gnutls_decode_ber_digest_info):=GPA('gnutls_decode_ber_digest_info');
+  pointer(gnutls_decode_rs_value):=GPA('gnutls_decode_rs_value');
+  pointer(gnutls_encode_rs_value):=GPA('gnutls_encode_rs_value');
+  pointer(gnutls_encode_gost_rs_value):=GPA('gnutls_encode_gost_rs_value');
+  pointer(gnutls_decode_gost_rs_value):=GPA('gnutls_decode_gost_rs_value');
   LoadedLibName:=aLib;
 end;