diff --git a/builds/msvc/vs2010/libsodium/libsodium.vcxproj b/builds/msvc/vs2010/libsodium/libsodium.vcxproj index 2ad83338..f2a462f3 100644 --- a/builds/msvc/vs2010/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2010/libsodium/libsodium.vcxproj @@ -180,6 +180,7 @@ + @@ -328,6 +329,10 @@ + + + + diff --git a/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2012/libsodium/libsodium.vcxproj b/builds/msvc/vs2012/libsodium/libsodium.vcxproj index 2db4a75e..5d7ddf59 100644 --- a/builds/msvc/vs2012/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2012/libsodium/libsodium.vcxproj @@ -180,6 +180,7 @@ + @@ -328,6 +329,10 @@ + + + + diff --git a/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2013/libsodium/libsodium.vcxproj b/builds/msvc/vs2013/libsodium/libsodium.vcxproj index 8bcef354..cd736217 100644 --- a/builds/msvc/vs2013/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2013/libsodium/libsodium.vcxproj @@ -180,6 +180,7 @@ + @@ -328,6 +329,10 @@ + + + + diff --git a/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2015/libsodium/libsodium.vcxproj b/builds/msvc/vs2015/libsodium/libsodium.vcxproj index 8bb767fb..9dd258ef 100644 --- a/builds/msvc/vs2015/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2015/libsodium/libsodium.vcxproj @@ -180,6 +180,7 @@ + @@ -328,6 +329,10 @@ + + + + diff --git a/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2017/libsodium/libsodium.vcxproj b/builds/msvc/vs2017/libsodium/libsodium.vcxproj index b17ef144..84c87321 100644 --- a/builds/msvc/vs2017/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2017/libsodium/libsodium.vcxproj @@ -180,6 +180,7 @@ + @@ -328,6 +329,10 @@ + + + + diff --git a/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2019/libsodium/libsodium.vcxproj b/builds/msvc/vs2019/libsodium/libsodium.vcxproj index 9ac766d2..261a44f5 100644 --- a/builds/msvc/vs2019/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2019/libsodium/libsodium.vcxproj @@ -204,6 +204,7 @@ + @@ -352,6 +353,10 @@ + + + + diff --git a/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2019/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/builds/msvc/vs2022/libsodium/libsodium.vcxproj b/builds/msvc/vs2022/libsodium/libsodium.vcxproj index 2fb84695..ae0d2e7b 100644 --- a/builds/msvc/vs2022/libsodium/libsodium.vcxproj +++ b/builds/msvc/vs2022/libsodium/libsodium.vcxproj @@ -133,6 +133,7 @@ + @@ -281,6 +282,10 @@ + + + + diff --git a/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters b/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters index 389276fb..c6048360 100644 --- a/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters +++ b/builds/msvc/vs2022/libsodium/libsodium.vcxproj.filters @@ -333,6 +333,9 @@ crypto_aead\aegis256\aesni + + crypto_aead\aegis256\soft + crypto_aead\aegis256\armcrypto @@ -773,6 +776,18 @@ crypto_aead\aegis128l\armcrypto + + crypto_aead\aegis256 + + + crypto_aead\aegis256\aesni + + + crypto_aead\aegis256\soft + + + crypto_aead\aegis256\armcrypto + crypto_core\ed25519 @@ -826,6 +841,9 @@ {d8e5d430-b695-3e19-81bd-31fd1e6445da} + + {853de148-043c-36b2-9cf8-1aa4541da046} + {3e53394c-b59c-30cc-ae69-a4f46f9edfa3} diff --git a/dist-build/emscripten-symbols.def b/dist-build/emscripten-symbols.def index e45d8704..a42ffc14 100644 --- a/dist-build/emscripten-symbols.def +++ b/dist-build/emscripten-symbols.def @@ -13,7 +13,6 @@ _crypto_aead_aegis256_decrypt 0 1 _crypto_aead_aegis256_decrypt_detached 0 1 _crypto_aead_aegis256_encrypt 0 1 _crypto_aead_aegis256_encrypt_detached 0 1 -_crypto_aead_aegis256_is_available 0 1 _crypto_aead_aegis256_keybytes 0 1 _crypto_aead_aegis256_keygen 0 1 _crypto_aead_aegis256_messagebytes_max 0 1 diff --git a/dist-build/emscripten.sh b/dist-build/emscripten.sh index 24bb45ea..dffa32fd 100755 --- a/dist-build/emscripten.sh +++ b/dist-build/emscripten.sh @@ -2,7 +2,7 @@ export MAKE_FLAGS='-j4' export EXPORTED_FUNCTIONS_STANDARD='["_malloc","_free","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_keybytes","_crypto_auth_keygen","_crypto_auth_verify","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_messagebytes_max","_crypto_box_noncebytes","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_generichash","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_keygen","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_kdf_bytes_max","_crypto_kdf_bytes_min","_crypto_kdf_contextbytes","_crypto_kdf_derive_from_key","_crypto_kdf_keybytes","_crypto_kdf_keygen","_crypto_kx_client_session_keys","_crypto_kx_keypair","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_seed_keypair","_crypto_kx_seedbytes","_crypto_kx_server_session_keys","_crypto_kx_sessionkeybytes","_crypto_pwhash","_crypto_pwhash_alg_argon2i13","_crypto_pwhash_alg_argon2id13","_crypto_pwhash_alg_default","_crypto_pwhash_bytes_max","_crypto_pwhash_bytes_min","_crypto_pwhash_memlimit_interactive","_crypto_pwhash_memlimit_max","_crypto_pwhash_memlimit_min","_crypto_pwhash_memlimit_moderate","_crypto_pwhash_memlimit_sensitive","_crypto_pwhash_opslimit_interactive","_crypto_pwhash_opslimit_max","_crypto_pwhash_opslimit_min","_crypto_pwhash_opslimit_moderate","_crypto_pwhash_opslimit_sensitive","_crypto_pwhash_passwd_max","_crypto_pwhash_passwd_min","_crypto_pwhash_saltbytes","_crypto_pwhash_str","_crypto_pwhash_str_alg","_crypto_pwhash_str_needs_rehash","_crypto_pwhash_str_verify","_crypto_pwhash_strbytes","_crypto_pwhash_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_keygen","_crypto_secretbox_macbytes","_crypto_secretbox_messagebytes_max","_crypto_secretbox_noncebytes","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_pull","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_shorthash_keygen","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_messagebytes_max","_crypto_sign_open","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_statebytes","_crypto_sign_update","_crypto_sign_verify_detached","_randombytes","_randombytes_buf","_randombytes_buf_deterministic","_randombytes_close","_randombytes_random","_randombytes_seedbytes","_randombytes_stir","_randombytes_uniform","_sodium_base642bin","_sodium_base64_encoded_len","_sodium_bin2base64","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_minimal","_sodium_library_version_major","_sodium_library_version_minor","_sodium_pad","_sodium_unpad","_sodium_version_string"]' -export EXPORTED_FUNCTIONS_SUMO='["_malloc","_free","_crypto_aead_aegis128l_abytes","_crypto_aead_aegis128l_decrypt","_crypto_aead_aegis128l_decrypt_detached","_crypto_aead_aegis128l_encrypt","_crypto_aead_aegis128l_encrypt_detached","_crypto_aead_aegis128l_keybytes","_crypto_aead_aegis128l_keygen","_crypto_aead_aegis128l_messagebytes_max","_crypto_aead_aegis128l_npubbytes","_crypto_aead_aegis128l_nsecbytes","_crypto_aead_aegis256_abytes","_crypto_aead_aegis256_decrypt","_crypto_aead_aegis256_decrypt_detached","_crypto_aead_aegis256_encrypt","_crypto_aead_aegis256_encrypt_detached","_crypto_aead_aegis256_is_available","_crypto_aead_aegis256_keybytes","_crypto_aead_aegis256_keygen","_crypto_aead_aegis256_messagebytes_max","_crypto_aead_aegis256_npubbytes","_crypto_aead_aegis256_nsecbytes","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_hmacsha256","_crypto_auth_hmacsha256_bytes","_crypto_auth_hmacsha256_final","_crypto_auth_hmacsha256_init","_crypto_auth_hmacsha256_keybytes","_crypto_auth_hmacsha256_keygen","_crypto_auth_hmacsha256_statebytes","_crypto_auth_hmacsha256_update","_crypto_auth_hmacsha256_verify","_crypto_auth_hmacsha512","_crypto_auth_hmacsha512256","_crypto_auth_hmacsha512256_bytes","_crypto_auth_hmacsha512256_final","_crypto_auth_hmacsha512256_init","_crypto_auth_hmacsha512256_keybytes","_crypto_auth_hmacsha512256_keygen","_crypto_auth_hmacsha512256_statebytes","_crypto_auth_hmacsha512256_update","_crypto_auth_hmacsha512256_verify","_crypto_auth_hmacsha512_bytes","_crypto_auth_hmacsha512_final","_crypto_auth_hmacsha512_init","_crypto_auth_hmacsha512_keybytes","_crypto_auth_hmacsha512_keygen","_crypto_auth_hmacsha512_statebytes","_crypto_auth_hmacsha512_update","_crypto_auth_hmacsha512_verify","_crypto_auth_keybytes","_crypto_auth_keygen","_crypto_auth_primitive","_crypto_auth_verify","_crypto_box","_crypto_box_afternm","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_boxzerobytes","_crypto_box_curve25519xchacha20poly1305_beforenm","_crypto_box_curve25519xchacha20poly1305_beforenmbytes","_crypto_box_curve25519xchacha20poly1305_detached","_crypto_box_curve25519xchacha20poly1305_detached_afternm","_crypto_box_curve25519xchacha20poly1305_easy","_crypto_box_curve25519xchacha20poly1305_easy_afternm","_crypto_box_curve25519xchacha20poly1305_keypair","_crypto_box_curve25519xchacha20poly1305_macbytes","_crypto_box_curve25519xchacha20poly1305_messagebytes_max","_crypto_box_curve25519xchacha20poly1305_noncebytes","_crypto_box_curve25519xchacha20poly1305_open_detached","_crypto_box_curve25519xchacha20poly1305_open_detached_afternm","_crypto_box_curve25519xchacha20poly1305_open_easy","_crypto_box_curve25519xchacha20poly1305_open_easy_afternm","_crypto_box_curve25519xchacha20poly1305_publickeybytes","_crypto_box_curve25519xchacha20poly1305_seal","_crypto_box_curve25519xchacha20poly1305_seal_open","_crypto_box_curve25519xchacha20poly1305_sealbytes","_crypto_box_curve25519xchacha20poly1305_secretkeybytes","_crypto_box_curve25519xchacha20poly1305_seed_keypair","_crypto_box_curve25519xchacha20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305","_crypto_box_curve25519xsalsa20poly1305_afternm","_crypto_box_curve25519xsalsa20poly1305_beforenm","_crypto_box_curve25519xsalsa20poly1305_beforenmbytes","_crypto_box_curve25519xsalsa20poly1305_boxzerobytes","_crypto_box_curve25519xsalsa20poly1305_keypair","_crypto_box_curve25519xsalsa20poly1305_macbytes","_crypto_box_curve25519xsalsa20poly1305_messagebytes_max","_crypto_box_curve25519xsalsa20poly1305_noncebytes","_crypto_box_curve25519xsalsa20poly1305_open","_crypto_box_curve25519xsalsa20poly1305_open_afternm","_crypto_box_curve25519xsalsa20poly1305_publickeybytes","_crypto_box_curve25519xsalsa20poly1305_secretkeybytes","_crypto_box_curve25519xsalsa20poly1305_seed_keypair","_crypto_box_curve25519xsalsa20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305_zerobytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_messagebytes_max","_crypto_box_noncebytes","_crypto_box_open","_crypto_box_open_afternm","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_primitive","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_box_zerobytes","_crypto_core_ed25519_add","_crypto_core_ed25519_bytes","_crypto_core_ed25519_from_string","_crypto_core_ed25519_from_string_ro","_crypto_core_ed25519_from_uniform","_crypto_core_ed25519_hashbytes","_crypto_core_ed25519_is_valid_point","_crypto_core_ed25519_nonreducedscalarbytes","_crypto_core_ed25519_random","_crypto_core_ed25519_scalar_add","_crypto_core_ed25519_scalar_complement","_crypto_core_ed25519_scalar_invert","_crypto_core_ed25519_scalar_is_canonical","_crypto_core_ed25519_scalar_mul","_crypto_core_ed25519_scalar_negate","_crypto_core_ed25519_scalar_random","_crypto_core_ed25519_scalar_reduce","_crypto_core_ed25519_scalar_sub","_crypto_core_ed25519_scalarbytes","_crypto_core_ed25519_sub","_crypto_core_ed25519_uniformbytes","_crypto_core_hchacha20","_crypto_core_hchacha20_constbytes","_crypto_core_hchacha20_inputbytes","_crypto_core_hchacha20_keybytes","_crypto_core_hchacha20_outputbytes","_crypto_core_hsalsa20","_crypto_core_hsalsa20_constbytes","_crypto_core_hsalsa20_inputbytes","_crypto_core_hsalsa20_keybytes","_crypto_core_hsalsa20_outputbytes","_crypto_core_ristretto255_add","_crypto_core_ristretto255_bytes","_crypto_core_ristretto255_from_hash","_crypto_core_ristretto255_from_string","_crypto_core_ristretto255_from_string_ro","_crypto_core_ristretto255_hashbytes","_crypto_core_ristretto255_is_valid_point","_crypto_core_ristretto255_nonreducedscalarbytes","_crypto_core_ristretto255_random","_crypto_core_ristretto255_scalar_add","_crypto_core_ristretto255_scalar_complement","_crypto_core_ristretto255_scalar_invert","_crypto_core_ristretto255_scalar_is_canonical","_crypto_core_ristretto255_scalar_mul","_crypto_core_ristretto255_scalar_negate","_crypto_core_ristretto255_scalar_random","_crypto_core_ristretto255_scalar_reduce","_crypto_core_ristretto255_scalar_sub","_crypto_core_ristretto255_scalarbytes","_crypto_core_ristretto255_sub","_crypto_core_salsa20","_crypto_core_salsa2012","_crypto_core_salsa2012_constbytes","_crypto_core_salsa2012_inputbytes","_crypto_core_salsa2012_keybytes","_crypto_core_salsa2012_outputbytes","_crypto_core_salsa208","_crypto_core_salsa208_constbytes","_crypto_core_salsa208_inputbytes","_crypto_core_salsa208_keybytes","_crypto_core_salsa208_outputbytes","_crypto_core_salsa20_constbytes","_crypto_core_salsa20_inputbytes","_crypto_core_salsa20_keybytes","_crypto_core_salsa20_outputbytes","_crypto_generichash","_crypto_generichash_blake2b","_crypto_generichash_blake2b_bytes","_crypto_generichash_blake2b_bytes_max","_crypto_generichash_blake2b_bytes_min","_crypto_generichash_blake2b_final","_crypto_generichash_blake2b_init","_crypto_generichash_blake2b_init_salt_personal","_crypto_generichash_blake2b_keybytes","_crypto_generichash_blake2b_keybytes_max","_crypto_generichash_blake2b_keybytes_min","_crypto_generichash_blake2b_keygen","_crypto_generichash_blake2b_personalbytes","_crypto_generichash_blake2b_salt_personal","_crypto_generichash_blake2b_saltbytes","_crypto_generichash_blake2b_statebytes","_crypto_generichash_blake2b_update","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_keygen","_crypto_generichash_primitive","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_hash_primitive","_crypto_hash_sha256","_crypto_hash_sha256_bytes","_crypto_hash_sha256_final","_crypto_hash_sha256_init","_crypto_hash_sha256_statebytes","_crypto_hash_sha256_update","_crypto_hash_sha512","_crypto_hash_sha512_bytes","_crypto_hash_sha512_final","_crypto_hash_sha512_init","_crypto_hash_sha512_statebytes","_crypto_hash_sha512_update","_crypto_kdf_blake2b_bytes_max","_crypto_kdf_blake2b_bytes_min","_crypto_kdf_blake2b_contextbytes","_crypto_kdf_blake2b_derive_from_key","_crypto_kdf_blake2b_keybytes","_crypto_kdf_bytes_max","_crypto_kdf_bytes_min","_crypto_kdf_contextbytes","_crypto_kdf_derive_from_key","_crypto_kdf_hkdf_sha256_bytes_max","_crypto_kdf_hkdf_sha256_bytes_min","_crypto_kdf_hkdf_sha256_expand","_crypto_kdf_hkdf_sha256_extract","_crypto_kdf_hkdf_sha256_keybytes","_crypto_kdf_hkdf_sha256_keygen","_crypto_kdf_hkdf_sha512_bytes_max","_crypto_kdf_hkdf_sha512_bytes_min","_crypto_kdf_hkdf_sha512_expand","_crypto_kdf_hkdf_sha512_extract","_crypto_kdf_hkdf_sha512_keybytes","_crypto_kdf_hkdf_sha512_keygen","_crypto_kdf_keybytes","_crypto_kdf_keygen","_crypto_kdf_primitive","_crypto_kx_client_session_keys","_crypto_kx_keypair","_crypto_kx_primitive","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_seed_keypair","_crypto_kx_seedbytes","_crypto_kx_server_session_keys","_crypto_kx_sessionkeybytes","_crypto_onetimeauth","_crypto_onetimeauth_bytes","_crypto_onetimeauth_final","_crypto_onetimeauth_init","_crypto_onetimeauth_keybytes","_crypto_onetimeauth_keygen","_crypto_onetimeauth_poly1305","_crypto_onetimeauth_poly1305_bytes","_crypto_onetimeauth_poly1305_final","_crypto_onetimeauth_poly1305_init","_crypto_onetimeauth_poly1305_keybytes","_crypto_onetimeauth_poly1305_keygen","_crypto_onetimeauth_poly1305_statebytes","_crypto_onetimeauth_poly1305_update","_crypto_onetimeauth_poly1305_verify","_crypto_onetimeauth_primitive","_crypto_onetimeauth_statebytes","_crypto_onetimeauth_update","_crypto_onetimeauth_verify","_crypto_pwhash","_crypto_pwhash_alg_argon2i13","_crypto_pwhash_alg_argon2id13","_crypto_pwhash_alg_default","_crypto_pwhash_argon2i","_crypto_pwhash_argon2i_alg_argon2i13","_crypto_pwhash_argon2i_bytes_max","_crypto_pwhash_argon2i_bytes_min","_crypto_pwhash_argon2i_memlimit_interactive","_crypto_pwhash_argon2i_memlimit_max","_crypto_pwhash_argon2i_memlimit_min","_crypto_pwhash_argon2i_memlimit_moderate","_crypto_pwhash_argon2i_memlimit_sensitive","_crypto_pwhash_argon2i_opslimit_interactive","_crypto_pwhash_argon2i_opslimit_max","_crypto_pwhash_argon2i_opslimit_min","_crypto_pwhash_argon2i_opslimit_moderate","_crypto_pwhash_argon2i_opslimit_sensitive","_crypto_pwhash_argon2i_passwd_max","_crypto_pwhash_argon2i_passwd_min","_crypto_pwhash_argon2i_saltbytes","_crypto_pwhash_argon2i_str","_crypto_pwhash_argon2i_str_needs_rehash","_crypto_pwhash_argon2i_str_verify","_crypto_pwhash_argon2i_strbytes","_crypto_pwhash_argon2i_strprefix","_crypto_pwhash_argon2id","_crypto_pwhash_argon2id_alg_argon2id13","_crypto_pwhash_argon2id_bytes_max","_crypto_pwhash_argon2id_bytes_min","_crypto_pwhash_argon2id_memlimit_interactive","_crypto_pwhash_argon2id_memlimit_max","_crypto_pwhash_argon2id_memlimit_min","_crypto_pwhash_argon2id_memlimit_moderate","_crypto_pwhash_argon2id_memlimit_sensitive","_crypto_pwhash_argon2id_opslimit_interactive","_crypto_pwhash_argon2id_opslimit_max","_crypto_pwhash_argon2id_opslimit_min","_crypto_pwhash_argon2id_opslimit_moderate","_crypto_pwhash_argon2id_opslimit_sensitive","_crypto_pwhash_argon2id_passwd_max","_crypto_pwhash_argon2id_passwd_min","_crypto_pwhash_argon2id_saltbytes","_crypto_pwhash_argon2id_str","_crypto_pwhash_argon2id_str_needs_rehash","_crypto_pwhash_argon2id_str_verify","_crypto_pwhash_argon2id_strbytes","_crypto_pwhash_argon2id_strprefix","_crypto_pwhash_bytes_max","_crypto_pwhash_bytes_min","_crypto_pwhash_memlimit_interactive","_crypto_pwhash_memlimit_max","_crypto_pwhash_memlimit_min","_crypto_pwhash_memlimit_moderate","_crypto_pwhash_memlimit_sensitive","_crypto_pwhash_opslimit_interactive","_crypto_pwhash_opslimit_max","_crypto_pwhash_opslimit_min","_crypto_pwhash_opslimit_moderate","_crypto_pwhash_opslimit_sensitive","_crypto_pwhash_passwd_max","_crypto_pwhash_passwd_min","_crypto_pwhash_primitive","_crypto_pwhash_saltbytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_bytes_max","_crypto_pwhash_scryptsalsa208sha256_bytes_min","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive","_crypto_pwhash_scryptsalsa208sha256_memlimit_max","_crypto_pwhash_scryptsalsa208sha256_memlimit_min","_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive","_crypto_pwhash_scryptsalsa208sha256_opslimit_max","_crypto_pwhash_scryptsalsa208sha256_opslimit_min","_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_passwd_max","_crypto_pwhash_scryptsalsa208sha256_passwd_min","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_needs_rehash","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_strprefix","_crypto_pwhash_str","_crypto_pwhash_str_alg","_crypto_pwhash_str_needs_rehash","_crypto_pwhash_str_verify","_crypto_pwhash_strbytes","_crypto_pwhash_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_curve25519","_crypto_scalarmult_curve25519_base","_crypto_scalarmult_curve25519_bytes","_crypto_scalarmult_curve25519_scalarbytes","_crypto_scalarmult_ed25519","_crypto_scalarmult_ed25519_base","_crypto_scalarmult_ed25519_base_noclamp","_crypto_scalarmult_ed25519_bytes","_crypto_scalarmult_ed25519_noclamp","_crypto_scalarmult_ed25519_scalarbytes","_crypto_scalarmult_primitive","_crypto_scalarmult_ristretto255","_crypto_scalarmult_ristretto255_base","_crypto_scalarmult_ristretto255_bytes","_crypto_scalarmult_ristretto255_scalarbytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox","_crypto_secretbox_boxzerobytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_keygen","_crypto_secretbox_macbytes","_crypto_secretbox_messagebytes_max","_crypto_secretbox_noncebytes","_crypto_secretbox_open","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretbox_primitive","_crypto_secretbox_xchacha20poly1305_detached","_crypto_secretbox_xchacha20poly1305_easy","_crypto_secretbox_xchacha20poly1305_keybytes","_crypto_secretbox_xchacha20poly1305_macbytes","_crypto_secretbox_xchacha20poly1305_messagebytes_max","_crypto_secretbox_xchacha20poly1305_noncebytes","_crypto_secretbox_xchacha20poly1305_open_detached","_crypto_secretbox_xchacha20poly1305_open_easy","_crypto_secretbox_xsalsa20poly1305","_crypto_secretbox_xsalsa20poly1305_boxzerobytes","_crypto_secretbox_xsalsa20poly1305_keybytes","_crypto_secretbox_xsalsa20poly1305_keygen","_crypto_secretbox_xsalsa20poly1305_macbytes","_crypto_secretbox_xsalsa20poly1305_messagebytes_max","_crypto_secretbox_xsalsa20poly1305_noncebytes","_crypto_secretbox_xsalsa20poly1305_open","_crypto_secretbox_xsalsa20poly1305_zerobytes","_crypto_secretbox_zerobytes","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_pull","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_shorthash_keygen","_crypto_shorthash_primitive","_crypto_shorthash_siphash24","_crypto_shorthash_siphash24_bytes","_crypto_shorthash_siphash24_keybytes","_crypto_shorthash_siphashx24","_crypto_shorthash_siphashx24_bytes","_crypto_shorthash_siphashx24_keybytes","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519","_crypto_sign_ed25519_bytes","_crypto_sign_ed25519_detached","_crypto_sign_ed25519_keypair","_crypto_sign_ed25519_messagebytes_max","_crypto_sign_ed25519_open","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_publickeybytes","_crypto_sign_ed25519_secretkeybytes","_crypto_sign_ed25519_seed_keypair","_crypto_sign_ed25519_seedbytes","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_ed25519_sk_to_pk","_crypto_sign_ed25519_sk_to_seed","_crypto_sign_ed25519_verify_detached","_crypto_sign_ed25519ph_final_create","_crypto_sign_ed25519ph_final_verify","_crypto_sign_ed25519ph_init","_crypto_sign_ed25519ph_statebytes","_crypto_sign_ed25519ph_update","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_messagebytes_max","_crypto_sign_open","_crypto_sign_primitive","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_statebytes","_crypto_sign_update","_crypto_sign_verify_detached","_crypto_stream","_crypto_stream_chacha20","_crypto_stream_chacha20_ietf","_crypto_stream_chacha20_ietf_keybytes","_crypto_stream_chacha20_ietf_keygen","_crypto_stream_chacha20_ietf_messagebytes_max","_crypto_stream_chacha20_ietf_noncebytes","_crypto_stream_chacha20_ietf_xor","_crypto_stream_chacha20_ietf_xor_ic","_crypto_stream_chacha20_keybytes","_crypto_stream_chacha20_keygen","_crypto_stream_chacha20_messagebytes_max","_crypto_stream_chacha20_noncebytes","_crypto_stream_chacha20_xor","_crypto_stream_chacha20_xor_ic","_crypto_stream_keybytes","_crypto_stream_keygen","_crypto_stream_messagebytes_max","_crypto_stream_noncebytes","_crypto_stream_primitive","_crypto_stream_salsa20","_crypto_stream_salsa2012","_crypto_stream_salsa2012_keybytes","_crypto_stream_salsa2012_keygen","_crypto_stream_salsa2012_messagebytes_max","_crypto_stream_salsa2012_noncebytes","_crypto_stream_salsa2012_xor","_crypto_stream_salsa208","_crypto_stream_salsa208_keybytes","_crypto_stream_salsa208_keygen","_crypto_stream_salsa208_messagebytes_max","_crypto_stream_salsa208_noncebytes","_crypto_stream_salsa208_xor","_crypto_stream_salsa20_keybytes","_crypto_stream_salsa20_keygen","_crypto_stream_salsa20_messagebytes_max","_crypto_stream_salsa20_noncebytes","_crypto_stream_salsa20_xor","_crypto_stream_salsa20_xor_ic","_crypto_stream_xchacha20","_crypto_stream_xchacha20_keybytes","_crypto_stream_xchacha20_keygen","_crypto_stream_xchacha20_messagebytes_max","_crypto_stream_xchacha20_noncebytes","_crypto_stream_xchacha20_xor","_crypto_stream_xchacha20_xor_ic","_crypto_stream_xor","_crypto_stream_xsalsa20","_crypto_stream_xsalsa20_keybytes","_crypto_stream_xsalsa20_keygen","_crypto_stream_xsalsa20_messagebytes_max","_crypto_stream_xsalsa20_noncebytes","_crypto_stream_xsalsa20_xor","_crypto_stream_xsalsa20_xor_ic","_crypto_verify_16","_crypto_verify_16_bytes","_crypto_verify_32","_crypto_verify_32_bytes","_crypto_verify_64","_crypto_verify_64_bytes","_randombytes","_randombytes_buf","_randombytes_buf_deterministic","_randombytes_close","_randombytes_implementation_name","_randombytes_random","_randombytes_seedbytes","_randombytes_stir","_randombytes_uniform","_sodium_base642bin","_sodium_base64_encoded_len","_sodium_bin2base64","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_minimal","_sodium_library_version_major","_sodium_library_version_minor","_sodium_pad","_sodium_unpad","_sodium_version_string"]' +export EXPORTED_FUNCTIONS_SUMO='["_malloc","_free","_crypto_aead_aegis128l_abytes","_crypto_aead_aegis128l_decrypt","_crypto_aead_aegis128l_decrypt_detached","_crypto_aead_aegis128l_encrypt","_crypto_aead_aegis128l_encrypt_detached","_crypto_aead_aegis128l_keybytes","_crypto_aead_aegis128l_keygen","_crypto_aead_aegis128l_messagebytes_max","_crypto_aead_aegis128l_npubbytes","_crypto_aead_aegis128l_nsecbytes","_crypto_aead_aegis256_abytes","_crypto_aead_aegis256_decrypt","_crypto_aead_aegis256_decrypt_detached","_crypto_aead_aegis256_encrypt","_crypto_aead_aegis256_encrypt_detached","_crypto_aead_aegis256_keybytes","_crypto_aead_aegis256_keygen","_crypto_aead_aegis256_messagebytes_max","_crypto_aead_aegis256_npubbytes","_crypto_aead_aegis256_nsecbytes","_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_decrypt_detached","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_abytes","_crypto_aead_chacha20poly1305_ietf_decrypt","_crypto_aead_chacha20poly1305_ietf_decrypt_detached","_crypto_aead_chacha20poly1305_ietf_encrypt","_crypto_aead_chacha20poly1305_ietf_encrypt_detached","_crypto_aead_chacha20poly1305_ietf_keybytes","_crypto_aead_chacha20poly1305_ietf_keygen","_crypto_aead_chacha20poly1305_ietf_messagebytes_max","_crypto_aead_chacha20poly1305_ietf_npubbytes","_crypto_aead_chacha20poly1305_ietf_nsecbytes","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_keygen","_crypto_aead_chacha20poly1305_messagebytes_max","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_aead_xchacha20poly1305_ietf_abytes","_crypto_aead_xchacha20poly1305_ietf_decrypt","_crypto_aead_xchacha20poly1305_ietf_decrypt_detached","_crypto_aead_xchacha20poly1305_ietf_encrypt","_crypto_aead_xchacha20poly1305_ietf_encrypt_detached","_crypto_aead_xchacha20poly1305_ietf_keybytes","_crypto_aead_xchacha20poly1305_ietf_keygen","_crypto_aead_xchacha20poly1305_ietf_messagebytes_max","_crypto_aead_xchacha20poly1305_ietf_npubbytes","_crypto_aead_xchacha20poly1305_ietf_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_hmacsha256","_crypto_auth_hmacsha256_bytes","_crypto_auth_hmacsha256_final","_crypto_auth_hmacsha256_init","_crypto_auth_hmacsha256_keybytes","_crypto_auth_hmacsha256_keygen","_crypto_auth_hmacsha256_statebytes","_crypto_auth_hmacsha256_update","_crypto_auth_hmacsha256_verify","_crypto_auth_hmacsha512","_crypto_auth_hmacsha512256","_crypto_auth_hmacsha512256_bytes","_crypto_auth_hmacsha512256_final","_crypto_auth_hmacsha512256_init","_crypto_auth_hmacsha512256_keybytes","_crypto_auth_hmacsha512256_keygen","_crypto_auth_hmacsha512256_statebytes","_crypto_auth_hmacsha512256_update","_crypto_auth_hmacsha512256_verify","_crypto_auth_hmacsha512_bytes","_crypto_auth_hmacsha512_final","_crypto_auth_hmacsha512_init","_crypto_auth_hmacsha512_keybytes","_crypto_auth_hmacsha512_keygen","_crypto_auth_hmacsha512_statebytes","_crypto_auth_hmacsha512_update","_crypto_auth_hmacsha512_verify","_crypto_auth_keybytes","_crypto_auth_keygen","_crypto_auth_primitive","_crypto_auth_verify","_crypto_box","_crypto_box_afternm","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_boxzerobytes","_crypto_box_curve25519xchacha20poly1305_beforenm","_crypto_box_curve25519xchacha20poly1305_beforenmbytes","_crypto_box_curve25519xchacha20poly1305_detached","_crypto_box_curve25519xchacha20poly1305_detached_afternm","_crypto_box_curve25519xchacha20poly1305_easy","_crypto_box_curve25519xchacha20poly1305_easy_afternm","_crypto_box_curve25519xchacha20poly1305_keypair","_crypto_box_curve25519xchacha20poly1305_macbytes","_crypto_box_curve25519xchacha20poly1305_messagebytes_max","_crypto_box_curve25519xchacha20poly1305_noncebytes","_crypto_box_curve25519xchacha20poly1305_open_detached","_crypto_box_curve25519xchacha20poly1305_open_detached_afternm","_crypto_box_curve25519xchacha20poly1305_open_easy","_crypto_box_curve25519xchacha20poly1305_open_easy_afternm","_crypto_box_curve25519xchacha20poly1305_publickeybytes","_crypto_box_curve25519xchacha20poly1305_seal","_crypto_box_curve25519xchacha20poly1305_seal_open","_crypto_box_curve25519xchacha20poly1305_sealbytes","_crypto_box_curve25519xchacha20poly1305_secretkeybytes","_crypto_box_curve25519xchacha20poly1305_seed_keypair","_crypto_box_curve25519xchacha20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305","_crypto_box_curve25519xsalsa20poly1305_afternm","_crypto_box_curve25519xsalsa20poly1305_beforenm","_crypto_box_curve25519xsalsa20poly1305_beforenmbytes","_crypto_box_curve25519xsalsa20poly1305_boxzerobytes","_crypto_box_curve25519xsalsa20poly1305_keypair","_crypto_box_curve25519xsalsa20poly1305_macbytes","_crypto_box_curve25519xsalsa20poly1305_messagebytes_max","_crypto_box_curve25519xsalsa20poly1305_noncebytes","_crypto_box_curve25519xsalsa20poly1305_open","_crypto_box_curve25519xsalsa20poly1305_open_afternm","_crypto_box_curve25519xsalsa20poly1305_publickeybytes","_crypto_box_curve25519xsalsa20poly1305_secretkeybytes","_crypto_box_curve25519xsalsa20poly1305_seed_keypair","_crypto_box_curve25519xsalsa20poly1305_seedbytes","_crypto_box_curve25519xsalsa20poly1305_zerobytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_messagebytes_max","_crypto_box_noncebytes","_crypto_box_open","_crypto_box_open_afternm","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_primitive","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_box_zerobytes","_crypto_core_ed25519_add","_crypto_core_ed25519_bytes","_crypto_core_ed25519_from_string","_crypto_core_ed25519_from_string_ro","_crypto_core_ed25519_from_uniform","_crypto_core_ed25519_hashbytes","_crypto_core_ed25519_is_valid_point","_crypto_core_ed25519_nonreducedscalarbytes","_crypto_core_ed25519_random","_crypto_core_ed25519_scalar_add","_crypto_core_ed25519_scalar_complement","_crypto_core_ed25519_scalar_invert","_crypto_core_ed25519_scalar_is_canonical","_crypto_core_ed25519_scalar_mul","_crypto_core_ed25519_scalar_negate","_crypto_core_ed25519_scalar_random","_crypto_core_ed25519_scalar_reduce","_crypto_core_ed25519_scalar_sub","_crypto_core_ed25519_scalarbytes","_crypto_core_ed25519_sub","_crypto_core_ed25519_uniformbytes","_crypto_core_hchacha20","_crypto_core_hchacha20_constbytes","_crypto_core_hchacha20_inputbytes","_crypto_core_hchacha20_keybytes","_crypto_core_hchacha20_outputbytes","_crypto_core_hsalsa20","_crypto_core_hsalsa20_constbytes","_crypto_core_hsalsa20_inputbytes","_crypto_core_hsalsa20_keybytes","_crypto_core_hsalsa20_outputbytes","_crypto_core_ristretto255_add","_crypto_core_ristretto255_bytes","_crypto_core_ristretto255_from_hash","_crypto_core_ristretto255_from_string","_crypto_core_ristretto255_from_string_ro","_crypto_core_ristretto255_hashbytes","_crypto_core_ristretto255_is_valid_point","_crypto_core_ristretto255_nonreducedscalarbytes","_crypto_core_ristretto255_random","_crypto_core_ristretto255_scalar_add","_crypto_core_ristretto255_scalar_complement","_crypto_core_ristretto255_scalar_invert","_crypto_core_ristretto255_scalar_is_canonical","_crypto_core_ristretto255_scalar_mul","_crypto_core_ristretto255_scalar_negate","_crypto_core_ristretto255_scalar_random","_crypto_core_ristretto255_scalar_reduce","_crypto_core_ristretto255_scalar_sub","_crypto_core_ristretto255_scalarbytes","_crypto_core_ristretto255_sub","_crypto_core_salsa20","_crypto_core_salsa2012","_crypto_core_salsa2012_constbytes","_crypto_core_salsa2012_inputbytes","_crypto_core_salsa2012_keybytes","_crypto_core_salsa2012_outputbytes","_crypto_core_salsa208","_crypto_core_salsa208_constbytes","_crypto_core_salsa208_inputbytes","_crypto_core_salsa208_keybytes","_crypto_core_salsa208_outputbytes","_crypto_core_salsa20_constbytes","_crypto_core_salsa20_inputbytes","_crypto_core_salsa20_keybytes","_crypto_core_salsa20_outputbytes","_crypto_generichash","_crypto_generichash_blake2b","_crypto_generichash_blake2b_bytes","_crypto_generichash_blake2b_bytes_max","_crypto_generichash_blake2b_bytes_min","_crypto_generichash_blake2b_final","_crypto_generichash_blake2b_init","_crypto_generichash_blake2b_init_salt_personal","_crypto_generichash_blake2b_keybytes","_crypto_generichash_blake2b_keybytes_max","_crypto_generichash_blake2b_keybytes_min","_crypto_generichash_blake2b_keygen","_crypto_generichash_blake2b_personalbytes","_crypto_generichash_blake2b_salt_personal","_crypto_generichash_blake2b_saltbytes","_crypto_generichash_blake2b_statebytes","_crypto_generichash_blake2b_update","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_keygen","_crypto_generichash_primitive","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_hash_primitive","_crypto_hash_sha256","_crypto_hash_sha256_bytes","_crypto_hash_sha256_final","_crypto_hash_sha256_init","_crypto_hash_sha256_statebytes","_crypto_hash_sha256_update","_crypto_hash_sha512","_crypto_hash_sha512_bytes","_crypto_hash_sha512_final","_crypto_hash_sha512_init","_crypto_hash_sha512_statebytes","_crypto_hash_sha512_update","_crypto_kdf_blake2b_bytes_max","_crypto_kdf_blake2b_bytes_min","_crypto_kdf_blake2b_contextbytes","_crypto_kdf_blake2b_derive_from_key","_crypto_kdf_blake2b_keybytes","_crypto_kdf_bytes_max","_crypto_kdf_bytes_min","_crypto_kdf_contextbytes","_crypto_kdf_derive_from_key","_crypto_kdf_hkdf_sha256_bytes_max","_crypto_kdf_hkdf_sha256_bytes_min","_crypto_kdf_hkdf_sha256_expand","_crypto_kdf_hkdf_sha256_extract","_crypto_kdf_hkdf_sha256_keybytes","_crypto_kdf_hkdf_sha256_keygen","_crypto_kdf_hkdf_sha512_bytes_max","_crypto_kdf_hkdf_sha512_bytes_min","_crypto_kdf_hkdf_sha512_expand","_crypto_kdf_hkdf_sha512_extract","_crypto_kdf_hkdf_sha512_keybytes","_crypto_kdf_hkdf_sha512_keygen","_crypto_kdf_keybytes","_crypto_kdf_keygen","_crypto_kdf_primitive","_crypto_kx_client_session_keys","_crypto_kx_keypair","_crypto_kx_primitive","_crypto_kx_publickeybytes","_crypto_kx_secretkeybytes","_crypto_kx_seed_keypair","_crypto_kx_seedbytes","_crypto_kx_server_session_keys","_crypto_kx_sessionkeybytes","_crypto_onetimeauth","_crypto_onetimeauth_bytes","_crypto_onetimeauth_final","_crypto_onetimeauth_init","_crypto_onetimeauth_keybytes","_crypto_onetimeauth_keygen","_crypto_onetimeauth_poly1305","_crypto_onetimeauth_poly1305_bytes","_crypto_onetimeauth_poly1305_final","_crypto_onetimeauth_poly1305_init","_crypto_onetimeauth_poly1305_keybytes","_crypto_onetimeauth_poly1305_keygen","_crypto_onetimeauth_poly1305_statebytes","_crypto_onetimeauth_poly1305_update","_crypto_onetimeauth_poly1305_verify","_crypto_onetimeauth_primitive","_crypto_onetimeauth_statebytes","_crypto_onetimeauth_update","_crypto_onetimeauth_verify","_crypto_pwhash","_crypto_pwhash_alg_argon2i13","_crypto_pwhash_alg_argon2id13","_crypto_pwhash_alg_default","_crypto_pwhash_argon2i","_crypto_pwhash_argon2i_alg_argon2i13","_crypto_pwhash_argon2i_bytes_max","_crypto_pwhash_argon2i_bytes_min","_crypto_pwhash_argon2i_memlimit_interactive","_crypto_pwhash_argon2i_memlimit_max","_crypto_pwhash_argon2i_memlimit_min","_crypto_pwhash_argon2i_memlimit_moderate","_crypto_pwhash_argon2i_memlimit_sensitive","_crypto_pwhash_argon2i_opslimit_interactive","_crypto_pwhash_argon2i_opslimit_max","_crypto_pwhash_argon2i_opslimit_min","_crypto_pwhash_argon2i_opslimit_moderate","_crypto_pwhash_argon2i_opslimit_sensitive","_crypto_pwhash_argon2i_passwd_max","_crypto_pwhash_argon2i_passwd_min","_crypto_pwhash_argon2i_saltbytes","_crypto_pwhash_argon2i_str","_crypto_pwhash_argon2i_str_needs_rehash","_crypto_pwhash_argon2i_str_verify","_crypto_pwhash_argon2i_strbytes","_crypto_pwhash_argon2i_strprefix","_crypto_pwhash_argon2id","_crypto_pwhash_argon2id_alg_argon2id13","_crypto_pwhash_argon2id_bytes_max","_crypto_pwhash_argon2id_bytes_min","_crypto_pwhash_argon2id_memlimit_interactive","_crypto_pwhash_argon2id_memlimit_max","_crypto_pwhash_argon2id_memlimit_min","_crypto_pwhash_argon2id_memlimit_moderate","_crypto_pwhash_argon2id_memlimit_sensitive","_crypto_pwhash_argon2id_opslimit_interactive","_crypto_pwhash_argon2id_opslimit_max","_crypto_pwhash_argon2id_opslimit_min","_crypto_pwhash_argon2id_opslimit_moderate","_crypto_pwhash_argon2id_opslimit_sensitive","_crypto_pwhash_argon2id_passwd_max","_crypto_pwhash_argon2id_passwd_min","_crypto_pwhash_argon2id_saltbytes","_crypto_pwhash_argon2id_str","_crypto_pwhash_argon2id_str_needs_rehash","_crypto_pwhash_argon2id_str_verify","_crypto_pwhash_argon2id_strbytes","_crypto_pwhash_argon2id_strprefix","_crypto_pwhash_bytes_max","_crypto_pwhash_bytes_min","_crypto_pwhash_memlimit_interactive","_crypto_pwhash_memlimit_max","_crypto_pwhash_memlimit_min","_crypto_pwhash_memlimit_moderate","_crypto_pwhash_memlimit_sensitive","_crypto_pwhash_opslimit_interactive","_crypto_pwhash_opslimit_max","_crypto_pwhash_opslimit_min","_crypto_pwhash_opslimit_moderate","_crypto_pwhash_opslimit_sensitive","_crypto_pwhash_passwd_max","_crypto_pwhash_passwd_min","_crypto_pwhash_primitive","_crypto_pwhash_saltbytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_bytes_max","_crypto_pwhash_scryptsalsa208sha256_bytes_min","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive","_crypto_pwhash_scryptsalsa208sha256_memlimit_max","_crypto_pwhash_scryptsalsa208sha256_memlimit_min","_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive","_crypto_pwhash_scryptsalsa208sha256_opslimit_max","_crypto_pwhash_scryptsalsa208sha256_opslimit_min","_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_passwd_max","_crypto_pwhash_scryptsalsa208sha256_passwd_min","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_needs_rehash","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_strprefix","_crypto_pwhash_str","_crypto_pwhash_str_alg","_crypto_pwhash_str_needs_rehash","_crypto_pwhash_str_verify","_crypto_pwhash_strbytes","_crypto_pwhash_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_curve25519","_crypto_scalarmult_curve25519_base","_crypto_scalarmult_curve25519_bytes","_crypto_scalarmult_curve25519_scalarbytes","_crypto_scalarmult_ed25519","_crypto_scalarmult_ed25519_base","_crypto_scalarmult_ed25519_base_noclamp","_crypto_scalarmult_ed25519_bytes","_crypto_scalarmult_ed25519_noclamp","_crypto_scalarmult_ed25519_scalarbytes","_crypto_scalarmult_primitive","_crypto_scalarmult_ristretto255","_crypto_scalarmult_ristretto255_base","_crypto_scalarmult_ristretto255_bytes","_crypto_scalarmult_ristretto255_scalarbytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox","_crypto_secretbox_boxzerobytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_keygen","_crypto_secretbox_macbytes","_crypto_secretbox_messagebytes_max","_crypto_secretbox_noncebytes","_crypto_secretbox_open","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_secretbox_primitive","_crypto_secretbox_xchacha20poly1305_detached","_crypto_secretbox_xchacha20poly1305_easy","_crypto_secretbox_xchacha20poly1305_keybytes","_crypto_secretbox_xchacha20poly1305_macbytes","_crypto_secretbox_xchacha20poly1305_messagebytes_max","_crypto_secretbox_xchacha20poly1305_noncebytes","_crypto_secretbox_xchacha20poly1305_open_detached","_crypto_secretbox_xchacha20poly1305_open_easy","_crypto_secretbox_xsalsa20poly1305","_crypto_secretbox_xsalsa20poly1305_boxzerobytes","_crypto_secretbox_xsalsa20poly1305_keybytes","_crypto_secretbox_xsalsa20poly1305_keygen","_crypto_secretbox_xsalsa20poly1305_macbytes","_crypto_secretbox_xsalsa20poly1305_messagebytes_max","_crypto_secretbox_xsalsa20poly1305_noncebytes","_crypto_secretbox_xsalsa20poly1305_open","_crypto_secretbox_xsalsa20poly1305_zerobytes","_crypto_secretbox_zerobytes","_crypto_secretstream_xchacha20poly1305_abytes","_crypto_secretstream_xchacha20poly1305_headerbytes","_crypto_secretstream_xchacha20poly1305_init_pull","_crypto_secretstream_xchacha20poly1305_init_push","_crypto_secretstream_xchacha20poly1305_keybytes","_crypto_secretstream_xchacha20poly1305_keygen","_crypto_secretstream_xchacha20poly1305_messagebytes_max","_crypto_secretstream_xchacha20poly1305_pull","_crypto_secretstream_xchacha20poly1305_push","_crypto_secretstream_xchacha20poly1305_rekey","_crypto_secretstream_xchacha20poly1305_statebytes","_crypto_secretstream_xchacha20poly1305_tag_final","_crypto_secretstream_xchacha20poly1305_tag_message","_crypto_secretstream_xchacha20poly1305_tag_push","_crypto_secretstream_xchacha20poly1305_tag_rekey","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_shorthash_keygen","_crypto_shorthash_primitive","_crypto_shorthash_siphash24","_crypto_shorthash_siphash24_bytes","_crypto_shorthash_siphash24_keybytes","_crypto_shorthash_siphashx24","_crypto_shorthash_siphashx24_bytes","_crypto_shorthash_siphashx24_keybytes","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519","_crypto_sign_ed25519_bytes","_crypto_sign_ed25519_detached","_crypto_sign_ed25519_keypair","_crypto_sign_ed25519_messagebytes_max","_crypto_sign_ed25519_open","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_publickeybytes","_crypto_sign_ed25519_secretkeybytes","_crypto_sign_ed25519_seed_keypair","_crypto_sign_ed25519_seedbytes","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_ed25519_sk_to_pk","_crypto_sign_ed25519_sk_to_seed","_crypto_sign_ed25519_verify_detached","_crypto_sign_ed25519ph_final_create","_crypto_sign_ed25519ph_final_verify","_crypto_sign_ed25519ph_init","_crypto_sign_ed25519ph_statebytes","_crypto_sign_ed25519ph_update","_crypto_sign_final_create","_crypto_sign_final_verify","_crypto_sign_init","_crypto_sign_keypair","_crypto_sign_messagebytes_max","_crypto_sign_open","_crypto_sign_primitive","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_statebytes","_crypto_sign_update","_crypto_sign_verify_detached","_crypto_stream","_crypto_stream_chacha20","_crypto_stream_chacha20_ietf","_crypto_stream_chacha20_ietf_keybytes","_crypto_stream_chacha20_ietf_keygen","_crypto_stream_chacha20_ietf_messagebytes_max","_crypto_stream_chacha20_ietf_noncebytes","_crypto_stream_chacha20_ietf_xor","_crypto_stream_chacha20_ietf_xor_ic","_crypto_stream_chacha20_keybytes","_crypto_stream_chacha20_keygen","_crypto_stream_chacha20_messagebytes_max","_crypto_stream_chacha20_noncebytes","_crypto_stream_chacha20_xor","_crypto_stream_chacha20_xor_ic","_crypto_stream_keybytes","_crypto_stream_keygen","_crypto_stream_messagebytes_max","_crypto_stream_noncebytes","_crypto_stream_primitive","_crypto_stream_salsa20","_crypto_stream_salsa2012","_crypto_stream_salsa2012_keybytes","_crypto_stream_salsa2012_keygen","_crypto_stream_salsa2012_messagebytes_max","_crypto_stream_salsa2012_noncebytes","_crypto_stream_salsa2012_xor","_crypto_stream_salsa208","_crypto_stream_salsa208_keybytes","_crypto_stream_salsa208_keygen","_crypto_stream_salsa208_messagebytes_max","_crypto_stream_salsa208_noncebytes","_crypto_stream_salsa208_xor","_crypto_stream_salsa20_keybytes","_crypto_stream_salsa20_keygen","_crypto_stream_salsa20_messagebytes_max","_crypto_stream_salsa20_noncebytes","_crypto_stream_salsa20_xor","_crypto_stream_salsa20_xor_ic","_crypto_stream_xchacha20","_crypto_stream_xchacha20_keybytes","_crypto_stream_xchacha20_keygen","_crypto_stream_xchacha20_messagebytes_max","_crypto_stream_xchacha20_noncebytes","_crypto_stream_xchacha20_xor","_crypto_stream_xchacha20_xor_ic","_crypto_stream_xor","_crypto_stream_xsalsa20","_crypto_stream_xsalsa20_keybytes","_crypto_stream_xsalsa20_keygen","_crypto_stream_xsalsa20_messagebytes_max","_crypto_stream_xsalsa20_noncebytes","_crypto_stream_xsalsa20_xor","_crypto_stream_xsalsa20_xor_ic","_crypto_verify_16","_crypto_verify_16_bytes","_crypto_verify_32","_crypto_verify_32_bytes","_crypto_verify_64","_crypto_verify_64_bytes","_randombytes","_randombytes_buf","_randombytes_buf_deterministic","_randombytes_close","_randombytes_implementation_name","_randombytes_random","_randombytes_seedbytes","_randombytes_stir","_randombytes_uniform","_sodium_base642bin","_sodium_base64_encoded_len","_sodium_bin2base64","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_minimal","_sodium_library_version_major","_sodium_library_version_minor","_sodium_pad","_sodium_unpad","_sodium_version_string"]' export EXPORTED_RUNTIME_METHODS='["UTF8ToString","getValue","setValue"]' export MAX_MEMORY=16777216 export MAX_MEMORY_SUMO=16777216 diff --git a/libsodium.vcxproj b/libsodium.vcxproj index 4e7c20f2..c7d79c18 100644 --- a/libsodium.vcxproj +++ b/libsodium.vcxproj @@ -418,6 +418,7 @@ + @@ -566,6 +567,10 @@ + + + + diff --git a/libsodium.vcxproj.filters b/libsodium.vcxproj.filters index ae641960..f3537044 100644 --- a/libsodium.vcxproj.filters +++ b/libsodium.vcxproj.filters @@ -324,6 +324,9 @@ Source Files + + Source Files + Source Files @@ -764,6 +767,18 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + Header Files diff --git a/src/libsodium/Makefile.am b/src/libsodium/Makefile.am index dc839823..b892b92a 100644 --- a/src/libsodium/Makefile.am +++ b/src/libsodium/Makefile.am @@ -7,6 +7,9 @@ libsodium_la_SOURCES = \ crypto_aead/aegis128l/soft/aead_aegis128l_soft.c \ crypto_aead/aegis128l/soft/aead_aegis128l_soft.h \ crypto_aead/aegis256/aead_aegis256.c \ + crypto_aead/aegis256/aead_aegis256.h \ + crypto_aead/aegis256/soft/aead_aegis256_soft.c \ + crypto_aead/aegis256/soft/aead_aegis256_soft.h \ crypto_aead/aes256gcm/aead_aes256gcm.c \ crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c \ crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c \ @@ -231,6 +234,7 @@ libarmcrypto_la_SOURCES = \ crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.c \ crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.h \ crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.c \ + crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.h \ crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c libaesni_la_LDFLAGS = $(libsodium_la_LDFLAGS) @@ -240,6 +244,7 @@ libaesni_la_SOURCES = \ crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.c \ crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.h \ crypto_aead/aegis256/aesni/aead_aegis256_aesni.c \ + crypto_aead/aegis256/aesni/aead_aegis256_aesni.h \ crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c libsse2_la_LDFLAGS = $(libsodium_la_LDFLAGS) diff --git a/src/libsodium/crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.c b/src/libsodium/crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.c index cb69a91e..48b7586f 100644 --- a/src/libsodium/crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.c +++ b/src/libsodium/crypto_aead/aegis128l/aesni/aead_aegis128l_aesni.c @@ -1,12 +1,9 @@ -/* - * AEGIS-128l based on https://bench.cr.yp.to/supercop/supercop-20200409.tar.xz - */ - #include #include #include #include "core.h" +#include "crypto_aead_aegis128l.h" #include "crypto_verify_16.h" #include "export.h" #include "randombytes.h" @@ -271,4 +268,5 @@ struct crypto_aead_aegis128l_implementation crypto_aead_aegis128l_aesni_implemen SODIUM_C99(.encrypt_detached =) aegis128l_encrypt_detached, SODIUM_C99(.decrypt_detached =) aegis128l_decrypt_detached }; + #endif diff --git a/src/libsodium/crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.c b/src/libsodium/crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.c index 98ec55ac..22577da6 100644 --- a/src/libsodium/crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.c +++ b/src/libsodium/crypto_aead/aegis128l/armcrypto/aead_aegis128l_armcrypto.c @@ -259,4 +259,5 @@ struct crypto_aead_aegis128l_implementation crypto_aead_aegis128l_armcrypto_impl SODIUM_C99(.encrypt_detached =) aegis128l_encrypt_detached, SODIUM_C99(.decrypt_detached =) aegis128l_decrypt_detached }; + #endif diff --git a/src/libsodium/crypto_aead/aegis256/aead_aegis256.c b/src/libsodium/crypto_aead/aegis256/aead_aegis256.c index 6ba2f5d4..788ade41 100644 --- a/src/libsodium/crypto_aead/aegis256/aead_aegis256.c +++ b/src/libsodium/crypto_aead/aegis256/aead_aegis256.c @@ -2,9 +2,27 @@ #include #include +#include "core.h" #include "crypto_aead_aegis256.h" #include "private/common.h" +#include "private/implementations.h" #include "randombytes.h" +#include "runtime.h" + +#include "aead_aegis256.h" + +#include "soft/aead_aegis256_soft.h" + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) +#include "armcrypto/aead_aegis256_armcrypto.h" +#endif + +#if defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H) +#include "aesni/aead_aegis256_aesni.h" +#endif + +static const crypto_aead_aegis256_implementation *implementation = + &crypto_aead_aegis256_soft_implementation; size_t crypto_aead_aegis256_keybytes(void) @@ -42,42 +60,27 @@ crypto_aead_aegis256_keygen(unsigned char k[crypto_aead_aegis256_KEYBYTES]) randombytes_buf(k, crypto_aead_aegis256_KEYBYTES); } -#if !((defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H)) || \ - (defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN))) - -#ifndef ENOSYS -# define ENOSYS ENXIO -#endif - -int -crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, - unsigned long long *maclen_p, const unsigned char *m, - unsigned long long mlen, const unsigned char *ad, - unsigned long long adlen, const unsigned char *nsec, - const unsigned char *npub, const unsigned char *k) -{ - errno = ENOSYS; - return -1; -} - int crypto_aead_aegis256_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) { - errno = ENOSYS; - return -1; -} + unsigned long long clen = 0ULL; + int ret; -int -crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, - unsigned long long clen, const unsigned char *mac, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *npub, const unsigned char *k) -{ - errno = ENOSYS; - return -1; + if (mlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) { + sodium_misuse(); + } + ret = + crypto_aead_aegis256_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); + if (clen_p != NULL) { + if (ret == 0) { + clen = mlen + 16ULL; + } + *clen_p = clen; + } + return ret; } int @@ -86,14 +89,58 @@ crypto_aead_aegis256_decrypt(unsigned char *m, unsigned long long *mlen_p, unsig const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) { - errno = ENOSYS; - return -1; + unsigned long long mlen = 0ULL; + int ret = -1; + + if (clen >= 16ULL) { + ret = crypto_aead_aegis256_decrypt_detached(m, nsec, c, clen - 16ULL, c + clen - 16ULL, ad, + adlen, npub, k); + } + if (mlen_p != NULL) { + if (ret == 0) { + mlen = clen - 16ULL; + } + *mlen_p = mlen; + } + return ret; } int -crypto_aead_aegis256_is_available(void) +crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, + unsigned long long *maclen_p, const unsigned char *m, + unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) { - return 0; + return implementation->encrypt_detached(c, mac, maclen_p, m, mlen, ad, adlen, nsec, npub, k); } +int +crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + return implementation->decrypt_detached(m, nsec, c, clen, mac, ad, adlen, npub, k); +} + +int +_crypto_aead_aegis256_pick_best_implementation(void) +{ + implementation = &crypto_aead_aegis256_soft_implementation; + +#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) + if (sodium_runtime_has_armcrypto()) { + implementation = &crypto_aead_aegis256_armcrypto_implementation; + return 0; + } #endif + +#if defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H) + if (sodium_runtime_has_aesni()) { + implementation = &crypto_aead_aegis256_aesni_implementation; + return 0; + } +#endif + return 0; /* LCOV_EXCL_LINE */ +} diff --git a/src/libsodium/crypto_aead/aegis256/aead_aegis256.h b/src/libsodium/crypto_aead/aegis256/aead_aegis256.h new file mode 100644 index 00000000..9e7784b0 --- /dev/null +++ b/src/libsodium/crypto_aead/aegis256/aead_aegis256.h @@ -0,0 +1,16 @@ +#ifndef aead_aegis256_H +#define aead_aegis256_H + +typedef struct crypto_aead_aegis256_implementation { + int (*encrypt_detached)(unsigned char *c, unsigned char *mac, unsigned long long *maclen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const unsigned char *k); + int (*decrypt_detached)(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k); +} crypto_aead_aegis256_implementation; + +#endif diff --git a/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.c b/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.c index 3501b66d..f8dfe46e 100644 --- a/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.c +++ b/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.c @@ -1,7 +1,3 @@ -/* - * AEGIS-256 based on https://bench.cr.yp.to/supercop/supercop-20190816.tar.xz - */ - #include #include #include @@ -16,6 +12,8 @@ #include "private/common.h" +#include "aead_aegis256_aesni.h" + #if defined(HAVE_TMMINTRIN_H) && defined(HAVE_WMMINTRIN_H) #ifdef __GNUC__ @@ -36,7 +34,7 @@ typedef __m128i aes_block_t; #define AES_ENC(A, B) _mm_aesenc_si128((A), (B)) static inline void -crypto_aead_aegis256_update(aes_block_t *const state, const aes_block_t data) +aegis256_update(aes_block_t *const state, const aes_block_t data) { aes_block_t tmp; @@ -50,8 +48,7 @@ crypto_aead_aegis256_update(aes_block_t *const state, const aes_block_t data) } static void -crypto_aead_aegis256_init(const unsigned char *key, const unsigned char *nonce, - aes_block_t *const state) +aegis256_init(const unsigned char *key, const unsigned char *nonce, aes_block_t *const state) { static CRYPTO_ALIGN(16) const uint8_t c0_[] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1, @@ -78,16 +75,16 @@ crypto_aead_aegis256_init(const unsigned char *key, const unsigned char *nonce, state[5] = AES_BLOCK_XOR(k2, c0); for (i = 0; i < 4; i++) { - crypto_aead_aegis256_update(state, k1); - crypto_aead_aegis256_update(state, k2); - crypto_aead_aegis256_update(state, kxn1); - crypto_aead_aegis256_update(state, kxn2); + aegis256_update(state, k1); + aegis256_update(state, k2); + aegis256_update(state, kxn1); + aegis256_update(state, kxn2); } } static void -crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned long long mlen, - aes_block_t *const state) +aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned long long mlen, + aes_block_t *const state) { aes_block_t tmp; int i; @@ -96,7 +93,7 @@ crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned tmp = AES_BLOCK_XOR(tmp, state[3]); for (i = 0; i < 7; i++) { - crypto_aead_aegis256_update(state, tmp); + aegis256_update(state, tmp); } tmp = AES_BLOCK_XOR(state[5], state[4]); @@ -109,17 +106,16 @@ crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned } static inline void -crypto_aead_aegis256_absorb(const unsigned char *const src, aes_block_t *const state) +aegis256_absorb(const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; msg = AES_BLOCK_LOAD(src); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } static void -crypto_aead_aegis256_enc(unsigned char *const dst, const unsigned char *const src, - aes_block_t *const state) +aegis256_enc(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; aes_block_t tmp; @@ -131,12 +127,11 @@ crypto_aead_aegis256_enc(unsigned char *const dst, const unsigned char *const sr tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_AND(state[2], state[3])); AES_BLOCK_STORE((aes_block_t *) (void *) dst, tmp); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } static void -crypto_aead_aegis256_dec(unsigned char *const dst, const unsigned char *const src, - aes_block_t *const state) +aegis256_dec(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; @@ -147,15 +142,14 @@ crypto_aead_aegis256_dec(unsigned char *const dst, const unsigned char *const sr msg = AES_BLOCK_XOR(msg, AES_BLOCK_AND(state[2], state[3])); AES_BLOCK_STORE((aes_block_t *) (void *) dst, msg); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } -int -crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, - unsigned long long *maclen_p, const unsigned char *m, - unsigned long long mlen, const unsigned char *ad, - unsigned long long adlen, const unsigned char *nsec, - const unsigned char *npub, const unsigned char *k) +static int +aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, unsigned long long *maclen_p, + const unsigned char *m, unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) { aes_block_t state[6]; CRYPTO_ALIGN(16) unsigned char src[16]; @@ -163,27 +157,27 @@ crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, unsigned long long i; (void) nsec; - crypto_aead_aegis256_init(k, npub, state); + aegis256_init(k, npub, state); for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { - crypto_aead_aegis256_absorb(ad + i, state); + aegis256_absorb(ad + i, state); } if (adlen & 0xf) { memset(src, 0, 16); memcpy(src, ad + i, adlen & 0xf); - crypto_aead_aegis256_absorb(src, state); + aegis256_absorb(src, state); } for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_enc(c + i, m + i, state); + aegis256_enc(c + i, m + i, state); } if (mlen & 0xf) { memset(src, 0, 16); memcpy(src, m + i, mlen & 0xf); - crypto_aead_aegis256_enc(dst, src, state); + aegis256_enc(dst, src, state); memcpy(c + i, dst, mlen & 0xf); } - crypto_aead_aegis256_mac(mac, adlen, mlen, state); + aegis256_mac(mac, adlen, mlen, state); sodium_memzero(state, sizeof state); sodium_memzero(src, sizeof src); sodium_memzero(dst, sizeof dst); @@ -194,34 +188,11 @@ crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, return 0; } -int -crypto_aead_aegis256_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, - unsigned long long mlen, const unsigned char *ad, - unsigned long long adlen, const unsigned char *nsec, - const unsigned char *npub, const unsigned char *k) -{ - unsigned long long clen = 0ULL; - int ret; - - if (mlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) { - sodium_misuse(); - } - ret = - crypto_aead_aegis256_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); - if (clen_p != NULL) { - if (ret == 0) { - clen = mlen + 16ULL; - } - *clen_p = clen; - } - return ret; -} - -int -crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, - unsigned long long clen, const unsigned char *mac, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *npub, const unsigned char *k) +static int +aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) { aes_block_t state[6]; CRYPTO_ALIGN(16) unsigned char src[16]; @@ -233,29 +204,29 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con (void) nsec; mlen = clen; - crypto_aead_aegis256_init(k, npub, state); + aegis256_init(k, npub, state); for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { - crypto_aead_aegis256_absorb(ad + i, state); + aegis256_absorb(ad + i, state); } if (adlen & 0xf) { memset(src, 0, 16); memcpy(src, ad + i, adlen & 0xf); - crypto_aead_aegis256_absorb(src, state); + aegis256_absorb(src, state); } if (m != NULL) { for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_dec(m + i, c + i, state); + aegis256_dec(m + i, c + i, state); } } else { for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_dec(dst, c + i, state); + aegis256_dec(dst, c + i, state); } } if (mlen & 0xf) { memset(src, 0, 16); memcpy(src, c + i, mlen & 0xf); - crypto_aead_aegis256_dec(dst, src, state); + aegis256_dec(dst, src, state); if (m != NULL) { memcpy(m + i, dst, mlen & 0xf); } @@ -264,7 +235,7 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con AES_BLOCK_XOR(state[0], AES_BLOCK_LOAD((const aes_block_t *) (const void *) dst)); } - crypto_aead_aegis256_mac(computed_mac, adlen, mlen, state); + aegis256_mac(computed_mac, adlen, mlen, state); sodium_memzero(state, sizeof state); sodium_memzero(src, sizeof src); sodium_memzero(dst, sizeof dst); @@ -280,32 +251,9 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con return 0; } -int -crypto_aead_aegis256_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, - const unsigned char *c, unsigned long long clen, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *npub, const unsigned char *k) -{ - unsigned long long mlen = 0ULL; - int ret = -1; - - if (clen >= 16ULL) { - ret = crypto_aead_aegis256_decrypt_detached(m, nsec, c, clen - 16ULL, c + clen - 16ULL, ad, - adlen, npub, k); - } - if (mlen_p != NULL) { - if (ret == 0) { - mlen = clen - 16ULL; - } - *mlen_p = mlen; - } - return ret; -} - -int -crypto_aead_aegis256_is_available(void) -{ - return sodium_runtime_has_aesni(); -} +struct crypto_aead_aegis256_implementation crypto_aead_aegis256_aesni_implementation = { + SODIUM_C99(.encrypt_detached =) aegis256_encrypt_detached, + SODIUM_C99(.decrypt_detached =) aegis256_decrypt_detached +}; #endif diff --git a/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.h b/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.h new file mode 100644 index 00000000..c5c11c8b --- /dev/null +++ b/src/libsodium/crypto_aead/aegis256/aesni/aead_aegis256_aesni.h @@ -0,0 +1,6 @@ +#include + +#include "../aead_aegis256.h" +#include "crypto_aead_aegis256.h" + +extern struct crypto_aead_aegis256_implementation crypto_aead_aegis256_aesni_implementation; diff --git a/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.c b/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.c index 0eef75da..15cdb992 100644 --- a/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.c +++ b/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.c @@ -12,6 +12,8 @@ #include "private/common.h" +#include "aead_aegis256_armcrypto.h" + #if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN) # include @@ -25,7 +27,7 @@ typedef uint8x16_t aes_block_t; #define AES_ENC(A, B) veorq_u8(vaesmcq_u8(vaeseq_u8((A), vmovq_n_u8(0))), (B)) static inline void -crypto_aead_aegis256_update(aes_block_t *const state, const aes_block_t data) +aegis256_update(aes_block_t *const state, const aes_block_t data) { aes_block_t tmp; @@ -39,8 +41,7 @@ crypto_aead_aegis256_update(aes_block_t *const state, const aes_block_t data) } static void -crypto_aead_aegis256_init(const unsigned char *key, const unsigned char *nonce, - aes_block_t *const state) +aegis256_init(const unsigned char *key, const unsigned char *nonce, aes_block_t *const state) { static CRYPTO_ALIGN(16) const unsigned char c0_[] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1, 0x20, 0x11, 0x31, 0x42, @@ -69,16 +70,16 @@ crypto_aead_aegis256_init(const unsigned char *key, const unsigned char *nonce, state[5] = AES_BLOCK_XOR(k2, c0); for (i = 0; i < 4; i++) { - crypto_aead_aegis256_update(state, k1); - crypto_aead_aegis256_update(state, k2); - crypto_aead_aegis256_update(state, kxn1); - crypto_aead_aegis256_update(state, kxn2); + aegis256_update(state, k1); + aegis256_update(state, k2); + aegis256_update(state, kxn1); + aegis256_update(state, kxn2); } } static void -crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned long long mlen, - aes_block_t *const state) +aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned long long mlen, + aes_block_t *const state) { aes_block_t tmp; int i; @@ -87,7 +88,7 @@ crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned tmp = AES_BLOCK_XOR(tmp, state[3]); for (i = 0; i < 7; i++) { - crypto_aead_aegis256_update(state, tmp); + aegis256_update(state, tmp); } tmp = AES_BLOCK_XOR(state[5], state[4]); @@ -100,18 +101,16 @@ crypto_aead_aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned } static inline void -crypto_aead_aegis256_absorb(const unsigned char *const src, aes_block_t *const state) +aegis256_absorb(const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; msg = AES_BLOCK_LOAD(src); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } static void -crypto_aead_aegis256_enc(unsigned char *const dst, - const unsigned char *const src, - aes_block_t *const state) +aegis256_enc(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; aes_block_t tmp; @@ -123,13 +122,11 @@ crypto_aead_aegis256_enc(unsigned char *const dst, tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_AND(state[2], state[3])); AES_BLOCK_STORE(dst, tmp); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } static void -crypto_aead_aegis256_dec(unsigned char *const dst, - const unsigned char *const src, - aes_block_t *const state) +aegis256_dec(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) { aes_block_t msg; @@ -140,15 +137,14 @@ crypto_aead_aegis256_dec(unsigned char *const dst, msg = AES_BLOCK_XOR(msg, AES_BLOCK_AND(state[2], state[3])); AES_BLOCK_STORE(dst, msg); - crypto_aead_aegis256_update(state, msg); + aegis256_update(state, msg); } -int -crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, - unsigned long long *maclen_p, const unsigned char *m, - unsigned long long mlen, const unsigned char *ad, - unsigned long long adlen, const unsigned char *nsec, - const unsigned char *npub, const unsigned char *k) +static int +aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, unsigned long long *maclen_p, + const unsigned char *m, unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) { aes_block_t state[6]; CRYPTO_ALIGN(16) unsigned char src[16]; @@ -156,27 +152,27 @@ crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, unsigned long long i; (void) nsec; - crypto_aead_aegis256_init(k, npub, state); + aegis256_init(k, npub, state); for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { - crypto_aead_aegis256_absorb(ad + i, state); + aegis256_absorb(ad + i, state); } if (adlen & 0xf) { memset(src, 0, 16); memcpy(src, ad + i, adlen & 0xf); - crypto_aead_aegis256_absorb(src, state); + aegis256_absorb(src, state); } for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_enc(c + i, m + i, state); + aegis256_enc(c + i, m + i, state); } if (mlen & 0xf) { memset(src, 0, 16); memcpy(src, m + i, mlen & 0xf); - crypto_aead_aegis256_enc(dst, src, state); + aegis256_enc(dst, src, state); memcpy(c + i, dst, mlen & 0xf); } - crypto_aead_aegis256_mac(mac, adlen, mlen, state); + aegis256_mac(mac, adlen, mlen, state); sodium_memzero(state, sizeof state); sodium_memzero(src, sizeof src); sodium_memzero(dst, sizeof dst); @@ -187,34 +183,11 @@ crypto_aead_aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, return 0; } -int -crypto_aead_aegis256_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, - unsigned long long mlen, const unsigned char *ad, - unsigned long long adlen, const unsigned char *nsec, - const unsigned char *npub, const unsigned char *k) -{ - unsigned long long clen = 0ULL; - int ret; - - if (mlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) { - sodium_misuse(); - } - ret = crypto_aead_aegis256_encrypt_detached(c, c + mlen, NULL, m, mlen, - ad, adlen, nsec, npub, k); - if (clen_p != NULL) { - if (ret == 0) { - clen = mlen + 16ULL; - } - *clen_p = clen; - } - return ret; -} - -int -crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, - unsigned long long clen, const unsigned char *mac, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *npub, const unsigned char *k) +static int +aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) { aes_block_t state[6]; CRYPTO_ALIGN(16) unsigned char src[16]; @@ -226,29 +199,29 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con (void) nsec; mlen = clen; - crypto_aead_aegis256_init(k, npub, state); + aegis256_init(k, npub, state); for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { - crypto_aead_aegis256_absorb(ad + i, state); + aegis256_absorb(ad + i, state); } if (adlen & 0xf) { memset(src, 0, 16); memcpy(src, ad + i, adlen & 0xf); - crypto_aead_aegis256_absorb(src, state); + aegis256_absorb(src, state); } if (m != NULL) { for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_dec(m + i, c + i, state); + aegis256_dec(m + i, c + i, state); } } else { for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { - crypto_aead_aegis256_dec(dst, c + i, state); + aegis256_dec(dst, c + i, state); } } if (mlen & 0xf) { memset(src, 0, 16); memcpy(src, c + i, mlen & 0xf); - crypto_aead_aegis256_dec(dst, src, state); + aegis256_dec(dst, src, state); if (m != NULL) { memcpy(m + i, dst, mlen & 0xf); } @@ -256,7 +229,7 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con state[0] = AES_BLOCK_XOR(state[0], AES_BLOCK_LOAD(dst)); } - crypto_aead_aegis256_mac(computed_mac, adlen, mlen, state); + aegis256_mac(computed_mac, adlen, mlen, state); sodium_memzero(state, sizeof state); sodium_memzero(src, sizeof src); sodium_memzero(dst, sizeof dst); @@ -272,32 +245,9 @@ crypto_aead_aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, con return 0; } -int -crypto_aead_aegis256_decrypt(unsigned char *m, unsigned long long *mlen_p, unsigned char *nsec, - const unsigned char *c, unsigned long long clen, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *npub, const unsigned char *k) -{ - unsigned long long mlen = 0ULL; - int ret = -1; - - if (clen >= 16ULL) { - ret = crypto_aead_aegis256_decrypt_detached(m, nsec, c, clen - 16ULL, c + clen - 16ULL, ad, - adlen, npub, k); - } - if (mlen_p != NULL) { - if (ret == 0) { - mlen = clen - 16ULL; - } - *mlen_p = mlen; - } - return ret; -} - -int -crypto_aead_aegis256_is_available(void) -{ - return sodium_runtime_has_armcrypto(); -} +struct crypto_aead_aegis256_implementation crypto_aead_aegis256_armcrypto_implementation = { + SODIUM_C99(.encrypt_detached =) aegis256_encrypt_detached, + SODIUM_C99(.decrypt_detached =) aegis256_decrypt_detached +}; #endif diff --git a/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.h b/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.h new file mode 100644 index 00000000..83b49a5f --- /dev/null +++ b/src/libsodium/crypto_aead/aegis256/armcrypto/aead_aegis256_armcrypto.h @@ -0,0 +1,6 @@ +#include + +#include "../aead_aegis256.h" +#include "crypto_aead_aegis256.h" + +extern struct crypto_aead_aegis256_implementation crypto_aead_aegis256_armcrypto_implementation; diff --git a/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.c b/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.c new file mode 100644 index 00000000..4b70ba07 --- /dev/null +++ b/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.c @@ -0,0 +1,246 @@ +#include +#include +#include + +#include "core.h" +#include "crypto_aead_aegis256.h" +#include "crypto_verify_16.h" +#include "export.h" +#include "randombytes.h" +#include "runtime.h" +#include "utils.h" + +#include "private/common.h" +#include "private/softaes.h" + +#include "aead_aegis256_soft.h" + +typedef SoftAesBlock aes_block_t; +#define AES_BLOCK_XOR(A, B) softaes_block_xor((A), (B)) +#define AES_BLOCK_AND(A, B) softaes_block_and((A), (B)) +#define AES_BLOCK_LOAD(A) softaes_block_load(A) +#define AES_BLOCK_LOAD_64x2(A, B) softaes_block_load64x2((A), (B)) +#define AES_BLOCK_STORE(A, B) softaes_block_store((A), (B)) +#define AES_ENC(A, B) softaes_block_encrypt((A), (B)) + +static inline void +aegis256_update(aes_block_t *const state, const aes_block_t data) +{ + aes_block_t tmp; + + tmp = AES_ENC(state[5], state[0]); + state[5] = AES_ENC(state[4], state[5]); + state[4] = AES_ENC(state[3], state[4]); + state[3] = AES_ENC(state[2], state[3]); + state[2] = AES_ENC(state[1], state[2]); + state[1] = AES_ENC(state[0], state[1]); + state[0] = AES_BLOCK_XOR(tmp, data); +} + +static void +aegis256_init(const unsigned char *key, const unsigned char *nonce, aes_block_t *const state) +{ + static CRYPTO_ALIGN(16) + const unsigned char c0_[] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1, + 0x20, 0x11, 0x31, 0x42, 0x73, 0xb5, 0x28, 0xdd }; + static CRYPTO_ALIGN(16) + const unsigned char c1_[] = { 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x08, 0x0d, + 0x15, 0x22, 0x37, 0x59, 0x90, 0xe9, 0x79, 0x62 }; + const aes_block_t c0 = AES_BLOCK_LOAD(c0_); + const aes_block_t c1 = AES_BLOCK_LOAD(c1_); + aes_block_t k1, k2; + aes_block_t kxn1, kxn2; + int i; + + k1 = AES_BLOCK_LOAD(&key[0]); + k2 = AES_BLOCK_LOAD(&key[16]); + kxn1 = AES_BLOCK_XOR(k1, AES_BLOCK_LOAD(&nonce[0])); + kxn2 = AES_BLOCK_XOR(k2, AES_BLOCK_LOAD(&nonce[16])); + + state[0] = kxn1; + state[1] = kxn2; + state[2] = c0; + state[3] = c1; + state[4] = AES_BLOCK_XOR(k1, c1); + state[5] = AES_BLOCK_XOR(k2, c0); + + for (i = 0; i < 4; i++) { + aegis256_update(state, k1); + aegis256_update(state, k2); + aegis256_update(state, kxn1); + aegis256_update(state, kxn2); + } +} + +static void +aegis256_mac(unsigned char *mac, unsigned long long adlen, unsigned long long mlen, + aes_block_t *const state) +{ + aes_block_t tmp; + int i; + + tmp = AES_BLOCK_LOAD_64x2(mlen << 3, adlen << 3); + tmp = AES_BLOCK_XOR(tmp, state[3]); + + for (i = 0; i < 7; i++) { + aegis256_update(state, tmp); + } + + tmp = AES_BLOCK_XOR(state[5], state[4]); + tmp = AES_BLOCK_XOR(tmp, state[3]); + tmp = AES_BLOCK_XOR(tmp, state[2]); + tmp = AES_BLOCK_XOR(tmp, state[1]); + tmp = AES_BLOCK_XOR(tmp, state[0]); + + AES_BLOCK_STORE(mac, tmp); +} + +static inline void +aegis256_absorb(const unsigned char *const src, aes_block_t *const state) +{ + aes_block_t msg; + + msg = AES_BLOCK_LOAD(src); + aegis256_update(state, msg); +} + +static void +aegis256_enc(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) +{ + aes_block_t msg; + aes_block_t tmp; + + msg = AES_BLOCK_LOAD(src); + tmp = AES_BLOCK_XOR(msg, state[5]); + tmp = AES_BLOCK_XOR(tmp, state[4]); + tmp = AES_BLOCK_XOR(tmp, state[1]); + tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_AND(state[2], state[3])); + AES_BLOCK_STORE(dst, tmp); + + aegis256_update(state, msg); +} + +static void +aegis256_dec(unsigned char *const dst, const unsigned char *const src, aes_block_t *const state) +{ + aes_block_t msg; + + msg = AES_BLOCK_LOAD(src); + msg = AES_BLOCK_XOR(msg, state[5]); + msg = AES_BLOCK_XOR(msg, state[4]); + msg = AES_BLOCK_XOR(msg, state[1]); + msg = AES_BLOCK_XOR(msg, AES_BLOCK_AND(state[2], state[3])); + AES_BLOCK_STORE(dst, msg); + + aegis256_update(state, msg); +} + +static int +aegis256_encrypt_detached(unsigned char *c, unsigned char *mac, unsigned long long *maclen_p, + const unsigned char *m, unsigned long long mlen, const unsigned char *ad, + unsigned long long adlen, const unsigned char *nsec, + const unsigned char *npub, const unsigned char *k) +{ + aes_block_t state[6]; + CRYPTO_ALIGN(16) unsigned char src[16]; + CRYPTO_ALIGN(16) unsigned char dst[16]; + unsigned long long i; + + (void) nsec; + aegis256_init(k, npub, state); + + for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { + aegis256_absorb(ad + i, state); + } + if (adlen & 0xf) { + memset(src, 0, 16); + memcpy(src, ad + i, adlen & 0xf); + aegis256_absorb(src, state); + } + for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { + aegis256_enc(c + i, m + i, state); + } + if (mlen & 0xf) { + memset(src, 0, 16); + memcpy(src, m + i, mlen & 0xf); + aegis256_enc(dst, src, state); + memcpy(c + i, dst, mlen & 0xf); + } + + aegis256_mac(mac, adlen, mlen, state); + sodium_memzero(state, sizeof state); + sodium_memzero(src, sizeof src); + sodium_memzero(dst, sizeof dst); + + if (maclen_p != NULL) { + *maclen_p = 16ULL; + } + return 0; +} + +static int +aegis256_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *c, + unsigned long long clen, const unsigned char *mac, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, const unsigned char *k) +{ + aes_block_t state[6]; + CRYPTO_ALIGN(16) unsigned char src[16]; + CRYPTO_ALIGN(16) unsigned char dst[16]; + CRYPTO_ALIGN(16) unsigned char computed_mac[16]; + unsigned long long i; + unsigned long long mlen; + int ret; + + (void) nsec; + mlen = clen; + aegis256_init(k, npub, state); + + for (i = 0ULL; i + 16ULL <= adlen; i += 16ULL) { + aegis256_absorb(ad + i, state); + } + if (adlen & 0xf) { + memset(src, 0, 16); + memcpy(src, ad + i, adlen & 0xf); + aegis256_absorb(src, state); + } + if (m != NULL) { + for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { + aegis256_dec(m + i, c + i, state); + } + } else { + for (i = 0ULL; i + 16ULL <= mlen; i += 16ULL) { + aegis256_dec(dst, c + i, state); + } + } + if (mlen & 0xf) { + memset(src, 0, 16); + memcpy(src, c + i, mlen & 0xf); + aegis256_dec(dst, src, state); + if (m != NULL) { + memcpy(m + i, dst, mlen & 0xf); + } + memset(dst, 0, mlen & 0xf); + state[0] = AES_BLOCK_XOR(state[0], AES_BLOCK_LOAD(dst)); + } + + aegis256_mac(computed_mac, adlen, mlen, state); + sodium_memzero(state, sizeof state); + sodium_memzero(src, sizeof src); + sodium_memzero(dst, sizeof dst); + ret = crypto_verify_16(computed_mac, mac); + sodium_memzero(computed_mac, sizeof computed_mac); + if (m == NULL) { + return ret; + } + if (ret != 0) { + memset(m, 0, mlen); + return -1; + } + return 0; +} + +struct crypto_aead_aegis256_implementation crypto_aead_aegis256_soft_implementation = { + SODIUM_C99(.encrypt_detached =) aegis256_encrypt_detached, + SODIUM_C99(.decrypt_detached =) aegis256_decrypt_detached +}; diff --git a/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.h b/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.h new file mode 100644 index 00000000..8de350a5 --- /dev/null +++ b/src/libsodium/crypto_aead/aegis256/soft/aead_aegis256_soft.h @@ -0,0 +1,7 @@ +#include + +#include "../aead_aegis256.h" +#include "crypto_aead_aegis256.h" + +extern struct crypto_aead_aegis256_implementation + crypto_aead_aegis256_soft_implementation; diff --git a/src/libsodium/include/sodium/crypto_aead_aegis256.h b/src/libsodium/include/sodium/crypto_aead_aegis256.h index 32e76896..b4702533 100644 --- a/src/libsodium/include/sodium/crypto_aead_aegis256.h +++ b/src/libsodium/include/sodium/crypto_aead_aegis256.h @@ -11,9 +11,6 @@ extern "C" { #endif -SODIUM_EXPORT -int crypto_aead_aegis256_is_available(void); - #define crypto_aead_aegis256_KEYBYTES 32U SODIUM_EXPORT size_t crypto_aead_aegis256_keybytes(void); diff --git a/src/libsodium/include/sodium/private/implementations.h b/src/libsodium/include/sodium/private/implementations.h index e2753f23..1c1fde07 100644 --- a/src/libsodium/include/sodium/private/implementations.h +++ b/src/libsodium/include/sodium/private/implementations.h @@ -10,5 +10,6 @@ int _crypto_scalarmult_curve25519_pick_best_implementation(void); int _crypto_stream_chacha20_pick_best_implementation(void); int _crypto_stream_salsa20_pick_best_implementation(void); int _crypto_aead_aegis128l_pick_best_implementation(void); +int _crypto_aead_aegis256_pick_best_implementation(void); #endif diff --git a/src/libsodium/sodium/core.c b/src/libsodium/sodium/core.c index d448b738..398944aa 100644 --- a/src/libsodium/sodium/core.c +++ b/src/libsodium/sodium/core.c @@ -46,6 +46,7 @@ sodium_init(void) _crypto_stream_chacha20_pick_best_implementation(); _crypto_stream_salsa20_pick_best_implementation(); _crypto_aead_aegis128l_pick_best_implementation(); + _crypto_aead_aegis256_pick_best_implementation(); initialized = 1; if (sodium_crit_leave() != 0) { return -1; /* LCOV_EXCL_LINE */ diff --git a/test/default/aead_aegis256.c b/test/default/aead_aegis256.c index 83974613..8820fa5f 100644 --- a/test/default/aead_aegis256.c +++ b/test/default/aead_aegis256.c @@ -657,9 +657,7 @@ tv(void) int main(void) { - if (crypto_aead_aegis256_is_available()) { - tv(); - } + tv(); assert(crypto_aead_aegis256_keybytes() == crypto_aead_aegis256_KEYBYTES); assert(crypto_aead_aegis256_nsecbytes() == crypto_aead_aegis256_NSECBYTES); assert(crypto_aead_aegis256_npubbytes() == crypto_aead_aegis256_NPUBBYTES); diff --git a/test/symbols/all-symbols.txt b/test/symbols/all-symbols.txt index f7ce18cf..b5667427 100644 --- a/test/symbols/all-symbols.txt +++ b/test/symbols/all-symbols.txt @@ -48,7 +48,6 @@ crypto_aead_aegis256_decrypt crypto_aead_aegis256_decrypt_detached crypto_aead_aegis256_encrypt crypto_aead_aegis256_encrypt_detached -crypto_aead_aegis256_is_available crypto_aead_aegis256_keybytes crypto_aead_aegis256_keygen crypto_aead_aegis256_messagebytes_max @@ -731,3 +730,4 @@ sodium_stream_salsa20_xmm6_xor_ic sodium_sub sodium_unpad sodium_version_string +softaes_block_encrypt