Hi, This patch makes the exported symbols explicit in the map file. Furthermore it moves symbols only listed in internal headers in a special section which makes them valid only for testing. I've tested it with abi-compliance-checker and it detects the following missing from nettle: nettle_aeads, nettle_armors, nettle_ciphers, nettle_hashes and from hogweed the nettle_secp_*r1, which seem expected.
Niels, I'm not sure however if that was your intention. Didn't you want to deprecate some of the _nettle symbols as well like _nettle_secp_256r1? These are however still present in the exported headers and unless we remove them, they seem to be part of the API and ABI. I also attach the script which generated the files in case you'd like to play with it. regards, Nikos
From 282b9ab564d5ead13eaee928b63fabeefeaebd32 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos <[email protected]> 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
_______________________________________________ nettle-bugs mailing list [email protected] http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs
