From 282b9ab564d5ead13eaee928b63fabeefeaebd32 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@redhat.com>
Date: Wed, 6 Jun 2018 15:17:00 +0200
Subject: [PATCH] map files: explicitly add exported symbols

This adds all exported symbols in the map files explicitly under
the following rules:
 - Symbols mentioned in internal headers go in a section which is
   valid only for testing, and linking with these symbols will break
   in library updates.
 - Symbols mentioned in installed headers go in the exported sections
   and are considered part of the ABI.
---
 libhogweed.map.in | 264 +++++++++++++++++++++++++++-
 libnettle.map.in  | 440 +++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 697 insertions(+), 7 deletions(-)

diff --git a/libhogweed.map.in b/libhogweed.map.in
index eea6ed81..4b3e22a4 100644
--- a/libhogweed.map.in
+++ b/libhogweed.map.in
@@ -1,18 +1,274 @@
-# libhogweed.map -- libhogweed linker version script.           -*- ld-script -*-
+# libhogweed.map.in -- linker version script.           -*- ld-script -*-
 
 #
-# The symbol version must be updated on every hogweed
+# The symbol version must be updated on every nettle
 # library major number change. That is taken care by
 # auto-generating the file.
 
 HOGWEED_@LIBHOGWEED_MAJOR@
 {
   global:
-    nettle_*;
-    _nettle_*;
     @HOGWEED_EXTRA_SYMBOLS@
+    nettle_sexp_iterator_assoc;
+    nettle_sexp_iterator_check_type;
+    nettle_sexp_iterator_check_types;
+    nettle_sexp_iterator_enter_list;
+    nettle_sexp_iterator_exit_list;
+    nettle_sexp_iterator_first;
+    nettle_sexp_iterator_get_uint32;
+    nettle_sexp_iterator_next;
+    nettle_sexp_iterator_subexpr;
+    nettle_sexp_format;
+    nettle_sexp_vformat;
+    nettle_sexp_transport_iterator_first;
+    nettle_sexp_transport_format;
+    nettle_sexp_transport_vformat;
+    nettle_mpz_get_str_256;
+    nettle_mpz_init_set_str_256_s;
+    nettle_mpz_init_set_str_256_u;
+    nettle_mpz_set_str_256_s;
+    nettle_mpz_set_str_256_u;
+    nettle_mpz_sizeinbase_256_s;
+    nettle_mpz_sizeinbase_256_u;
+    nettle_mpz_random;
+    nettle_mpz_random_size;
+    _nettle_generate_pocklington_prime;
+    nettle_random_prime;
+    nettle_mpz_set_sexp;
+    _nettle_pkcs1_signature_prefix;
+    nettle_pkcs1_encrypt;
+    nettle_pkcs1_decrypt;
+    nettle_pkcs1_rsa_digest_encode;
+    nettle_pkcs1_rsa_md5_encode;
+    nettle_pkcs1_rsa_md5_encode_digest;
+    nettle_pkcs1_rsa_sha1_encode;
+    nettle_pkcs1_rsa_sha1_encode_digest;
+    nettle_pkcs1_rsa_sha256_encode;
+    nettle_pkcs1_rsa_sha256_encode_digest;
+    nettle_pkcs1_rsa_sha512_encode;
+    nettle_pkcs1_rsa_sha512_encode_digest;
+    nettle_pss_encode_mgf1;
+    nettle_pss_verify_mgf1;
+    nettle_pss_mgf1;
+    _nettle_rsa_check_size;
+    nettle_rsa_public_key_clear;
+    nettle_rsa_public_key_init;
+    nettle_rsa_public_key_prepare;
+    nettle_rsa_compute_root;
+    nettle_rsa_private_key_clear;
+    nettle_rsa_private_key_init;
+    nettle_rsa_private_key_prepare;
+    nettle_rsa_compute_root_tr;
+    _nettle_rsa_verify;
+    _nettle_rsa_verify_recover;
+    nettle_rsa_pkcs1_sign;
+    nettle_rsa_pkcs1_sign_tr;
+    nettle_rsa_pkcs1_verify;
+    nettle_rsa_md5_sign;
+    nettle_rsa_md5_sign_digest;
+    nettle_rsa_md5_sign_digest_tr;
+    nettle_rsa_md5_sign_tr;
+    nettle_rsa_md5_verify;
+    nettle_rsa_md5_verify_digest;
+    nettle_rsa_sha1_sign;
+    nettle_rsa_sha1_sign_digest;
+    nettle_rsa_sha1_sign_digest_tr;
+    nettle_rsa_sha1_sign_tr;
+    nettle_rsa_sha1_verify;
+    nettle_rsa_sha1_verify_digest;
+    nettle_rsa_sha256_sign;
+    nettle_rsa_sha256_sign_digest;
+    nettle_rsa_sha256_sign_digest_tr;
+    nettle_rsa_sha256_sign_tr;
+    nettle_rsa_sha256_verify;
+    nettle_rsa_sha256_verify_digest;
+    nettle_rsa_sha512_sign;
+    nettle_rsa_sha512_sign_digest;
+    nettle_rsa_sha512_sign_digest_tr;
+    nettle_rsa_sha512_sign_tr;
+    nettle_rsa_sha512_verify;
+    nettle_rsa_sha512_verify_digest;
+    nettle_rsa_pss_sha256_sign_digest_tr;
+    nettle_rsa_pss_sha256_verify_digest;
+    nettle_rsa_pss_sha384_sign_digest_tr;
+    nettle_rsa_pss_sha512_sign_digest_tr;
+    nettle_rsa_pss_sha384_verify_digest;
+    nettle_rsa_pss_sha512_verify_digest;
+    nettle_rsa_encrypt;
+    nettle_rsa_decrypt;
+    nettle_rsa_decrypt_tr;
+    nettle_rsa_generate_keypair;
+    _nettle_rsa_blind;
+    _nettle_rsa_unblind;
+    nettle_rsa_keypair_to_sexp;
+    nettle_rsa_keypair_from_sexp;
+    nettle_rsa_keypair_from_sexp_alist;
+    nettle_dsa_params_clear;
+    nettle_dsa_params_init;
+    nettle_dsa_signature_clear;
+    nettle_dsa_signature_init;
+    nettle_dsa_private_key_clear;
+    nettle_dsa_private_key_init;
+    nettle_dsa_public_key_clear;
+    nettle_dsa_public_key_init;
+    nettle_dsa_compat_generate_keypair;
+    nettle_dsa_generate_params;
+    nettle_dsa_sign;
+    nettle_dsa_verify;
+    nettle_dsa_generate_keypair;
+    _nettle_dsa_hash;
+    nettle_dsa_sha1_sign;
+    nettle_dsa_sha1_sign_digest;
+    nettle_dsa_sha1_verify;
+    nettle_dsa_sha1_verify_digest;
+    nettle_dsa_sha256_sign;
+    nettle_dsa_sha256_sign_digest;
+    nettle_dsa_sha256_verify;
+    nettle_dsa_sha256_verify_digest;
+    nettle_dsa_keypair_to_sexp;
+    nettle_dsa_keypair_from_sexp_alist;
+    nettle_dsa_sha1_keypair_from_sexp;
+    nettle_dsa_sha256_keypair_from_sexp;
+    nettle_dsa_signature_from_sexp;
+    nettle_pgp_armor;
+    nettle_pgp_crc24;
+    nettle_pgp_put_header;
+    nettle_pgp_put_header_length;
+    nettle_pgp_put_length;
+    nettle_pgp_put_mpi;
+    nettle_pgp_put_public_rsa_key;
+    nettle_pgp_put_rsa_sha1_signature;
+    nettle_pgp_put_string;
+    nettle_pgp_put_sub_packet;
+    nettle_pgp_put_uint16;
+    nettle_pgp_put_uint32;
+    nettle_pgp_put_userid;
+    nettle_pgp_sub_packet_end;
+    nettle_pgp_sub_packet_start;
+    nettle_rsa_keypair_to_openpgp;
+    nettle_asn1_der_decode_bitstring;
+    nettle_asn1_der_decode_bitstring_last;
+    nettle_asn1_der_decode_constructed;
+    nettle_asn1_der_decode_constructed_last;
+    nettle_asn1_der_get_bignum;
+    nettle_asn1_der_get_uint32;
+    nettle_asn1_der_iterator_first;
+    nettle_asn1_der_iterator_next;
+    nettle_rsa_keypair_from_der;
+    nettle_rsa_private_key_from_der_iterator;
+    nettle_rsa_public_key_from_der_iterator;
+    nettle_dsa_openssl_private_key_from_der_iterator;
+    nettle_dsa_params_from_der_iterator;
+    nettle_dsa_public_key_from_der_iterator;
+    nettle_openssl_provate_key_from_der;
+    _nettle_cnd_swap;
+    _nettle_gmp_alloc;
+    _nettle_gmp_alloc_limbs;
+    _nettle_gmp_free;
+    _nettle_gmp_free_limbs;
+    _nettle_mpn_get_base256_le;
+    _nettle_mpn_set_base256;
+    _nettle_mpn_set_base256_le;
+    _nettle_mpz_limbs_cmp;
+    _nettle_mpz_limbs_copy;
+    _nettle_mpz_limbs_read_n;
+    _nettle_mpz_set_n;
+    nettle_get_secp_192r1;
+    _nettle_secp_192r1;
+    nettle_get_secp_224r1;
+    _nettle_secp_224r1;
+    nettle_get_secp_256r1;
+    _nettle_secp_256r1;
+    nettle_get_secp_384r1;
+    _nettle_secp_384r1;
+    nettle_get_secp_521r1;
+    _nettle_secp_521r1;
+    nettle_ecc_bit_size;
+    nettle_ecc_size;
+    nettle_ecc_size_a;
+    nettle_ecc_size_j;
+    nettle_ecc_scalar_random;
+    nettle_ecc_point_clear;
+    nettle_ecc_point_get;
+    nettle_ecc_point_init;
+    nettle_ecc_point_set;
+    nettle_ecc_scalar_clear;
+    nettle_ecc_scalar_get;
+    nettle_ecc_scalar_init;
+    nettle_ecc_scalar_set;
+    nettle_ecc_point_mul;
+    nettle_ecc_point_mul_g;
+    nettle_ecc_ecdsa_sign;
+    nettle_ecc_ecdsa_sign_itch;
+    nettle_ecdsa_sign;
+    nettle_ecc_ecdsa_verify;
+    nettle_ecc_ecdsa_verify_itch;
+    nettle_ecdsa_verify;
+    nettle_ecdsa_generate_keypair;
+    nettle_curve25519_mul_g;
+    nettle_curve25519_mul;
+    _nettle_eddsa_compress;
+    _nettle_eddsa_compress_itch;
+    _nettle_eddsa_decompress;
+    _nettle_eddsa_decompress_itch;
+    _nettle_eddsa_expand_key;
+    _nettle_eddsa_hash;
+    _nettle_eddsa_public_key;
+    _nettle_eddsa_public_key_itch;
+    _nettle_eddsa_sign;
+    _nettle_eddsa_sign_itch;
+    _nettle_eddsa_verify;
+    _nettle_eddsa_verify_itch;
+    nettle_ed25519_sha512_public_key;
+    nettle_ed25519_sha512_sign;
+    nettle_ed25519_sha512_verify;
 
   local:
     *;
 };
 
+HOGWEED_@LIBHOGWEED_MAJOR@_@LIBNETTLE_MINOR@
+{
+  global:
+    _nettle_sec_add_1;
+    _nettle_sec_sub_1;
+    _nettle_sec_tabselect;
+    _nettle_cnd_copy;
+    _nettle_ecc_mod;
+    _nettle_ecc_mod_inv;
+    _nettle_ecc_mod_add;
+    _nettle_ecc_mod_addmul_1;
+    _nettle_ecc_mod_mul;
+    _nettle_ecc_mod_mul_1;
+    _nettle_ecc_mod_sqr;
+    _nettle_ecc_mod_sub;
+    _nettle_ecc_mod_submul_1;
+    _nettle_ecc_pp1_redc;
+    _nettle_ecc_pm1_redc;
+    _nettle_curve25519;
+    _nettle_ecc_j_to_a;
+    _nettle_ecc_a_to_j;
+    _nettle_ecc_dup_jj;
+    _nettle_ecc_add_jja;
+    _nettle_ecc_add_jjj;
+    _nettle_ecc_eh_to_a;
+    _nettle_ecc_dup_eh;
+    _nettle_ecc_add_eh;
+    _nettle_ecc_add_ehh;
+    _nettle_ecc_mul_g_eh;
+    _nettle_ecc_mul_a_eh;
+    _nettle_ecc_mul_g;
+    _nettle_ecc_mul_a;
+    _nettle_ecc_hash;
+    _nettle_ecc_mod_random;
+    _nettle_curve25519_eh_to_x;
+    nettle_ecc_192_modp;
+    nettle_ecc_224_modp;
+    nettle_ecc_25519_modp;
+    nettle_ecc_256_redc;
+    nettle_ecc_384_modp;
+    nettle_ecc_521_modp;
+
+  local:
+    *;
+};
diff --git a/libnettle.map.in b/libnettle.map.in
index 02455bc5..921b5cf3 100644
--- a/libnettle.map.in
+++ b/libnettle.map.in
@@ -1,4 +1,4 @@
-# libnettle.map -- libnettle linker version script.           -*- ld-script -*-
+# libnettle.map.in -- linker version script.           -*- ld-script -*-
 
 #
 # The symbol version must be updated on every nettle
@@ -8,10 +8,444 @@
 NETTLE_@LIBNETTLE_MAJOR@
 {
   global:
-    nettle_*;
-    _nettle_*;
+
+    nettle_aes128_decrypt;
+    nettle_aes192_decrypt;
+    nettle_aes256_decrypt;
+    nettle_aes_decrypt;
+    _nettle_aes_encrypt;
+    nettle_aes128_encrypt;
+    nettle_aes192_encrypt;
+    nettle_aes256_encrypt;
+    nettle_aes_encrypt;
+    nettle_aes_set_encrypt_key;
+    nettle_aes_invert_key;
+    nettle_aes_set_decrypt_key;
+    nettle_aes128_set_encrypt_key;
+    nettle_aes128_invert_key;
+    nettle_aes128_set_decrypt_key;
+    nettle_aes128;
+    nettle_aes192_set_encrypt_key;
+    nettle_aes192_invert_key;
+    nettle_aes192_set_decrypt_key;
+    nettle_aes192;
+    nettle_aes256_set_encrypt_key;
+    nettle_aes256_invert_key;
+    nettle_aes256_set_decrypt_key;
+    nettle_aes256;
+    nettle_arcfour128_set_key;
+    nettle_arcfour_set_key;
+    nettle_arcfour_crypt;
+    nettle_arctwo128_set_key;
+    nettle_arctwo128_set_key_gutmann;
+    nettle_arctwo40_set_key;
+    nettle_arctwo64_set_key;
+    nettle_arctwo_decrypt;
+    nettle_arctwo_encrypt;
+    nettle_arctwo_set_key;
+    nettle_arctwo_set_key_ekb;
+    nettle_arctwo_set_key_gutmann;
+    nettle_arctwo128;
+    nettle_arctwo40;
+    nettle_arctwo64;
+    nettle_arctwo_gutmann128;
+    nettle_blowfish128_set_key;
+    nettle_blowfish_decrypt;
+    nettle_blowfish_encrypt;
+    nettle_blowfish_set_key;
+    nettle_base16_encode_single;
+    nettle_base16_encode_update;
+    nettle_base16_decode_final;
+    nettle_base16_decode_init;
+    nettle_base16_decode_single;
+    nettle_base16_decode_update;
+    nettle_base16;
+    nettle_base64_encode_final;
+    nettle_base64_encode_group;
+    nettle_base64_encode_init;
+    nettle_base64_encode_raw;
+    nettle_base64_encode_single;
+    nettle_base64_encode_update;
+    nettle_base64_decode_final;
+    nettle_base64_decode_init;
+    nettle_base64_decode_single;
+    nettle_base64_decode_update;
+    nettle_base64;
+    nettle_base64url_encode_init;
+    nettle_base64url_decode_init;
+    nettle_base64url;
+    nettle_buffer_clear;
+    nettle_buffer_copy;
+    nettle_buffer_grow;
+    nettle_buffer_init_realloc;
+    nettle_buffer_init_size;
+    nettle_buffer_reset;
+    nettle_buffer_space;
+    nettle_buffer_write;
+    nettle_buffer_init;
+    nettle_camellia128_set_encrypt_key;
+    nettle_camellia128_crypt;
+    nettle_camellia128_invert_key;
+    nettle_camellia_set_decrypt_key;
+    nettle_camellia128;
+    nettle_camellia192;
+    nettle_camellia192_set_encrypt_key;
+    nettle_camellia256_set_encrypt_key;
+    nettle_camellia256_crypt;
+    nettle_camellia192_set_decrypt_key;
+    nettle_camellia256_invert_key;
+    nettle_camellia256_set_decrypt_key;
+    nettle_camellia256;
+    nettle_cast128_decrypt;
+    nettle_cast128_encrypt;
+    nettle_cast128_set_key;
+    nettle_cast5_set_key;
+    nettle_cast128;
+    nettle_cbc_decrypt;
+    nettle_cbc_encrypt;
+    nettle_ccm_decrypt;
+    nettle_ccm_decrypt_message;
+    nettle_ccm_digest;
+    nettle_ccm_encrypt;
+    nettle_ccm_encrypt_message;
+    nettle_ccm_set_nonce;
+    nettle_ccm_update;
+    nettle_ccm_aes128_decrypt;
+    nettle_ccm_aes128_decrypt_message;
+    nettle_ccm_aes128_digest;
+    nettle_ccm_aes128_encrypt;
+    nettle_ccm_aes128_encrypt_message;
+    nettle_ccm_aes128_set_key;
+    nettle_ccm_aes128_set_nonce;
+    nettle_ccm_aes128_update;
+    nettle_ccm_aes192_decrypt;
+    nettle_ccm_aes192_decrypt_message;
+    nettle_ccm_aes192_digest;
+    nettle_ccm_aes192_encrypt;
+    nettle_ccm_aes192_encrypt_message;
+    nettle_ccm_aes192_set_key;
+    nettle_ccm_aes192_set_nonce;
+    nettle_ccm_aes192_update;
+    nettle_ccm_aes256_decrypt;
+    nettle_ccm_aes256_decrypt_message;
+    nettle_ccm_aes256_digest;
+    nettle_ccm_aes256_encrypt;
+    nettle_ccm_aes256_encrypt_message;
+    nettle_ccm_aes256_set_key;
+    nettle_ccm_aes256_set_nonce;
+    nettle_ccm_aes256_update;
+    nettle_cfb8_decrypt;
+    nettle_cfb8_encrypt;
+    nettle_cfb_decrypt;
+    nettle_cfb_encrypt;
+    nettle_chacha_crypt;
+    _nettle_chacha_core;
+    nettle_chacha_poly1305_decrypt;
+    nettle_chacha_poly1305_digest;
+    nettle_chacha_poly1305_encrypt;
+    nettle_chacha_poly1305_set_key;
+    nettle_chacha_poly1305_set_nonce;
+    nettle_chacha_poly1305_update;
+    nettle_chacha_poly1305;
+    nettle_chacha_set_key;
+    nettle_chacha_set_nonce;
+    nettle_chacha_set_nonce96;
+    nettle_ctr_crypt;
+    nettle_des_check_parity;
+    nettle_des_decrypt;
+    nettle_des_encrypt;
+    nettle_des_fix_parity;
+    nettle_des_set_key;
+    nettle_des3_decrypt;
+    nettle_des3_encrypt;
+    nettle_des3_set_key;
+    nettle_openssl_des_cbc_cksum;
+    nettle_openssl_des_cbc_encrypt;
+    nettle_openssl_des_check_key;
+    nettle_openssl_des_ecb3_encrypt;
+    nettle_openssl_des_ecb_encrypt;
+    nettle_openssl_des_ede3_cbc_encrypt;
+    nettle_openssl_des_is_weak_key;
+    nettle_openssl_des_key_sched;
+    nettle_openssl_des_ncbc_encrypt;
+    nettle_openssl_des_set_odd_parity;
+    nettle_eax_decrypt;
+    nettle_eax_digest;
+    nettle_eax_encrypt;
+    nettle_eax_set_key;
+    nettle_eax_set_nonce;
+    nettle_eax_update;
+    nettle_eax_aes128_decrypt;
+    nettle_eax_aes128_digest;
+    nettle_eax_aes128_encrypt;
+    nettle_eax_aes128_set_key;
+    nettle_eax_aes128_set_nonce;
+    nettle_eax_aes128_update;
+    nettle_eax_aes128;
+    nettle_gcm_decrypt;
+    nettle_gcm_digest;
+    nettle_gcm_encrypt;
+    nettle_gcm_set_iv;
+    nettle_gcm_set_key;
+    nettle_gcm_update;
+    nettle_gcm_aes_decrypt;
+    nettle_gcm_aes_digest;
+    nettle_gcm_aes_encrypt;
+    nettle_gcm_aes_set_iv;
+    nettle_gcm_aes_set_key;
+    nettle_gcm_aes_update;
+    nettle_gcm_aes128_decrypt;
+    nettle_gcm_aes128_digest;
+    nettle_gcm_aes128_encrypt;
+    nettle_gcm_aes128_set_iv;
+    nettle_gcm_aes128_set_key;
+    nettle_gcm_aes128_update;
+    nettle_gcm_aes128;
+    nettle_gcm_aes192_decrypt;
+    nettle_gcm_aes192_digest;
+    nettle_gcm_aes192_encrypt;
+    nettle_gcm_aes192_set_iv;
+    nettle_gcm_aes192_set_key;
+    nettle_gcm_aes192_update;
+    nettle_gcm_aes192;
+    nettle_gcm_aes256_decrypt;
+    nettle_gcm_aes256_digest;
+    nettle_gcm_aes256_encrypt;
+    nettle_gcm_aes256_set_iv;
+    nettle_gcm_aes256_set_key;
+    nettle_gcm_aes256_update;
+    nettle_gcm_aes256;
+    nettle_gcm_camellia128_decrypt;
+    nettle_gcm_camellia128_digest;
+    nettle_gcm_camellia128_encrypt;
+    nettle_gcm_camellia128_set_iv;
+    nettle_gcm_camellia128_set_key;
+    nettle_gcm_camellia128_update;
+    nettle_gcm_camellia128;
+    nettle_gcm_camellia256_decrypt;
+    nettle_gcm_camellia256_digest;
+    nettle_gcm_camellia256_encrypt;
+    nettle_gcm_camellia256_set_iv;
+    nettle_gcm_camellia256_set_key;
+    nettle_gcm_camellia256_update;
+    nettle_gcm_camellia256;
+    nettle_cmac128_digest;
+    nettle_cmac128_set_key;
+    nettle_cmac128_update;
+    nettle_cmac_aes128_digest;
+    nettle_cmac_aes128_set_key;
+    nettle_cmac_aes128_update;
+    nettle_cmac_aes256_digest;
+    nettle_cmac_aes256_set_key;
+    nettle_cmac_aes256_update;
+    nettle_gosthash94_digest;
+    nettle_gosthash94_init;
+    nettle_gosthash94_update;
+    nettle_gosthash94;
+    nettle_hmac_digest;
+    nettle_hmac_set_key;
+    nettle_hmac_update;
+    nettle_hmac_md5_digest;
+    nettle_hmac_md5_set_key;
+    nettle_hmac_md5_update;
+    nettle_hmac_ripemd160_digest;
+    nettle_hmac_ripemd160_set_key;
+    nettle_hmac_ripemd160_update;
+    nettle_hmac_sha1_digest;
+    nettle_hmac_sha1_set_key;
+    nettle_hmac_sha1_update;
+    nettle_hmac_sha224_digest;
+    nettle_hmac_sha224_set_key;
+    nettle_hmac_sha256_digest;
+    nettle_hmac_sha256_set_key;
+    nettle_hmac_sha256_update;
+    nettle_hmac_sha384_digest;
+    nettle_hmac_sha384_set_key;
+    nettle_hmac_sha512_digest;
+    nettle_hmac_sha512_set_key;
+    nettle_hmac_sha512_update;
+    nettle_knuth_lfib_get;
+    nettle_knuth_lfib_get_array;
+    nettle_knuth_lfib_init;
+    nettle_knuth_lfib_random;
+    nettle_hkdf_expand;
+    nettle_hkdf_extract;
+    nettle_md2_digest;
+    nettle_md2_init;
+    nettle_md2_update;
+    nettle_md2;
+    nettle_md4_digest;
+    nettle_md4_init;
+    nettle_md4_update;
+    nettle_md4;
+    nettle_md5_digest;
+    nettle_md5_init;
+    nettle_md5_update;
+    _nettle_md5_compress;
+    nettle_MD5Final;
+    nettle_MD5Init;
+    nettle_MD5Update;
+    nettle_md5;
+    nettle_memeql_sec;
+    nettle_memxor;
+    nettle_memxor3;
+    nettle_lookup_hash;
+    _nettle_aeads;
+    nettle_get_aeads;
+    _nettle_armors;
+    nettle_get_armors;
+    _nettle_ciphers;
+    nettle_get_ciphers;
+    nettle_get_hashes;
+    _nettle_hashes;
+    nettle_pbkdf2;
+    nettle_pbkdf2_hmac_sha1;
+    nettle_pbkdf2_hmac_sha256;
+    nettle_poly1305_aes_digest;
+    nettle_poly1305_aes_set_key;
+    nettle_poly1305_aes_set_nonce;
+    nettle_poly1305_aes_update;
+    _nettle_poly1305_block;
+    nettle_poly1305_digest;
+    nettle_poly1305_set_key;
+    nettle_realloc;
+    nettle_xrealloc;
+    nettle_ripemd160_digest;
+    nettle_ripemd160_init;
+    nettle_ripemd160_update;
+    _nettle_ripemd160_compress;
+    nettle_ripemd160;
+    _nettle_salsa20_core;
+    nettle_salsa20_crypt;
+    nettle_salsa20r12_crypt;
+    nettle_salsa20_set_key;
+    nettle_salsa20_set_nonce;
+    nettle_salsa20_128_set_key;
+    nettle_salsa20_256_set_key;
+    nettle_sha1_digest;
+    nettle_sha1_init;
+    nettle_sha1_update;
+    _nettle_sha1_compress;
+    nettle_sha1;
+    nettle_sha224_digest;
+    nettle_sha224_init;
+    nettle_sha256_digest;
+    nettle_sha256_init;
+    nettle_sha256_update;
+    _nettle_sha256_compress;
+    nettle_sha224;
+    nettle_sha256;
+    nettle_sha384_digest;
+    nettle_sha384_init;
+    nettle_sha512_224_digest;
+    nettle_sha512_224_init;
+    nettle_sha512_256_digest;
+    nettle_sha512_256_init;
+    nettle_sha512_digest;
+    nettle_sha512_init;
+    nettle_sha512_update;
+    _nettle_sha512_compress;
+    nettle_sha384;
+    nettle_sha512;
+    nettle_sha512_224;
+    nettle_sha512_256;
+    _nettle_sha3_pad;
+    _nettle_sha3_update;
+    nettle_sha3_permute;
+    nettle_sha3_224_digest;
+    nettle_sha3_224_init;
+    nettle_sha3_224_update;
+    nettle_sha3_224;
+    nettle_sha3_256_digest;
+    nettle_sha3_256_init;
+    nettle_sha3_256_update;
+    nettle_sha3_256;
+    nettle_sha3_384_digest;
+    nettle_sha3_384_init;
+    nettle_sha3_384_update;
+    nettle_sha3_384;
+    nettle_sha3_512_digest;
+    nettle_sha3_512_init;
+    nettle_sha3_512_update;
+    nettle_sha3_512;
+    nettle_serpent128_set_key;
+    nettle_serpent192_set_key;
+    nettle_serpent256_set_key;
+    nettle_serpent_set_key;
+    nettle_serpent_encrypt;
+    nettle_serpent_decrypt;
+    nettle_serpent128;
+    nettle_serpent192;
+    nettle_serpent256;
+    nettle_twofish128_set_key;
+    nettle_twofish192_set_key;
+    nettle_twofish256_set_key;
+    nettle_twofish_decrypt;
+    nettle_twofish_encrypt;
+    nettle_twofish_set_key;
+    nettle_twofish128;
+    nettle_twofish192;
+    nettle_twofish256;
+    _nettle_umac_nh;
+    _nettle_umac_nh_n;
+    _nettle_umac_l2;
+    _nettle_umac_l2_final;
+    _nettle_umac_l2_init;
+    _nettle_umac_l3;
+    _nettle_umac_l3_init;
+    _nettle_umac_poly64;
+    _nettle_umac_poly128;
+    _nettle_umac_set_key;
+    nettle_umac32_digest;
+    nettle_umac32_set_key;
+    nettle_umac32_set_nonce;
+    nettle_umac32_update;
+    nettle_umac64_digest;
+    nettle_umac64_set_key;
+    nettle_umac64_set_nonce;
+    nettle_umac64_update;
+    nettle_umac96_digest;
+    nettle_umac96_set_key;
+    nettle_umac96_set_nonce;
+    nettle_umac96_update;
+    nettle_umac128_digest;
+    nettle_umac128_set_key;
+    nettle_umac128_set_nonce;
+    nettle_umac128_update;
+    nettle_version_major;
+    nettle_version_minor;
+    _nettle_write_be32;
+    _nettle_write_le32;
+    _nettle_write_le64;
+    nettle_yarrow256_fast_reseed;
+    nettle_yarrow256_init;
+    nettle_yarrow256_is_seeded;
+    nettle_yarrow256_needed_sources;
+    nettle_yarrow256_random;
+    nettle_yarrow256_seed;
+    nettle_yarrow256_slow_reseed;
+    nettle_yarrow256_update;
+    nettle_yarrow_key_event_estimate;
+    nettle_yarrow_key_event_init;
 
   local:
     *;
 };
 
+NETTLE_@LIBNETTLE_MAJOR@_@LIBNETTLE_MINOR@
+{
+  global:
+    _nettle_aes_decrypt;
+    _nettle_aes_encrypt_table;
+    _nettle_aes_invert;
+    _nettle_aes_set_key;
+    _nettle_camellia_crypt;
+    _nettle_camellia_table;
+    _nettle_camellia_absorb;
+    _nettle_camellia_invert_key;
+    _nettle_ctr_crypt16;
+    _nettle_gcm_hash8;
+
+  local:
+    *;
+};
-- 
2.17.0

