JuliaCrypto / Nettle.jl

Julia wrapper around nettle cryptographic hashing/encryption library providing MD5, SHA1, SHA2 hashing and HMAC functionality, as well as AES encryption/decryption
Other
51 stars 34 forks source link

Nettle 3+ compatible #46

Closed yuyichao closed 9 years ago

yuyichao commented 9 years ago

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.

coveralls commented 9 years ago

Coverage Status

Coverage remained the same at 94.64% when pulling 32971a7adfca6d8c887118d50caf046209ae211c on yuyichao:nettle-3 into bfec54cfb314818c87c58d19cf6e85b49b981661 on staticfloat:master.

coveralls commented 9 years ago

Coverage Status

Coverage remained the same at 94.64% when pulling 32971a7adfca6d8c887118d50caf046209ae211c on yuyichao:nettle-3 into bfec54cfb314818c87c58d19cf6e85b49b981661 on staticfloat:master.

coveralls commented 9 years ago

Coverage Status

Coverage remained the same at 94.64% when pulling 32971a7adfca6d8c887118d50caf046209ae211c on yuyichao:nettle-3 into bfec54cfb314818c87c58d19cf6e85b49b981661 on staticfloat:master.

yuyichao commented 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....

staticfloat commented 9 years ago

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.

yuyichao commented 9 years ago

@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
staticfloat commented 9 years ago

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.

staticfloat commented 9 years ago

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.

yuyichao commented 9 years ago

@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.

coveralls commented 9 years ago

Coverage Status

Coverage decreased (-1.51%) to 94.78% when pulling 19f274abd22573518564b346be550f406b9e6858 on yuyichao:nettle-3 into e2b0480ed39b8b3914a1cb828f8128386aafc0a0 on staticfloat:master.

staticfloat commented 9 years ago

Great. Good stuff. Thank you for your help!

tkelman commented 9 years ago

worth tagging this at some point?

staticfloat commented 9 years ago

https://github.com/JuliaLang/METADATA.jl/pull/2968