Closed yuyichao closed 9 years ago
Actually it is possible to do runtime version check with dlvsym
on linux. Not sure how portable it is to other platforms though....
It would be nice if we didn't have to shell out here. My comment in #44 applies here; it would be nice to do something like check for the existence of a symbol that is only in the new API. Does such a thing exist? Then we could use dlsym()
to find it, which is portable across platforms.
@staticfloat I totally agree a runtime api check would be much better.
For me its runtime check via API
>> compile time check
> runtime check with external command
I was looking for a new symbol that is only in 3.0+ but there was nothing obvious appears. I don't have a 2.x version so it's hard for me to tell.
Here's a list of the exported symbol on my 3.1.1. Maybe this can help you find sth by comparing to 2.x.
yuyichao% objdump -T /usr/lib/libnettle.so | grep text
0000000000026250 g DF .text 0000000000000029 NETTLE_6 nettle_yarrow_key_event_init
0000000000018290 g DF .text 00000000000001ae NETTLE_6 nettle_pbkdf2
000000000000bcb0 g DF .text 0000000000000020 NETTLE_6 nettle_base16_encode_single
0000000000024ed0 g DF .text 0000000000000306 NETTLE_6 nettle_umac96_digest
0000000000010ca0 g DF .text 0000000000000005 NETTLE_6 nettle_chacha_poly1305_set_key
0000000000016940 g DF .text 0000000000000140 NETTLE_6 nettle_md2_update
000000000000a970 g DF .text 0000000000000010 NETTLE_6 nettle_aes192_invert_key
000000000000a900 g DF .text 0000000000000015 NETTLE_6 nettle_aes128_set_encrypt_key
0000000000025370 g DF .text 00000000000002c1 NETTLE_6 nettle_umac128_update
000000000001fc90 g DF .text 000000000000000d NETTLE_6 nettle_serpent128_set_key
00000000000164e0 g DF .text 0000000000000020 NETTLE_6 nettle_hmac_sha512_set_key
0000000000016390 g DF .text 000000000000000c NETTLE_6 nettle_hmac_ripemd160_update
00000000000134b0 g DF .text 000000000000003d NETTLE_6 nettle_openssl_des_cbc_encrypt
0000000000013b00 g DF .text 000000000000002a NETTLE_6 nettle_eax_aes128_encrypt
0000000000016260 g DF .text 00000000000000b7 NETTLE_6 nettle_hmac_digest
000000000000ce20 g DF .text 000000000000025c NETTLE_6 _nettle_camellia_absorb
0000000000011020 g DF .text 000000000000001a NETTLE_6 nettle_chacha_set_nonce
00000000000104a0 g DF .text 0000000000000029 NETTLE_6 nettle_ccm_aes128_set_nonce
000000000000a980 g DF .text 0000000000000015 NETTLE_6 nettle_aes192_set_decrypt_key
0000000000014590 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes192_encrypt
000000000000c4b0 g DF .text 00000000000000c3 NETTLE_6 nettle_base64_decode_update
000000000000a9a0 g DF .text 0000000000000015 NETTLE_6 nettle_aes256_set_encrypt_key
00000000000141c0 g DF .text 0000000000000083 NETTLE_6 nettle_gcm_decrypt
000000000000c3c0 g DF .text 0000000000000019 NETTLE_6 nettle_base64_decode_init
000000000000a8e0 g DF .text 0000000000000015 NETTLE_6 nettle_aes_set_decrypt_key
0000000000014570 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes192_update
0000000000022080 g DF .text 00000000000005b6 NETTLE_6 nettle_twofish_set_key
0000000000014480 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes128_encrypt
000000000000f940 g DF .text 000000000000000d NETTLE_6 nettle_cast128_set_key
0000000000010fd0 g DF .text 0000000000000045 NETTLE_6 nettle_chacha_set_key
0000000000017580 g DF .text 0000000000000165 NETTLE_6 nettle_md5_update
00000000000148f0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia256_decrypt
000000000000be90 g DF .text 000000000000000a NETTLE_6 nettle_base16_decode_final
0000000000016430 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha224_digest
0000000000013660 g DF .text 000000000000004d NETTLE_6 nettle_openssl_des_is_weak_key
000000000001f400 g DF .text 000000000000002f NETTLE_6 nettle_sha3_512_init
0000000000010630 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes192_encrypt
0000000000022e80 g DF .text 0000000000000027 NETTLE_6 _nettle_umac_l2_init
00000000000246c0 g DF .text 00000000000003bb NETTLE_6 nettle_umac64_digest
0000000000010ea0 g DF .text 0000000000000121 NETTLE_6 nettle_chacha_poly1305_digest
000000000001c400 g DF .text 0000000000000012 NETTLE_6 nettle_sha256_digest
0000000000011040 g DF .text 0000000000000019 NETTLE_6 nettle_chacha_set_nonce96
0000000000013350 g DF .text 00000000000000e6 NETTLE_6 nettle_openssl_des_cbc_cksum
0000000000016410 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha224_set_key
0000000000023420 g DF .text 000000000000005d NETTLE_6 _nettle_umac_poly64
0000000000010e20 g DF .text 000000000000007a NETTLE_6 nettle_chacha_poly1305_decrypt
000000000001dae0 g DF .text 0000000000000f52 NETTLE_6 _nettle_sha512_compress
0000000000010770 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes256_encrypt
00000000000163c0 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha1_set_key
000000000000a820 g DF .text 000000000000008a NETTLE_6 nettle_aes_set_encrypt_key
0000000000015d60 g DF .text 00000000000001f3 NETTLE_6 nettle_gosthash94_update
0000000000024250 g DF .text 0000000000000072 NETTLE_6 nettle_umac64_set_key
0000000000014680 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes256_update
0000000000022b80 g DF .text 00000000000002f1 NETTLE_6 _nettle_umac_nh_n
0000000000025b40 g DF .text 0000000000000082 NETTLE_6 nettle_yarrow256_init
000000000000c6b0 g DF .text 0000000000000020 NETTLE_6 nettle_buffer_init_realloc
000000000000bd20 g DF .text 00000000000000a6 NETTLE_6 nettle_base16_decode_single
000000000001a970 g DF .text 0000000000000030 NETTLE_6 nettle_salsa20_set_key
000000000001daa0 g DF .text 0000000000000037 NETTLE_6 nettle_sha512_256_digest
0000000000014140 g DF .text 0000000000000072 NETTLE_6 nettle_gcm_encrypt
0000000000013820 g DF .text 00000000000000ab NETTLE_6 nettle_eax_set_nonce
000000000000bab0 g DF .text 00000000000001e2 NETTLE_6 nettle_blowfish_set_key
0000000000017310 g DF .text 000000000000020d NETTLE_6 nettle_md4_digest
000000000000c0a0 g DF .text 0000000000000015 NETTLE_6 nettle_base64_encode_raw
000000000001c480 g DF .text 0000000000000e5f NETTLE_6 _nettle_sha256_compress
000000000000c120 g DF .text 000000000000006e NETTLE_6 nettle_base64_encode_single
000000000000d080 g DF .text 0000000000000066 NETTLE_6 _nettle_camellia_invert_key
000000000001a360 g DF .text 0000000000000202 NETTLE_6 _nettle_salsa20_core
00000000000140d0 g DF .text 000000000000006e NETTLE_6 nettle_gcm_update
00000000000137d0 g DF .text 0000000000000043 NETTLE_6 nettle_eax_set_key
00000000000132e0 g DF .text 0000000000000065 NETTLE_6 nettle_openssl_des_ecb3_encrypt
0000000000010490 g DF .text 0000000000000009 NETTLE_6 nettle_ccm_aes128_set_key
0000000000014380 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes_encrypt
0000000000017140 g DF .text 0000000000000058 NETTLE_6 nettle_md4_init
000000000000ddf0 g DF .text 0000000000000010 NETTLE_6 nettle_camellia256_invert_key
00000000000147b0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia128_encrypt
0000000000018030 g DF .text 00000000000000dc NETTLE_6 nettle_memxor
0000000000022eb0 g DF .text 00000000000001ff NETTLE_6 _nettle_umac_l2
00000000000232f0 g DF .text 0000000000000088 NETTLE_6 _nettle_umac_l3
0000000000023f00 g DF .text 000000000000034b NETTLE_6 nettle_umac32_digest
0000000000025950 g DF .text 000000000000007e NETTLE_6 _nettle_write_be32
000000000001c460 g DF .text 0000000000000012 NETTLE_6 nettle_sha224_digest
0000000000016500 g DF .text 000000000000000c NETTLE_6 nettle_hmac_sha512_update
00000000000148c0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia256_encrypt
000000000001c250 g DF .text 000000000000003b NETTLE_6 nettle_sha256_init
0000000000018000 g DF .text 0000000000000005 NETTLE_6 nettle_MD5Init
000000000000a930 g DF .text 0000000000000015 NETTLE_6 nettle_aes128_set_decrypt_key
000000000001f460 g DF .text 000000000000003e NETTLE_6 nettle_sha3_512_digest
000000000001ebc0 g DF .text 000000000000059f NETTLE_6 nettle_sha3_permute
000000000000aad0 g DF .text 000000000000007c NETTLE_6 nettle_arcfour_crypt
000000000000c730 g DF .text 0000000000000009 NETTLE_6 nettle_buffer_reset
000000000000c5e0 g DF .text 0000000000000019 NETTLE_6 nettle_base64url_decode_init
0000000000016910 g DF .text 0000000000000029 NETTLE_6 nettle_md2_init
0000000000010350 g DF .text 0000000000000132 NETTLE_6 nettle_ccm_decrypt_message
0000000000025e00 g DF .text 0000000000000093 NETTLE_6 nettle_yarrow256_slow_reseed
0000000000014340 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes_set_iv
0000000000010da0 g DF .text 000000000000007a NETTLE_6 nettle_chacha_poly1305_encrypt
00000000000143e0 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_aes_digest
0000000000009e40 g DF .text 000000000000028b NETTLE_6 _nettle_aes_decrypt
0000000000013600 g DF .text 000000000000005f NETTLE_6 nettle_openssl_des_key_sched
00000000000230b0 g DF .text 00000000000001d4 NETTLE_6 _nettle_umac_l2_final
000000000000b080 g DF .text 0000000000000007 NETTLE_6 nettle_arctwo_set_key_gutmann
000000000000a4a0 g DF .text 0000000000000042 NETTLE_6 nettle_aes_encrypt
0000000000025250 g DF .text 0000000000000111 NETTLE_6 nettle_umac128_set_nonce
000000000001d9e0 g DF .text 0000000000000037 NETTLE_6 nettle_sha512_224_digest
0000000000014460 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes128_update
000000000001abf0 g DF .text 00000000000001e2 NETTLE_6 nettle_sha1_digest
0000000000013b60 g DF .text 0000000000000020 NETTLE_6 nettle_eax_aes128_digest
000000000001fca0 g DF .text 000000000000000d NETTLE_6 nettle_serpent192_set_key
0000000000025dc0 g DF .text 0000000000000036 NETTLE_6 nettle_yarrow256_seed
0000000000015d30 g DF .text 0000000000000029 NETTLE_6 nettle_gosthash94_init
0000000000010170 g DF .text 00000000000000bb NETTLE_6 nettle_ccm_digest
000000000000b610 g DF .text 0000000000000495 NETTLE_6 nettle_blowfish_decrypt
0000000000013ac0 g DF .text 0000000000000020 NETTLE_6 nettle_eax_aes128_set_nonce
00000000000163e0 g DF .text 000000000000000c NETTLE_6 nettle_hmac_sha1_update
000000000000fd70 g DF .text 0000000000000198 NETTLE_6 nettle_ccm_set_nonce
000000000000c5c0 g DF .text 0000000000000015 NETTLE_6 nettle_base64url_encode_init
0000000000020d70 g DF .text 0000000000000000 NETTLE_6 nettle_serpent_decrypt
000000000001fcb0 g DF .text 000000000000000d NETTLE_6 nettle_serpent256_set_key
0000000000012560 g DF .text 0000000000000bff NETTLE_6 nettle_des_decrypt
000000000001d6e0 g DF .text 0000000000000179 NETTLE_6 nettle_sha512_update
000000000000b0b0 g DF .text 0000000000000012 NETTLE_6 nettle_arctwo64_set_key
0000000000018df0 g DF .text 0000000000001567 NETTLE_6 _nettle_ripemd160_compress
00000000000107d0 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes256_encrypt_message
000000000000a5e0 g DF .text 00000000000000e9 NETTLE_6 _nettle_aes_invert
00000000000135e0 g DF .text 000000000000001b NETTLE_6 nettle_openssl_des_set_odd_parity
0000000000016340 g DF .text 000000000000000c NETTLE_6 nettle_hmac_md5_update
0000000000022b30 g DF .text 0000000000000050 NETTLE_6 _nettle_umac_nh
000000000000a8b0 g DF .text 0000000000000027 NETTLE_6 nettle_aes_invert_key
0000000000010530 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes128_digest
000000000001f2f0 g DF .text 0000000000000029 NETTLE_6 nettle_sha3_256_update
000000000000a170 g DF .text 0000000000000043 NETTLE_6 nettle_aes192_decrypt
000000000001f3c0 g DF .text 000000000000003e NETTLE_6 nettle_sha3_384_digest
000000000000c3e0 g DF .text 00000000000000c6 NETTLE_6 nettle_base64_decode_single
000000000000fa00 g DF .text 0000000000000297 NETTLE_6 nettle_cbc_decrypt
000000000000c780 g DF .text 0000000000000032 NETTLE_6 nettle_buffer_write
0000000000010720 g DF .text 0000000000000029 NETTLE_6 nettle_ccm_aes256_set_nonce
000000000001a9c0 g DF .text 000000000000003f NETTLE_6 nettle_salsa20_128_set_key
00000000000146a0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes256_encrypt
00000000000134f0 g DF .text 0000000000000035 NETTLE_6 nettle_openssl_des_ecb_encrypt
00000000000184f0 g DF .text 00000000000000a1 NETTLE_6 nettle_pbkdf2_hmac_sha256
000000000000a120 g DF .text 0000000000000043 NETTLE_6 nettle_aes128_decrypt
0000000000014880 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_camellia256_set_iv
00000000000131f0 g DF .text 0000000000000043 NETTLE_6 nettle_des3_decrypt
0000000000022640 g DF .text 000000000000000d NETTLE_6 nettle_twofish128_set_key
0000000000018750 g DF .text 000000000000017c NETTLE_6 nettle_poly1305_aes_digest
0000000000014790 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_camellia128_update
000000000000a210 g DF .text 000000000000028b NETTLE_6 _nettle_aes_encrypt
0000000000014920 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_camellia256_digest
000000000001d8a0 g DF .text 0000000000000072 NETTLE_6 nettle_sha384_init
000000000000c6f0 g DF .text 0000000000000031 NETTLE_6 nettle_buffer_clear
000000000001a9a0 g DF .text 000000000000001a NETTLE_6 nettle_salsa20_set_nonce
000000000000ad00 g DF .text 0000000000000192 NETTLE_6 nettle_arctwo_decrypt
0000000000018c00 g DF .text 00000000000001e2 NETTLE_6 nettle_ripemd160_digest
00000000000167a0 g DF .text 0000000000000045 NETTLE_6 nettle_knuth_lfib_get_array
0000000000010750 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes256_update
0000000000010690 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes192_encrypt_message
000000000000c7d0 g DF .text 000000000000000e NETTLE_6 nettle_buffer_init
000000000001ade0 g DF .text 0000000000001269 NETTLE_6 _nettle_sha1_compress
0000000000014520 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes192_set_key
000000000000c0c0 g DF .text 000000000000003e NETTLE_6 nettle_base64_encode_group
0000000000013530 g DF .text 00000000000000ab NETTLE_6 nettle_openssl_des_ede3_cbc_encrypt
00000000000138d0 g DF .text 0000000000000009 NETTLE_6 nettle_eax_update
000000000001eb50 g DF .text 0000000000000063 NETTLE_6 _nettle_sha3_pad
0000000000016a80 g DF .text 0000000000000087 NETTLE_6 nettle_md2_digest
0000000000014410 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes128_set_key
00000000000163f0 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha1_digest
0000000000025640 g DF .text 0000000000000306 NETTLE_6 nettle_umac128_digest
000000000001fcc0 g DF .text 0000000000000000 NETTLE_6 nettle_serpent_encrypt
000000000001c420 g DF .text 000000000000003b NETTLE_6 nettle_sha224_init
00000000000163a0 g DF .text 000000000000001d NETTLE_6 nettle_hmac_ripemd160_digest
000000000000a9f0 g DF .text 00000000000000c5 NETTLE_6 nettle_arcfour_set_key
0000000000011a80 g DF .text 0000000000000ada NETTLE_6 nettle_des_encrypt
000000000001f250 g DF .text 0000000000000029 NETTLE_6 nettle_sha3_224_update
00000000000235f0 g DF .text 0000000000000143 NETTLE_6 _nettle_umac_poly128
000000000001d860 g DF .text 0000000000000037 NETTLE_6 nettle_sha512_digest
0000000000016720 g DF .text 0000000000000073 NETTLE_6 nettle_knuth_lfib_get
00000000000106d0 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes192_decrypt_message
0000000000026090 g DF .text 00000000000001b1 NETTLE_6 nettle_yarrow256_update
00000000000105d0 g DF .text 0000000000000009 NETTLE_6 nettle_ccm_aes192_set_key
0000000000016470 g DF .text 000000000000000c NETTLE_6 nettle_hmac_sha256_update
00000000000228d0 g DF .text 0000000000000253 NETTLE_6 nettle_twofish_decrypt
0000000000014550 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes192_set_iv
0000000000011470 g DF .text 0000000000000063 NETTLE_6 nettle_des_check_parity
000000000000bca0 g DF .text 000000000000000d NETTLE_6 nettle_blowfish128_set_key
0000000000024c10 g DF .text 00000000000002b1 NETTLE_6 nettle_umac96_update
00000000000145f0 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_aes192_digest
000000000000f950 g DF .text 00000000000000ac NETTLE_6 nettle_cbc_encrypt
0000000000025ea0 g DF .text 000000000000017f NETTLE_6 nettle_yarrow256_random
000000000000e330 g DF .text 0000000000000499 NETTLE_6 nettle_cast128_decrypt
000000000001890c g DF .text 0000000000000079 NETTLE_6 _nettle_poly1305_block
000000000000a4f0 g DF .text 0000000000000043 NETTLE_6 nettle_aes128_encrypt
00000000000131b0 g DF .text 0000000000000040 NETTLE_6 nettle_des3_encrypt
0000000000010710 g DF .text 0000000000000009 NETTLE_6 nettle_ccm_aes256_set_key
000000000001f2c0 g DF .text 000000000000002f NETTLE_6 nettle_sha3_256_init
000000000000c580 g DF .text 000000000000000a NETTLE_6 nettle_base64_decode_final
00000000000176f0 g DF .text 00000000000001e2 NETTLE_6 nettle_md5_digest
0000000000016250 g DF .text 000000000000000f NETTLE_6 nettle_hmac_update
0000000000014810 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_camellia128_digest
000000000000ab50 g DF .text 00000000000001a7 NETTLE_6 nettle_arctwo_encrypt
00000000000100f0 g DF .text 0000000000000074 NETTLE_6 nettle_ccm_decrypt
000000000000c7c0 g DF .text 000000000000000f NETTLE_6 nettle_buffer_copy
0000000000023290 g DF .text 000000000000005b NETTLE_6 _nettle_umac_l3_init
000000000001a880 g DF .text 00000000000000e6 NETTLE_6 nettle_salsa20r12_crypt
000000000000dd70 g DF .text 0000000000000022 NETTLE_6 nettle_camellia192_set_encrypt_key
0000000000013ed0 g DF .text 0000000000000125 NETTLE_6 nettle_gcm_set_key
000000000000b0d0 g DF .text 0000000000000012 NETTLE_6 nettle_arctwo128_set_key
0000000000016450 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha256_set_key
000000000001da20 g DF .text 0000000000000072 NETTLE_6 nettle_sha512_256_init
000000000000c630 g DF .text 0000000000000078 NETTLE_6 nettle_buffer_grow
00000000000164a0 g DF .text 0000000000000020 NETTLE_6 nettle_hmac_sha384_set_key
000000000001a570 g DF .text 0000000000000305 NETTLE_6 nettle_salsa20_crypt
0000000000014660 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes256_set_iv
00000000000185a0 g DF .text 000000000000002f NETTLE_6 nettle_poly1305_aes_set_key
0000000000014310 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes_set_key
0000000000015f60 g DF .text 000000000000016d NETTLE_6 nettle_gosthash94_digest
000000000000c330 g DF .text 0000000000000090 NETTLE_6 nettle_base64_encode_final
0000000000014740 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia128_set_key
0000000000014700 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_aes256_digest
000000000000d630 g DF .text 0000000000000015 NETTLE_6 nettle_camellia_set_decrypt_key
0000000000024410 g DF .text 00000000000002a1 NETTLE_6 nettle_umac64_update
0000000000024a80 g DF .text 0000000000000069 NETTLE_6 nettle_umac96_set_key
0000000000010d50 g DF .text 0000000000000048 NETTLE_6 nettle_chacha_poly1305_update
0000000000010650 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes192_decrypt
0000000000014850 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia256_set_key
0000000000023990 g DF .text 000000000000012b NETTLE_6 _nettle_umac_set_key
000000000001c290 g DF .text 000000000000016d NETTLE_6 nettle_sha256_update
000000000001f280 g DF .text 000000000000003e NETTLE_6 nettle_sha3_224_digest
0000000000024af0 g DF .text 0000000000000111 NETTLE_6 nettle_umac96_set_nonce
000000000001d920 g DF .text 0000000000000037 NETTLE_6 nettle_sha384_digest
000000000000c7e0 g DF .text 0000000000000640 NETTLE_6 _nettle_camellia_crypt
0000000000010550 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes128_encrypt_message
0000000000016530 g DF .text 00000000000001e1 NETTLE_6 nettle_knuth_lfib_init
000000000000bcd0 g DF .text 0000000000000035 NETTLE_6 nettle_base16_encode_update
0000000000022670 g DF .text 000000000000025b NETTLE_6 nettle_twofish_encrypt
0000000000018020 g DF .text 0000000000000010 NETTLE_6 nettle_MD5Final
0000000000010850 g DF .text 00000000000000e6 NETTLE_6 nettle_chacha_crypt
0000000000013940 g DF .text 000000000000005b NETTLE_6 nettle_eax_decrypt
0000000000010510 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes128_decrypt
0000000000010610 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes192_update
0000000000010cb0 g DF .text 0000000000000092 NETTLE_6 nettle_chacha_poly1305_set_nonce
0000000000014000 g DF .text 00000000000000c1 NETTLE_6 nettle_gcm_set_iv
000000000000d5d0 g DF .text 0000000000000043 NETTLE_6 nettle_camellia128_crypt
0000000000023ac0 g DF .text 0000000000000072 NETTLE_6 nettle_umac32_set_key
0000000000018440 g DF .text 00000000000000a1 NETTLE_6 nettle_pbkdf2_hmac_sha1
000000000000de40 g DF .text 00000000000004e3 NETTLE_6 nettle_cast128_encrypt
000000000000a9c0 g DF .text 0000000000000010 NETTLE_6 nettle_aes256_invert_key
00000000000105e0 g DF .text 0000000000000029 NETTLE_6 nettle_ccm_aes192_set_nonce
0000000000010790 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes256_decrypt
0000000000014250 g DF .text 00000000000000bb NETTLE_6 nettle_gcm_digest
0000000000026020 g DF .text 0000000000000007 NETTLE_6 nettle_yarrow256_is_seeded
000000000001ea80 g DF .text 00000000000000ca NETTLE_6 _nettle_sha3_update
0000000000017520 g DF .text 0000000000000058 NETTLE_6 nettle_md5_init
000000000000aac0 g DF .text 000000000000000d NETTLE_6 nettle_arcfour128_set_key
0000000000016510 g DF .text 0000000000000020 NETTLE_6 nettle_hmac_sha512_digest
0000000000010060 g DF .text 0000000000000082 NETTLE_6 nettle_ccm_encrypt
000000000000aea0 g DF .text 00000000000001c7 NETTLE_6 nettle_arctwo_set_key_ekb
0000000000010590 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes128_decrypt_message
0000000000026030 g DF .text 0000000000000056 NETTLE_6 nettle_yarrow256_needed_sources
00000000000185d0 g DF .text 0000000000000010 NETTLE_6 nettle_poly1305_aes_set_nonce
0000000000022650 g DF .text 000000000000000d NETTLE_6 nettle_twofish192_set_key
00000000000171a0 g DF .text 0000000000000165 NETTLE_6 nettle_md4_update
00000000000167f0 g DF .text 000000000000007f NETTLE_6 nettle_knuth_lfib_random
0000000000010940 g DF .text 0000000000000135 NETTLE_6 _nettle_chacha_core
000000000000dda0 g DF .text 0000000000000043 NETTLE_6 nettle_camellia256_crypt
000000000000c6d0 g DF .text 0000000000000020 NETTLE_6 nettle_buffer_init_size
000000000001aa00 g DF .text 000000000000004b NETTLE_6 nettle_salsa20_256_set_key
000000000000a920 g DF .text 0000000000000010 NETTLE_6 nettle_aes128_invert_key
000000000001f360 g DF .text 000000000000002f NETTLE_6 nettle_sha3_384_init
000000000000a1c0 g DF .text 0000000000000043 NETTLE_6 nettle_aes256_decrypt
0000000000013440 g DF .text 000000000000006e NETTLE_6 nettle_openssl_des_ncbc_encrypt
000000000000bd10 g DF .text 0000000000000008 NETTLE_6 nettle_base16_decode_init
0000000000022660 g DF .text 000000000000000d NETTLE_6 nettle_twofish256_set_key
000000000000b090 g DF .text 0000000000000012 NETTLE_6 nettle_arctwo40_set_key
0000000000010810 g DF .text 0000000000000033 NETTLE_6 nettle_ccm_aes256_decrypt_message
000000000000de00 g DF .text 0000000000000015 NETTLE_6 nettle_camellia256_set_decrypt_key
00000000000143b0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes_decrypt
0000000000023c80 g DF .text 0000000000000280 NETTLE_6 nettle_umac32_update
00000000000147e0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_camellia128_decrypt
0000000000013a90 g DF .text 000000000000002d NETTLE_6 nettle_eax_aes128_set_key
000000000001aa50 g DF .text 000000000000002e NETTLE_6 nettle_sha1_init
00000000000259d0 g DF .text 0000000000000077 NETTLE_6 _nettle_write_le32
0000000000014440 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes128_set_iv
0000000000011060 g DF .text 0000000000000408 NETTLE_6 nettle_ctr_crypt
000000000001f430 g DF .text 0000000000000029 NETTLE_6 nettle_sha3_512_update
00000000000188d0 g DF .text 000000000000003c NETTLE_6 nettle_poly1305_set_key
00000000000144e0 g DF .text 0000000000000026 NETTLE_6 nettle_gcm_aes128_digest
00000000000160d0 g DF .text 0000000000000172 NETTLE_6 nettle_hmac_set_key
000000000000b510 g DF .text 00000000000000f2 NETTLE_6 nettle_blowfish_encrypt
000000000001d660 g DF .text 0000000000000072 NETTLE_6 nettle_sha512_init
00000000000262f0 g DF .text 000000000000017f NETTLE_6 _nettle_gcm_hash8
00000000000138e0 g DF .text 000000000000005e NETTLE_6 nettle_eax_encrypt
000000000000d0f0 g DF .text 00000000000004dd NETTLE_6 nettle_camellia128_set_encrypt_key
000000000001f220 g DF .text 000000000000002f NETTLE_6 nettle_sha3_224_init
00000000000104f0 g DF .text 000000000000001c NETTLE_6 nettle_ccm_aes128_encrypt
0000000000014360 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_aes_update
000000000000a950 g DF .text 0000000000000015 NETTLE_6 nettle_aes192_set_encrypt_key
0000000000016320 g DF .text 000000000000001d NETTLE_6 nettle_hmac_md5_set_key
0000000000014630 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes256_set_key
0000000000010670 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes192_digest
00000000000178e0 g DF .text 0000000000000717 NETTLE_6 _nettle_md5_compress
000000000000c100 g DF .text 0000000000000015 NETTLE_6 nettle_base64_encode_init
000000000000a6d0 g DF .text 000000000000014b NETTLE_6 _nettle_aes_set_key
000000000000de20 g DF .text 0000000000000015 NETTLE_6 nettle_camellia192_set_decrypt_key
000000000000a0d0 g DF .text 0000000000000042 NETTLE_6 nettle_aes_decrypt
000000000000bdd0 g DF .text 00000000000000bb NETTLE_6 nettle_base16_decode_update
0000000000013ae0 g DF .text 0000000000000020 NETTLE_6 nettle_eax_aes128_update
000000000001aa80 g DF .text 0000000000000165 NETTLE_6 nettle_sha1_update
000000000000dd40 g DF .text 0000000000000023 NETTLE_6 nettle_camellia256_set_encrypt_key
00000000000164c0 g DF .text 0000000000000020 NETTLE_6 nettle_hmac_sha384_digest
0000000000016350 g DF .text 000000000000001d NETTLE_6 nettle_hmac_md5_digest
000000000000a540 g DF .text 0000000000000043 NETTLE_6 nettle_aes192_encrypt
0000000000018a60 g DF .text 000000000000002e NETTLE_6 nettle_ripemd160_init
000000000000ff10 g DF .text 000000000000014d NETTLE_6 nettle_ccm_update
0000000000018010 g DF .text 000000000000000d NETTLE_6 nettle_MD5Update
000000000001f320 g DF .text 000000000000003e NETTLE_6 nettle_sha3_256_digest
000000000000c190 g DF .text 0000000000000198 NETTLE_6 nettle_base64_encode_update
000000000001d960 g DF .text 0000000000000072 NETTLE_6 nettle_sha512_224_init
0000000000026280 g DF .text 0000000000000064 NETTLE_6 nettle_yarrow_key_event_estimate
0000000000010230 g DF .text 0000000000000119 NETTLE_6 nettle_ccm_encrypt_message
0000000000016370 g DF .text 000000000000001d NETTLE_6 nettle_hmac_ripemd160_set_key
000000000000a590 g DF .text 0000000000000043 NETTLE_6 nettle_aes256_encrypt
0000000000014770 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_camellia128_set_iv
0000000000025a50 g DF .text 00000000000000a8 NETTLE_6 _nettle_write_le64
000000000000b0f0 g DF .text 0000000000000012 NETTLE_6 nettle_arctwo128_set_key_gutmann
00000000000189e0 g DF .text 0000000000000020 NETTLE_6 nettle_realloc
0000000000013b30 g DF .text 000000000000002a NETTLE_6 nettle_eax_aes128_decrypt
0000000000025bd0 g DF .text 00000000000001e2 NETTLE_6 nettle_yarrow256_fast_reseed
000000000000c740 g DF .text 0000000000000039 NETTLE_6 nettle_buffer_space
000000000001f4a0 g DF .text 00000000000007e3 NETTLE_6 nettle_serpent_set_key
0000000000011520 g DF .text 0000000000000559 NETTLE_6 nettle_des_set_key
00000000000145c0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes192_decrypt
00000000000104d0 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes128_update
00000000000107b0 g DF .text 0000000000000016 NETTLE_6 nettle_ccm_aes256_digest
000000000001f390 g DF .text 0000000000000029 NETTLE_6 nettle_sha3_384_update
00000000000144b0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes128_decrypt
00000000000139a0 g DF .text 00000000000000e5 NETTLE_6 nettle_eax_digest
00000000000114e0 g DF .text 000000000000003e NETTLE_6 nettle_des_fix_parity
00000000000146d0 g DF .text 0000000000000030 NETTLE_6 nettle_gcm_aes256_decrypt
00000000000185e0 g DF .text 0000000000000166 NETTLE_6 nettle_poly1305_aes_update
0000000000023b40 g DF .text 0000000000000134 NETTLE_6 nettle_umac32_set_nonce
00000000000148a0 g DF .text 0000000000000018 NETTLE_6 nettle_gcm_camellia256_update
000000000000e7d0 g DF .text 000000000000116e NETTLE_6 nettle_cast5_set_key
0000000000013160 g DF .text 0000000000000045 NETTLE_6 nettle_des3_set_key
00000000000242d0 g DF .text 0000000000000134 NETTLE_6 nettle_umac64_set_nonce
0000000000018a90 g DF .text 0000000000000165 NETTLE_6 nettle_ripemd160_update
000000000000a9d0 g DF .text 0000000000000015 NETTLE_6 nettle_aes256_set_decrypt_key
000000000000d620 g DF .text 0000000000000010 NETTLE_6 nettle_camellia128_invert_key
000000000000b070 g DF .text 000000000000000c NETTLE_6 nettle_arctwo_set_key
00000000000251e0 g DF .text 0000000000000069 NETTLE_6 nettle_umac128_set_key
0000000000018a00 g DF .text 0000000000000051 NETTLE_6 nettle_xrealloc
0000000000018110 g DF .text 0000000000000176 NETTLE_6 nettle_memxor3
0000000000016480 g DF .text 000000000000001d NETTLE_6 nettle_hmac_sha256_digest
0000000000018985 g DF .text 0000000000000000 NETTLE_6 nettle_poly1305_digest
Excellent. Thank you for that. I've also found this website, which is wonderful. Looks like nettle_aes192_invert_key
is not included in older versions (I have 2.7.1
installed on my computer) but is included in your version, so that can be our quick-and-dirty check for now.
Good news; I emailed the nettle-bugs
mailing list, and we're getting some nettle_version
functions we can poll at runtime. So we can have some hacks for older versions, but new versions should be testable.
@staticfloat Updated with a check of the symbol you suggested and comment pointing to this issue and the upstream-tracker. Test passes on my nettle 3.1.1.
Great. Good stuff. Thank you for your help!
worth tagging this at some point?
This fixes #44.
Since I cannot find a way to check reliably at runtime the version check is only done at compile time. This should be good enough for most purpose.