Add AEGIS AEADs

This commit is contained in:
Frank Denis
2023-09-13 09:00:06 +02:00
parent b8a6fecdb6
commit 854947a4ce
54 changed files with 4134 additions and 53 deletions
+2
View File
@@ -80,6 +80,8 @@ test-driver
test/default/*.asm.js
test/default/*.res
test/default/*.trs
test/default/aead_aegis128l
test/default/aead_aegis256
test/default/aead_aes256gcm
test/default/aead_aes256gcm2
test/default/aead_chacha20poly1305
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
@@ -175,6 +175,14 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -184,6 +192,7 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -202,6 +211,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\utils.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\core.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\export.h" />
@@ -226,6 +236,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\runtime.h" />
@@ -262,6 +273,7 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -312,6 +324,16 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
@@ -318,6 +318,30 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>crypto_aead\xchacha20poly1305</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>crypto_aead\aegis128l</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>crypto_aead\aegis256</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>crypto_aead\aes256gcm</Filter>
</ClCompile>
@@ -345,6 +369,9 @@
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>crypto_core\hsalsa20\ref2</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\softaes\softaes.c">
<Filter>crypto_core\softaes</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>crypto_core\ed25519</Filter>
</ClCompile>
@@ -395,6 +422,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -467,6 +497,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>include\sodium</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>include\sodium</Filter>
</ClInclude>
@@ -575,6 +608,9 @@
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\softaes.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>include\sodium\private</Filter>
</ClInclude>
@@ -725,6 +761,36 @@
<ClInclude Include="..\..\..\..\src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>crypto_stream\salsa20\xmm6</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>crypto_aead\aegis128l</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>crypto_aead\aegis256</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>crypto_core\ed25519\ref10\fe_25_5</Filter>
</ClInclude>
@@ -754,6 +820,12 @@
<Filter Include="crypto_aead">
<UniqueIdentifier>{a6837e41-3751-38c9-bb90-dd59d5f4af7b}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis128l">
<UniqueIdentifier>{9e2a023d-fef1-3231-90ba-9a0ffc9bc9ab}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aegis256">
<UniqueIdentifier>{6897a4cc-0091-3970-b712-c0ac75c16b67}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_aead\aes256gcm">
<UniqueIdentifier>{3e53394c-b59c-30cc-ae69-a4f46f9edfa3}</UniqueIdentifier>
</Filter>
@@ -820,6 +892,9 @@
<Filter Include="crypto_core\salsa\ref">
<UniqueIdentifier>{eb259fd9-56f0-32db-a903-6bc1549a7326}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_core\softaes">
<UniqueIdentifier>{05997596-e3d7-3bf1-ad4d-39e4c5fd56f6}</UniqueIdentifier>
</Filter>
<Filter Include="crypto_generichash">
<UniqueIdentifier>{e53b6258-fcdd-34c8-96c5-44510a34a390}</UniqueIdentifier>
</Filter>
+44 -1
View File
@@ -1,3 +1,23 @@
_crypto_aead_aegis128l_abytes 0 1
_crypto_aead_aegis128l_decrypt 0 1
_crypto_aead_aegis128l_decrypt_detached 0 1
_crypto_aead_aegis128l_encrypt 0 1
_crypto_aead_aegis128l_encrypt_detached 0 1
_crypto_aead_aegis128l_keybytes 0 1
_crypto_aead_aegis128l_keygen 0 1
_crypto_aead_aegis128l_messagebytes_max 0 1
_crypto_aead_aegis128l_npubbytes 0 1
_crypto_aead_aegis128l_nsecbytes 0 1
_crypto_aead_aegis256_abytes 0 1
_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_keybytes 0 1
_crypto_aead_aegis256_keygen 0 1
_crypto_aead_aegis256_messagebytes_max 0 1
_crypto_aead_aegis256_npubbytes 0 1
_crypto_aead_aegis256_nsecbytes 0 1
_crypto_aead_aes256gcm_abytes 0 0
_crypto_aead_aes256gcm_beforenm 0 0
_crypto_aead_aes256gcm_decrypt 0 0
@@ -145,7 +165,7 @@ _crypto_box_seedbytes 1 1
_crypto_box_zerobytes 0 1
_crypto_core_ed25519_add 0 1
_crypto_core_ed25519_bytes 0 1
_crypto_core_ed25519_from_hash 0 1
_crypto_core_ed25519_from_hash 0 0
_crypto_core_ed25519_from_uniform 0 1
_crypto_core_ed25519_hashbytes 0 1
_crypto_core_ed25519_is_valid_point 0 1
@@ -154,6 +174,7 @@ _crypto_core_ed25519_random 0 1
_crypto_core_ed25519_scalar_add 0 1
_crypto_core_ed25519_scalar_complement 0 1
_crypto_core_ed25519_scalar_invert 0 1
_crypto_core_ed25519_scalar_is_canonical 0 1
_crypto_core_ed25519_scalar_mul 0 1
_crypto_core_ed25519_scalar_negate 0 1
_crypto_core_ed25519_scalar_random 0 1
@@ -182,6 +203,7 @@ _crypto_core_ristretto255_random 0 1
_crypto_core_ristretto255_scalar_add 0 1
_crypto_core_ristretto255_scalar_complement 0 1
_crypto_core_ristretto255_scalar_invert 0 1
_crypto_core_ristretto255_scalar_is_canonical 0 1
_crypto_core_ristretto255_scalar_mul 0 1
_crypto_core_ristretto255_scalar_negate 0 1
_crypto_core_ristretto255_scalar_random 0 1
@@ -258,6 +280,26 @@ _crypto_kdf_bytes_max 1 1
_crypto_kdf_bytes_min 1 1
_crypto_kdf_contextbytes 1 1
_crypto_kdf_derive_from_key 1 1
_crypto_kdf_hkdf_sha256_bytes_max 1 1
_crypto_kdf_hkdf_sha256_bytes_min 1 1
_crypto_kdf_hkdf_sha256_expand 1 1
_crypto_kdf_hkdf_sha256_extract 1 1
_crypto_kdf_hkdf_sha256_extract_final 1 1
_crypto_kdf_hkdf_sha256_extract_init 1 1
_crypto_kdf_hkdf_sha256_statebytes 1 1
_crypto_kdf_hkdf_sha256_extract_update 1 1
_crypto_kdf_hkdf_sha256_keybytes 1 1
_crypto_kdf_hkdf_sha256_keygen 1 1
_crypto_kdf_hkdf_sha512_bytes_max 1 1
_crypto_kdf_hkdf_sha512_bytes_min 1 1
_crypto_kdf_hkdf_sha512_expand 1 1
_crypto_kdf_hkdf_sha512_extract 1 1
_crypto_kdf_hkdf_sha512_extract_final 1 1
_crypto_kdf_hkdf_sha512_extract_init 1 1
_crypto_kdf_hkdf_sha512_statebytes 1 1
_crypto_kdf_hkdf_sha512_extract_update 1 1
_crypto_kdf_hkdf_sha512_keybytes 1 1
_crypto_kdf_hkdf_sha512_keygen 1 1
_crypto_kdf_keybytes 1 1
_crypto_kdf_keygen 1 1
_crypto_kdf_primitive 0 1
@@ -591,6 +633,7 @@ _sodium_mprotect_readwrite 0 0
_sodium_munlock 0 0
_sodium_pad 1 1
_sodium_runtime_has_aesni 0 0
_sodium_runtime_has_armcrypto 0 0
_sodium_runtime_has_avx 0 0
_sodium_runtime_has_avx2 0 0
_sodium_runtime_has_avx512f 0 0
File diff suppressed because one or more lines are too long
+22
View File
@@ -413,6 +413,14 @@
<ClCompile Include="src\libsodium\crypto_hash\sha256\hash_sha256.c" />
<ClCompile Include="src\libsodium\crypto_hash\sha256\cp\hash_sha256_cp.c" />
<ClCompile Include="src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aead_aegis256.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_soft.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c" />
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_aesni.c" />
<ClCompile Include="src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c" />
<ClCompile Include="src\libsodium\crypto_aead\aes256gcm\aesni\aead_aes256gcm_aesni.c" />
<ClCompile Include="src\libsodium\crypto_aead\aes256gcm\armcrypto\aead_aes256gcm_armcrypto.c" />
@@ -422,6 +430,7 @@
<ClCompile Include="src\libsodium\crypto_core\hchacha20\core_hchacha20.c" />
<ClCompile Include="src\libsodium\crypto_core\hsalsa20\core_hsalsa20.c" />
<ClCompile Include="src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c" />
<ClCompile Include="src\libsodium\crypto_core\softaes\softaes.c" />
<ClCompile Include="src\libsodium\crypto_core\ed25519\core_ed25519.c" />
<ClCompile Include="src\libsodium\crypto_core\ed25519\core_ristretto255.c" />
<ClCompile Include="src\libsodium\crypto_core\ed25519\ref10\ed25519_ref10.c" />
@@ -440,6 +449,7 @@
<ClInclude Include="src\libsodium\include\sodium\crypto_auth.h" />
<ClInclude Include="src\libsodium\include\sodium\utils.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_core_hchacha20.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_aegis256.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_hash_sha512.h" />
<ClInclude Include="src\libsodium\include\sodium\core.h" />
<ClInclude Include="src\libsodium\include\sodium\export.h" />
@@ -464,6 +474,7 @@
<ClInclude Include="src\libsodium\include\sodium\crypto_stream_xchacha20.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_core_salsa208.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_auth_hmacsha512256.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_aegis128l.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h" />
<ClInclude Include="src\libsodium\include\sodium\randombytes_sysrandom.h" />
<ClInclude Include="src\libsodium\include\sodium\runtime.h" />
@@ -500,6 +511,7 @@
<ClInclude Include="src\libsodium\include\sodium\crypto_generichash_blake2b.h" />
<ClInclude Include="src\libsodium\include\sodium\crypto_sign_edwards25519sha512batch.h" />
<ClInclude Include="src\libsodium\include\sodium\private\ed25519_ref10.h" />
<ClInclude Include="src\libsodium\include\sodium\private\softaes.h" />
<ClInclude Include="src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h" />
<ClInclude Include="src\libsodium\include\sodium\private\ed25519_ref10_fe_51.h" />
<ClInclude Include="src\libsodium\include\sodium\private\sse2_64_32.h" />
@@ -550,6 +562,16 @@
<ClInclude Include="src\libsodium\crypto_stream\salsa20\xmm6int\u8.h" />
<ClInclude Include="src\libsodium\crypto_stream\salsa20\xmm6int\salsa20_xmm6int-sse2.h" />
<ClInclude Include="src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_common.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\implementations.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_aesni.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_common.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis256\implementations.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h" />
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_soft.h" />
<ClInclude Include="src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h" />
<ClInclude Include="src\libsodium\crypto_core\ed25519\ref10\fe_25_5\fe.h" />
<ClInclude Include="src\libsodium\crypto_core\ed25519\ref10\fe_25_5\base2.h" />
+66
View File
@@ -309,6 +309,30 @@
<ClCompile Include="src\libsodium\crypto_aead\xchacha20poly1305\aead_xchacha20poly1305.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_soft.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aead_aegis128l.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aead_aegis256.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_soft.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aegis256\aegis256_aesni.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_aead\aes256gcm\aead_aes256gcm.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -336,6 +360,9 @@
<ClCompile Include="src\libsodium\crypto_core\hsalsa20\ref2\core_hsalsa20_ref2.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_core\softaes\softaes.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\libsodium\crypto_core\ed25519\core_ed25519.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -386,6 +413,9 @@
<ClInclude Include="src\libsodium\include\sodium\crypto_core_hchacha20.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_aegis256.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\crypto_hash_sha512.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -458,6 +488,9 @@
<ClInclude Include="src\libsodium\include\sodium\crypto_auth_hmacsha512256.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_aegis128l.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\crypto_aead_chacha20poly1305.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -566,6 +599,9 @@
<ClInclude Include="src\libsodium\include\sodium\private\ed25519_ref10.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\private\softaes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\include\sodium\private\ed25519_ref10_fe_25_5.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -716,6 +752,36 @@
<ClInclude Include="src\libsodium\crypto_stream\salsa20\xmm6\salsa20_xmm6.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_armcrypto.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_aesni.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_soft.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\aegis128l_common.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis128l\implementations.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_aesni.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_common.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis256\implementations.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_armcrypto.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_aead\aegis256\aegis256_soft.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\libsodium\crypto_core\ed25519\ref10\fe_25_5\constants.h">
<Filter>Header Files</Filter>
</ClInclude>
+20
View File
@@ -2,6 +2,16 @@ lib_LTLIBRARIES = \
libsodium.la
libsodium_la_SOURCES = \
crypto_aead/aegis128l/aead_aegis128l.c \
crypto_aead/aegis128l/aegis128l_common.h \
crypto_aead/aegis128l/aegis128l_soft.c \
crypto_aead/aegis128l/aegis128l_soft.h \
crypto_aead/aegis128l/implementations.h \
crypto_aead/aegis256/aead_aegis256.c \
crypto_aead/aegis256/aegis256_common.h \
crypto_aead/aegis256/aegis256_soft.c \
crypto_aead/aegis256/aegis256_soft.h \
crypto_aead/aegis256/implementations.h \
crypto_aead/aes256gcm/aead_aes256gcm.c \
crypto_aead/chacha20poly1305/aead_chacha20poly1305.c \
crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c \
@@ -18,6 +28,7 @@ libsodium_la_SOURCES = \
crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c \
crypto_core/hsalsa20/core_hsalsa20.c \
crypto_core/salsa/ref/core_salsa_ref.c \
crypto_core/softaes/softaes.c \
crypto_generichash/crypto_generichash.c \
crypto_generichash/blake2b/generichash_blake2.c \
crypto_generichash/blake2b/ref/blake2.h \
@@ -90,6 +101,7 @@ libsodium_la_SOURCES = \
include/sodium/private/implementations.h \
include/sodium/private/mutex.h \
include/sodium/private/sse2_64_32.h \
include/sodium/private/softaes.h \
randombytes/randombytes.c \
sodium/codecs.c \
sodium/core.c \
@@ -219,12 +231,20 @@ libarmcrypto_la_LDFLAGS = $(libsodium_la_LDFLAGS)
libarmcrypto_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \
@CFLAGS_ARMCRYPTO@
libarmcrypto_la_SOURCES = \
crypto_aead/aegis128l/aegis128l_armcrypto.c \
crypto_aead/aegis128l/aegis128l_armcrypto.h \
crypto_aead/aegis256/aegis256_armcrypto.c \
crypto_aead/aegis256/aegis256_armcrypto.h \
crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
libaesni_la_LDFLAGS = $(libsodium_la_LDFLAGS)
libaesni_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \
@CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_AVX@ @CFLAGS_AESNI@ @CFLAGS_PCLMUL@
libaesni_la_SOURCES = \
crypto_aead/aegis128l/aegis128l_aesni.c \
crypto_aead/aegis128l/aegis128l_aesni.h \
crypto_aead/aegis256/aegis256_aesni.c \
crypto_aead/aegis256/aegis256_aesni.h \
crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
libsse2_la_LDFLAGS = $(libsodium_la_LDFLAGS)
+210 -8
View File
@@ -221,7 +221,10 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)"
LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
libaesni_la_LIBADD =
am__dirstamp = $(am__leading_dot)dirstamp
am_libaesni_la_OBJECTS = crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo
am_libaesni_la_OBJECTS = \
crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo \
crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo \
crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo
libaesni_la_OBJECTS = $(am_libaesni_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -231,7 +234,10 @@ libaesni_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libaesni_la_LDFLAGS) $(LDFLAGS) -o $@
libarmcrypto_la_LIBADD =
am_libarmcrypto_la_OBJECTS = crypto_aead/aes256gcm/armcrypto/libarmcrypto_la-aead_aes256gcm_armcrypto.lo
am_libarmcrypto_la_OBJECTS = \
crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo \
crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo \
crypto_aead/aes256gcm/armcrypto/libarmcrypto_la-aead_aes256gcm_armcrypto.lo
libarmcrypto_la_OBJECTS = $(am_libarmcrypto_la_OBJECTS)
libarmcrypto_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
@@ -263,6 +269,16 @@ libsodium_la_DEPENDENCIES = libaesni.la libarmcrypto.la libsse2.la \
libssse3.la libsse41.la libavx2.la libavx512f.la \
$(am__append_8)
am__libsodium_la_SOURCES_DIST = \
crypto_aead/aegis128l/aead_aegis128l.c \
crypto_aead/aegis128l/aegis128l_common.h \
crypto_aead/aegis128l/aegis128l_soft.c \
crypto_aead/aegis128l/aegis128l_soft.h \
crypto_aead/aegis128l/implementations.h \
crypto_aead/aegis256/aead_aegis256.c \
crypto_aead/aegis256/aegis256_common.h \
crypto_aead/aegis256/aegis256_soft.c \
crypto_aead/aegis256/aegis256_soft.h \
crypto_aead/aegis256/implementations.h \
crypto_aead/aes256gcm/aead_aes256gcm.c \
crypto_aead/chacha20poly1305/aead_chacha20poly1305.c \
crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c \
@@ -278,6 +294,7 @@ am__libsodium_la_SOURCES_DIST = \
crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c \
crypto_core/hsalsa20/core_hsalsa20.c \
crypto_core/salsa/ref/core_salsa_ref.c \
crypto_core/softaes/softaes.c \
crypto_generichash/crypto_generichash.c \
crypto_generichash/blake2b/generichash_blake2.c \
crypto_generichash/blake2b/ref/blake2.h \
@@ -343,7 +360,8 @@ am__libsodium_la_SOURCES_DIST = \
include/sodium/private/ed25519_ref10.h \
include/sodium/private/implementations.h \
include/sodium/private/mutex.h \
include/sodium/private/sse2_64_32.h randombytes/randombytes.c \
include/sodium/private/sse2_64_32.h \
include/sodium/private/softaes.h randombytes/randombytes.c \
sodium/codecs.c sodium/core.c sodium/runtime.c sodium/utils.c \
sodium/version.c crypto_core/ed25519/ref10/fe_51/base.h \
crypto_core/ed25519/ref10/fe_51/base2.h \
@@ -428,6 +446,10 @@ am__objects_1 =
@MINIMAL_FALSE@ crypto_stream/xchacha20/libsodium_la-stream_xchacha20.lo
@EMSCRIPTEN_FALSE@am__objects_6 = randombytes/sysrandom/libsodium_la-randombytes_sysrandom.lo
am_libsodium_la_OBJECTS = \
crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo \
crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo \
crypto_aead/aegis256/libsodium_la-aead_aegis256.lo \
crypto_aead/aegis256/libsodium_la-aegis256_soft.lo \
crypto_aead/aes256gcm/libsodium_la-aead_aes256gcm.lo \
crypto_aead/chacha20poly1305/libsodium_la-aead_chacha20poly1305.lo \
crypto_aead/xchacha20poly1305/libsodium_la-aead_xchacha20poly1305.lo \
@@ -444,6 +466,7 @@ am_libsodium_la_OBJECTS = \
crypto_core/hsalsa20/ref2/libsodium_la-core_hsalsa20_ref2.lo \
crypto_core/hsalsa20/libsodium_la-core_hsalsa20.lo \
crypto_core/salsa/ref/libsodium_la-core_salsa_ref.lo \
crypto_core/softaes/libsodium_la-softaes.lo \
crypto_generichash/libsodium_la-crypto_generichash.lo \
crypto_generichash/blake2b/libsodium_la-generichash_blake2.lo \
crypto_generichash/blake2b/ref/libsodium_la-blake2b-compress-ref.lo \
@@ -547,7 +570,15 @@ am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo \
am__depfiles_remade = crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Plo \
crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Plo \
crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Plo \
crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Plo \
crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Plo \
crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Plo \
crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Plo \
crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Plo \
crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo \
crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Plo \
crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Plo \
crypto_aead/chacha20poly1305/$(DEPDIR)/libsodium_la-aead_chacha20poly1305.Plo \
@@ -569,6 +600,7 @@ am__depfiles_remade = crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gc
crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo \
crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20_ref2.Plo \
crypto_core/salsa/ref/$(DEPDIR)/libsodium_la-core_salsa_ref.Plo \
crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Plo \
crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo \
crypto_generichash/blake2b/$(DEPDIR)/libsodium_la-generichash_blake2.Plo \
crypto_generichash/blake2b/ref/$(DEPDIR)/libavx2_la-blake2b-compress-avx2.Plo \
@@ -939,7 +971,17 @@ valgrind_tools = @valgrind_tools@
lib_LTLIBRARIES = \
libsodium.la
libsodium_la_SOURCES = crypto_aead/aes256gcm/aead_aes256gcm.c \
libsodium_la_SOURCES = crypto_aead/aegis128l/aead_aegis128l.c \
crypto_aead/aegis128l/aegis128l_common.h \
crypto_aead/aegis128l/aegis128l_soft.c \
crypto_aead/aegis128l/aegis128l_soft.h \
crypto_aead/aegis128l/implementations.h \
crypto_aead/aegis256/aead_aegis256.c \
crypto_aead/aegis256/aegis256_common.h \
crypto_aead/aegis256/aegis256_soft.c \
crypto_aead/aegis256/aegis256_soft.h \
crypto_aead/aegis256/implementations.h \
crypto_aead/aes256gcm/aead_aes256gcm.c \
crypto_aead/chacha20poly1305/aead_chacha20poly1305.c \
crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c \
crypto_auth/crypto_auth.c \
@@ -954,6 +996,7 @@ libsodium_la_SOURCES = crypto_aead/aes256gcm/aead_aes256gcm.c \
crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c \
crypto_core/hsalsa20/core_hsalsa20.c \
crypto_core/salsa/ref/core_salsa_ref.c \
crypto_core/softaes/softaes.c \
crypto_generichash/crypto_generichash.c \
crypto_generichash/blake2b/generichash_blake2.c \
crypto_generichash/blake2b/ref/blake2.h \
@@ -1019,7 +1062,8 @@ libsodium_la_SOURCES = crypto_aead/aes256gcm/aead_aes256gcm.c \
include/sodium/private/ed25519_ref10.h \
include/sodium/private/implementations.h \
include/sodium/private/mutex.h \
include/sodium/private/sse2_64_32.h randombytes/randombytes.c \
include/sodium/private/sse2_64_32.h \
include/sodium/private/softaes.h randombytes/randombytes.c \
sodium/codecs.c sodium/core.c sodium/runtime.c sodium/utils.c \
sodium/version.c $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4) $(am__append_5) \
@@ -1063,6 +1107,10 @@ libarmcrypto_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \
@CFLAGS_ARMCRYPTO@
libarmcrypto_la_SOURCES = \
crypto_aead/aegis128l/aegis128l_armcrypto.c \
crypto_aead/aegis128l/aegis128l_armcrypto.h \
crypto_aead/aegis256/aegis256_armcrypto.c \
crypto_aead/aegis256/aegis256_armcrypto.h \
crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
libaesni_la_LDFLAGS = $(libsodium_la_LDFLAGS)
@@ -1070,6 +1118,10 @@ libaesni_la_CPPFLAGS = $(libsodium_la_CPPFLAGS) \
@CFLAGS_SSE2@ @CFLAGS_SSSE3@ @CFLAGS_AVX@ @CFLAGS_AESNI@ @CFLAGS_PCLMUL@
libaesni_la_SOURCES = \
crypto_aead/aegis128l/aegis128l_aesni.c \
crypto_aead/aegis128l/aegis128l_aesni.h \
crypto_aead/aegis256/aegis256_aesni.c \
crypto_aead/aegis256/aegis256_aesni.h \
crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
libsse2_la_LDFLAGS = $(libsodium_la_LDFLAGS)
@@ -1208,6 +1260,24 @@ clean-noinstLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
crypto_aead/aegis128l/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aegis128l
@: > crypto_aead/aegis128l/$(am__dirstamp)
crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aegis128l/$(DEPDIR)
@: > crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo: \
crypto_aead/aegis128l/$(am__dirstamp) \
crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis256/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aegis256
@: > crypto_aead/aegis256/$(am__dirstamp)
crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aegis256/$(DEPDIR)
@: > crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo: \
crypto_aead/aegis256/$(am__dirstamp) \
crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aes256gcm/aesni/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aes256gcm/aesni
@: > crypto_aead/aes256gcm/aesni/$(am__dirstamp)
@@ -1220,6 +1290,12 @@ crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo: \
libaesni.la: $(libaesni_la_OBJECTS) $(libaesni_la_DEPENDENCIES) $(EXTRA_libaesni_la_DEPENDENCIES)
$(AM_V_CCLD)$(libaesni_la_LINK) $(libaesni_la_OBJECTS) $(libaesni_la_LIBADD) $(LIBS)
crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo: \
crypto_aead/aegis128l/$(am__dirstamp) \
crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo: \
crypto_aead/aegis256/$(am__dirstamp) \
crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aes256gcm/armcrypto/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aes256gcm/armcrypto
@: > crypto_aead/aes256gcm/armcrypto/$(am__dirstamp)
@@ -1289,6 +1365,18 @@ randombytes/internal/librdrand_la-randombytes_internal_random.lo: \
librdrand.la: $(librdrand_la_OBJECTS) $(librdrand_la_DEPENDENCIES) $(EXTRA_librdrand_la_DEPENDENCIES)
$(AM_V_CCLD)$(librdrand_la_LINK) $(am_librdrand_la_rpath) $(librdrand_la_OBJECTS) $(librdrand_la_LIBADD) $(LIBS)
crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo: \
crypto_aead/aegis128l/$(am__dirstamp) \
crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo: \
crypto_aead/aegis128l/$(am__dirstamp) \
crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis256/libsodium_la-aead_aegis256.lo: \
crypto_aead/aegis256/$(am__dirstamp) \
crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aegis256/libsodium_la-aegis256_soft.lo: \
crypto_aead/aegis256/$(am__dirstamp) \
crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
crypto_aead/aes256gcm/$(am__dirstamp):
@$(MKDIR_P) crypto_aead/aes256gcm
@: > crypto_aead/aes256gcm/$(am__dirstamp)
@@ -1419,6 +1507,15 @@ crypto_core/salsa/ref/$(DEPDIR)/$(am__dirstamp):
crypto_core/salsa/ref/libsodium_la-core_salsa_ref.lo: \
crypto_core/salsa/ref/$(am__dirstamp) \
crypto_core/salsa/ref/$(DEPDIR)/$(am__dirstamp)
crypto_core/softaes/$(am__dirstamp):
@$(MKDIR_P) crypto_core/softaes
@: > crypto_core/softaes/$(am__dirstamp)
crypto_core/softaes/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) crypto_core/softaes/$(DEPDIR)
@: > crypto_core/softaes/$(DEPDIR)/$(am__dirstamp)
crypto_core/softaes/libsodium_la-softaes.lo: \
crypto_core/softaes/$(am__dirstamp) \
crypto_core/softaes/$(DEPDIR)/$(am__dirstamp)
crypto_generichash/$(am__dirstamp):
@$(MKDIR_P) crypto_generichash
@: > crypto_generichash/$(am__dirstamp)
@@ -2005,6 +2102,10 @@ libssse3.la: $(libssse3_la_OBJECTS) $(libssse3_la_DEPENDENCIES) $(EXTRA_libssse3
mostlyclean-compile:
-rm -f *.$(OBJEXT)
-rm -f crypto_aead/aegis128l/*.$(OBJEXT)
-rm -f crypto_aead/aegis128l/*.lo
-rm -f crypto_aead/aegis256/*.$(OBJEXT)
-rm -f crypto_aead/aegis256/*.lo
-rm -f crypto_aead/aes256gcm/*.$(OBJEXT)
-rm -f crypto_aead/aes256gcm/*.lo
-rm -f crypto_aead/aes256gcm/aesni/*.$(OBJEXT)
@@ -2041,6 +2142,8 @@ mostlyclean-compile:
-rm -f crypto_core/hsalsa20/ref2/*.lo
-rm -f crypto_core/salsa/ref/*.$(OBJEXT)
-rm -f crypto_core/salsa/ref/*.lo
-rm -f crypto_core/softaes/*.$(OBJEXT)
-rm -f crypto_core/softaes/*.lo
-rm -f crypto_generichash/*.$(OBJEXT)
-rm -f crypto_generichash/*.lo
-rm -f crypto_generichash/blake2b/*.$(OBJEXT)
@@ -2157,6 +2260,14 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Plo@am__quote@ # am--include-marker
@@ -2179,6 +2290,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20_ref2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/salsa/ref/$(DEPDIR)/libsodium_la-core_salsa_ref.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/blake2b/$(DEPDIR)/libsodium_la-generichash_blake2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@crypto_generichash/blake2b/ref/$(DEPDIR)/libavx2_la-blake2b-compress-avx2.Plo@am__quote@ # am--include-marker
@@ -2338,6 +2450,20 @@ crypto_scalarmult/curve25519/sandy2x/libsodium_la-sandy2x.lo: crypto_scalarmult/
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo: crypto_aead/aegis128l/aegis128l_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo -MD -MP -MF crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Tpo -c -o crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo `test -f 'crypto_aead/aegis128l/aegis128l_aesni.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Tpo crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis128l/aegis128l_aesni.c' object='crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis128l/libaesni_la-aegis128l_aesni.lo `test -f 'crypto_aead/aegis128l/aegis128l_aesni.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_aesni.c
crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo: crypto_aead/aegis256/aegis256_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo -MD -MP -MF crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Tpo -c -o crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo `test -f 'crypto_aead/aegis256/aegis256_aesni.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Tpo crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis256/aegis256_aesni.c' object='crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis256/libaesni_la-aegis256_aesni.lo `test -f 'crypto_aead/aegis256/aegis256_aesni.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_aesni.c
crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo: crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo -MD -MP -MF crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Tpo -c -o crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo `test -f 'crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c' || echo '$(srcdir)/'`crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Tpo crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Plo
@@ -2345,6 +2471,20 @@ crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo: crypto_aead/aes
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libaesni_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aes256gcm/aesni/libaesni_la-aead_aes256gcm_aesni.lo `test -f 'crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c' || echo '$(srcdir)/'`crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo: crypto_aead/aegis128l/aegis128l_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarmcrypto_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo -MD -MP -MF crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Tpo -c -o crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo `test -f 'crypto_aead/aegis128l/aegis128l_armcrypto.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Tpo crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis128l/aegis128l_armcrypto.c' object='crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarmcrypto_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis128l/libarmcrypto_la-aegis128l_armcrypto.lo `test -f 'crypto_aead/aegis128l/aegis128l_armcrypto.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_armcrypto.c
crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo: crypto_aead/aegis256/aegis256_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarmcrypto_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo -MD -MP -MF crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Tpo -c -o crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo `test -f 'crypto_aead/aegis256/aegis256_armcrypto.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Tpo crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis256/aegis256_armcrypto.c' object='crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarmcrypto_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis256/libarmcrypto_la-aegis256_armcrypto.lo `test -f 'crypto_aead/aegis256/aegis256_armcrypto.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_armcrypto.c
crypto_aead/aes256gcm/armcrypto/libarmcrypto_la-aead_aes256gcm_armcrypto.lo: crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarmcrypto_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aes256gcm/armcrypto/libarmcrypto_la-aead_aes256gcm_armcrypto.lo -MD -MP -MF crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Tpo -c -o crypto_aead/aes256gcm/armcrypto/libarmcrypto_la-aead_aes256gcm_armcrypto.lo `test -f 'crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c' || echo '$(srcdir)/'`crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Tpo crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Plo
@@ -2394,6 +2534,34 @@ randombytes/internal/librdrand_la-randombytes_internal_random.lo: randombytes/in
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librdrand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o randombytes/internal/librdrand_la-randombytes_internal_random.lo `test -f 'randombytes/internal/randombytes_internal_random.c' || echo '$(srcdir)/'`randombytes/internal/randombytes_internal_random.c
crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo: crypto_aead/aegis128l/aead_aegis128l.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo -MD -MP -MF crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Tpo -c -o crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo `test -f 'crypto_aead/aegis128l/aead_aegis128l.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aead_aegis128l.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Tpo crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis128l/aead_aegis128l.c' object='crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis128l/libsodium_la-aead_aegis128l.lo `test -f 'crypto_aead/aegis128l/aead_aegis128l.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aead_aegis128l.c
crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo: crypto_aead/aegis128l/aegis128l_soft.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo -MD -MP -MF crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Tpo -c -o crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo `test -f 'crypto_aead/aegis128l/aegis128l_soft.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_soft.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Tpo crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis128l/aegis128l_soft.c' object='crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis128l/libsodium_la-aegis128l_soft.lo `test -f 'crypto_aead/aegis128l/aegis128l_soft.c' || echo '$(srcdir)/'`crypto_aead/aegis128l/aegis128l_soft.c
crypto_aead/aegis256/libsodium_la-aead_aegis256.lo: crypto_aead/aegis256/aead_aegis256.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis256/libsodium_la-aead_aegis256.lo -MD -MP -MF crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Tpo -c -o crypto_aead/aegis256/libsodium_la-aead_aegis256.lo `test -f 'crypto_aead/aegis256/aead_aegis256.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aead_aegis256.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Tpo crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis256/aead_aegis256.c' object='crypto_aead/aegis256/libsodium_la-aead_aegis256.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis256/libsodium_la-aead_aegis256.lo `test -f 'crypto_aead/aegis256/aead_aegis256.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aead_aegis256.c
crypto_aead/aegis256/libsodium_la-aegis256_soft.lo: crypto_aead/aegis256/aegis256_soft.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aegis256/libsodium_la-aegis256_soft.lo -MD -MP -MF crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Tpo -c -o crypto_aead/aegis256/libsodium_la-aegis256_soft.lo `test -f 'crypto_aead/aegis256/aegis256_soft.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_soft.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Tpo crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_aead/aegis256/aegis256_soft.c' object='crypto_aead/aegis256/libsodium_la-aegis256_soft.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_aead/aegis256/libsodium_la-aegis256_soft.lo `test -f 'crypto_aead/aegis256/aegis256_soft.c' || echo '$(srcdir)/'`crypto_aead/aegis256/aegis256_soft.c
crypto_aead/aes256gcm/libsodium_la-aead_aes256gcm.lo: crypto_aead/aes256gcm/aead_aes256gcm.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_aead/aes256gcm/libsodium_la-aead_aes256gcm.lo -MD -MP -MF crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Tpo -c -o crypto_aead/aes256gcm/libsodium_la-aead_aes256gcm.lo `test -f 'crypto_aead/aes256gcm/aead_aes256gcm.c' || echo '$(srcdir)/'`crypto_aead/aes256gcm/aead_aes256gcm.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Tpo crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo
@@ -2506,6 +2674,13 @@ crypto_core/salsa/ref/libsodium_la-core_salsa_ref.lo: crypto_core/salsa/ref/core
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/salsa/ref/libsodium_la-core_salsa_ref.lo `test -f 'crypto_core/salsa/ref/core_salsa_ref.c' || echo '$(srcdir)/'`crypto_core/salsa/ref/core_salsa_ref.c
crypto_core/softaes/libsodium_la-softaes.lo: crypto_core/softaes/softaes.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_core/softaes/libsodium_la-softaes.lo -MD -MP -MF crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Tpo -c -o crypto_core/softaes/libsodium_la-softaes.lo `test -f 'crypto_core/softaes/softaes.c' || echo '$(srcdir)/'`crypto_core/softaes/softaes.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Tpo crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crypto_core/softaes/softaes.c' object='crypto_core/softaes/libsodium_la-softaes.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_core/softaes/libsodium_la-softaes.lo `test -f 'crypto_core/softaes/softaes.c' || echo '$(srcdir)/'`crypto_core/softaes/softaes.c
crypto_generichash/libsodium_la-crypto_generichash.lo: crypto_generichash/crypto_generichash.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsodium_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_generichash/libsodium_la-crypto_generichash.lo -MD -MP -MF crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Tpo -c -o crypto_generichash/libsodium_la-crypto_generichash.lo `test -f 'crypto_generichash/crypto_generichash.c' || echo '$(srcdir)/'`crypto_generichash/crypto_generichash.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Tpo crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo
@@ -3113,6 +3288,8 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-rm -rf crypto_aead/aegis128l/.libs crypto_aead/aegis128l/_libs
-rm -rf crypto_aead/aegis256/.libs crypto_aead/aegis256/_libs
-rm -rf crypto_aead/aes256gcm/.libs crypto_aead/aes256gcm/_libs
-rm -rf crypto_aead/aes256gcm/aesni/.libs crypto_aead/aes256gcm/aesni/_libs
-rm -rf crypto_aead/aes256gcm/armcrypto/.libs crypto_aead/aes256gcm/armcrypto/_libs
@@ -3131,6 +3308,7 @@ clean-libtool:
-rm -rf crypto_core/hsalsa20/.libs crypto_core/hsalsa20/_libs
-rm -rf crypto_core/hsalsa20/ref2/.libs crypto_core/hsalsa20/ref2/_libs
-rm -rf crypto_core/salsa/ref/.libs crypto_core/salsa/ref/_libs
-rm -rf crypto_core/softaes/.libs crypto_core/softaes/_libs
-rm -rf crypto_generichash/.libs crypto_generichash/_libs
-rm -rf crypto_generichash/blake2b/.libs crypto_generichash/blake2b/_libs
-rm -rf crypto_generichash/blake2b/ref/.libs crypto_generichash/blake2b/ref/_libs
@@ -3400,6 +3578,10 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-rm -f crypto_aead/aegis128l/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_aead/aegis128l/$(am__dirstamp)
-rm -f crypto_aead/aegis256/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_aead/aegis256/$(am__dirstamp)
-rm -f crypto_aead/aes256gcm/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_aead/aes256gcm/$(am__dirstamp)
-rm -f crypto_aead/aes256gcm/aesni/$(DEPDIR)/$(am__dirstamp)
@@ -3436,6 +3618,8 @@ distclean-generic:
-rm -f crypto_core/hsalsa20/ref2/$(am__dirstamp)
-rm -f crypto_core/salsa/ref/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_core/salsa/ref/$(am__dirstamp)
-rm -f crypto_core/softaes/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_core/softaes/$(am__dirstamp)
-rm -f crypto_generichash/$(DEPDIR)/$(am__dirstamp)
-rm -f crypto_generichash/$(am__dirstamp)
-rm -f crypto_generichash/blake2b/$(DEPDIR)/$(am__dirstamp)
@@ -3558,7 +3742,15 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
clean-noinstLTLIBRARIES mostlyclean-am
distclean: distclean-recursive
-rm -f crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Plo
-rm -f crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo
-rm -f crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Plo
-rm -f crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Plo
-rm -f crypto_aead/chacha20poly1305/$(DEPDIR)/libsodium_la-aead_chacha20poly1305.Plo
@@ -3580,6 +3772,7 @@ distclean: distclean-recursive
-rm -f crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo
-rm -f crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20_ref2.Plo
-rm -f crypto_core/salsa/ref/$(DEPDIR)/libsodium_la-core_salsa_ref.Plo
-rm -f crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Plo
-rm -f crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo
-rm -f crypto_generichash/blake2b/$(DEPDIR)/libsodium_la-generichash_blake2.Plo
-rm -f crypto_generichash/blake2b/ref/$(DEPDIR)/libavx2_la-blake2b-compress-avx2.Plo
@@ -3715,7 +3908,15 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libaesni_la-aegis128l_aesni.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libarmcrypto_la-aegis128l_armcrypto.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aead_aegis128l.Plo
-rm -f crypto_aead/aegis128l/$(DEPDIR)/libsodium_la-aegis128l_soft.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libaesni_la-aegis256_aesni.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libarmcrypto_la-aegis256_armcrypto.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aead_aegis256.Plo
-rm -f crypto_aead/aegis256/$(DEPDIR)/libsodium_la-aegis256_soft.Plo
-rm -f crypto_aead/aes256gcm/$(DEPDIR)/libsodium_la-aead_aes256gcm.Plo
-rm -f crypto_aead/aes256gcm/aesni/$(DEPDIR)/libaesni_la-aead_aes256gcm_aesni.Plo
-rm -f crypto_aead/aes256gcm/armcrypto/$(DEPDIR)/libarmcrypto_la-aead_aes256gcm_armcrypto.Plo
-rm -f crypto_aead/chacha20poly1305/$(DEPDIR)/libsodium_la-aead_chacha20poly1305.Plo
@@ -3737,6 +3938,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f crypto_core/hsalsa20/$(DEPDIR)/libsodium_la-core_hsalsa20.Plo
-rm -f crypto_core/hsalsa20/ref2/$(DEPDIR)/libsodium_la-core_hsalsa20_ref2.Plo
-rm -f crypto_core/salsa/ref/$(DEPDIR)/libsodium_la-core_salsa_ref.Plo
-rm -f crypto_core/softaes/$(DEPDIR)/libsodium_la-softaes.Plo
-rm -f crypto_generichash/$(DEPDIR)/libsodium_la-crypto_generichash.Plo
-rm -f crypto_generichash/blake2b/$(DEPDIR)/libsodium_la-generichash_blake2.Plo
-rm -f crypto_generichash/blake2b/ref/$(DEPDIR)/libavx2_la-blake2b-compress-avx2.Plo
@@ -0,0 +1,159 @@
#include <errno.h>
#include <stdlib.h>
#include "core.h"
#include "crypto_aead_aegis128l.h"
#include "private/common.h"
#include "private/implementations.h"
#include "randombytes.h"
#include "runtime.h"
#include "aegis128l_soft.h"
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
#include "aegis128l_armcrypto.h"
#endif
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
#include "aegis128l_aesni.h"
#endif
static const aegis128l_implementation *implementation = &aegis128l_soft_implementation;
size_t
crypto_aead_aegis128l_keybytes(void)
{
return crypto_aead_aegis128l_KEYBYTES;
}
size_t
crypto_aead_aegis128l_nsecbytes(void)
{
return crypto_aead_aegis128l_NSECBYTES;
}
size_t
crypto_aead_aegis128l_npubbytes(void)
{
return crypto_aead_aegis128l_NPUBBYTES;
}
size_t
crypto_aead_aegis128l_abytes(void)
{
return crypto_aead_aegis128l_ABYTES;
}
size_t
crypto_aead_aegis128l_messagebytes_max(void)
{
return crypto_aead_aegis128l_MESSAGEBYTES_MAX;
}
void
crypto_aead_aegis128l_keygen(unsigned char k[crypto_aead_aegis128l_KEYBYTES])
{
randombytes_buf(k, crypto_aead_aegis128l_KEYBYTES);
}
int
crypto_aead_aegis128l_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;
ret = crypto_aead_aegis128l_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub,
k);
if (clen_p != NULL) {
if (ret == 0) {
clen = mlen + crypto_aead_aegis128l_ABYTES;
}
*clen_p = clen;
}
return ret;
}
int
crypto_aead_aegis128l_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 >= crypto_aead_aegis128l_ABYTES) {
ret = crypto_aead_aegis128l_decrypt_detached(
m, nsec, c, clen - crypto_aead_aegis128l_ABYTES,
c + clen - crypto_aead_aegis128l_ABYTES, ad, adlen, npub, k);
}
if (mlen_p != NULL) {
if (ret == 0) {
mlen = clen - crypto_aead_aegis128l_ABYTES;
}
*mlen_p = mlen;
}
return ret;
}
int
crypto_aead_aegis128l_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)
{
const size_t maclen = crypto_aead_aegis128l_ABYTES;
if (maclen_p != NULL) {
*maclen_p = maclen;
}
if (mlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX ||
adlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX) {
sodium_misuse();
}
return implementation->encrypt_detached(c, mac, maclen, m, (size_t) mlen, ad, (size_t) adlen,
npub, k);
}
int
crypto_aead_aegis128l_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)
{
const size_t maclen = crypto_aead_aegis128l_ABYTES;
if (clen > crypto_aead_aegis128l_MESSAGEBYTES_MAX ||
adlen > crypto_aead_aegis128l_MESSAGEBYTES_MAX) {
return -1;
}
return implementation->decrypt_detached(m, c, (size_t) clen, mac, maclen, ad, (size_t) adlen,
npub, k);
}
int
_crypto_aead_aegis128l_pick_best_implementation(void)
{
implementation = &aegis128l_soft_implementation;
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
if (sodium_runtime_has_armcrypto()) {
implementation = &aegis128l_armcrypto_implementation;
return 0;
}
#endif
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
if (sodium_runtime_has_aesni() & sodium_runtime_has_avx()) {
implementation = &aegis128l_aesni_implementation;
return 0;
}
#endif
return 0; /* LCOV_EXCL_LINE */
}
@@ -0,0 +1,70 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis128l.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
#include "aegis128l_aesni.h"
#ifdef __clang__
#pragma clang attribute push(__attribute__((target("aes,avx"))), apply_to = function)
#elif defined(__GNUC__)
#pragma GCC target("aes,avx")
#endif
#include "private/sse2_64_32.h"
#include <immintrin.h>
#include <wmmintrin.h>
#define AES_BLOCK_LENGTH 16
typedef __m128i aes_block_t;
#define AES_BLOCK_XOR(A, B) _mm_xor_si128((A), (B))
#define AES_BLOCK_AND(A, B) _mm_and_si128((A), (B))
#define AES_BLOCK_LOAD(A) _mm_loadu_si128((const aes_block_t *) (const void *) (A))
#define AES_BLOCK_LOAD_64x2(A, B) _mm_set_epi64x((long long) (A), (long long) (B))
#define AES_BLOCK_STORE(A, B) _mm_storeu_si128((aes_block_t *) (void *) (A), (B))
#define AES_ENC(A, B) _mm_aesenc_si128((A), (B))
static inline void
aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2)
{
aes_block_t tmp;
tmp = state[7];
state[7] = AES_ENC(state[6], state[7]);
state[6] = AES_ENC(state[5], state[6]);
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_ENC(tmp, state[0]);
state[0] = AES_BLOCK_XOR(state[0], d1);
state[4] = AES_BLOCK_XOR(state[4], d2);
}
#include "aegis128l_common.h"
struct aegis128l_implementation aegis128l_aesni_implementation = { SODIUM_C99(.encrypt_detached =)
encrypt_detached,
SODIUM_C99(.decrypt_detached =)
decrypt_detached };
#ifdef __clang__
#pragma clang attribute pop
#endif
#endif
@@ -0,0 +1,8 @@
#ifndef aegis128l_aesni_H
#define aegis128l_aesni_H
#include "implementations.h"
extern struct aegis128l_implementation aegis128l_aesni_implementation;
#endif
@@ -0,0 +1,69 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis128l.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
#include "aegis128l_armcrypto.h"
#ifdef __clang__
#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function)
#elif defined(__GNUC__)
#pragma GCC target("neon,crypto,aes")
#endif
#ifndef __ARM_FEATURE_AES
#define __ARM_FEATURE_AES 1
#endif
#include <arm_neon.h>
#define AES_BLOCK_LENGTH 16
typedef uint8x16_t aes_block_t;
#define AES_BLOCK_XOR(A, B) veorq_u8((A), (B))
#define AES_BLOCK_AND(A, B) vandq_u8((A), (B))
#define AES_BLOCK_LOAD(A) vld1q_u8(A)
#define AES_BLOCK_LOAD_64x2(A, B) vreinterpretq_u8_u64(vsetq_lane_u64((A), vmovq_n_u64(B), 1))
#define AES_BLOCK_STORE(A, B) vst1q_u8((A), (B))
#define AES_ENC(A, B) veorq_u8(vaesmcq_u8(vaeseq_u8((A), vmovq_n_u8(0))), (B))
static inline void
aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2)
{
aes_block_t tmp;
tmp = state[7];
state[7] = AES_ENC(state[6], state[7]);
state[6] = AES_ENC(state[5], state[6]);
state[5] = AES_ENC(state[4], state[5]);
state[4] = AES_BLOCK_XOR(AES_ENC(state[3], state[4]), d2);
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(AES_ENC(tmp, state[0]), d1);
}
#include "aegis128l_common.h"
struct aegis128l_implementation aegis128l_armcrypto_implementation = {
SODIUM_C99(.encrypt_detached =) encrypt_detached,
SODIUM_C99(.decrypt_detached =) decrypt_detached
};
#ifdef __clang__
#pragma clang attribute pop
#endif
#endif
@@ -0,0 +1,8 @@
#ifndef aegis128l_armcrypto_H
#define aegis128l_armcrypto_H
#include "implementations.h"
extern struct aegis128l_implementation aegis128l_armcrypto_implementation;
#endif
@@ -0,0 +1,229 @@
#define RATE 32
static void
aegis128l_init(const uint8_t *key, const uint8_t *nonce, aes_block_t *const state)
{
static CRYPTO_ALIGN(AES_BLOCK_LENGTH)
const uint8_t c0_[AES_BLOCK_LENGTH] = { 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x08, 0x0d,
0x15, 0x22, 0x37, 0x59, 0x90, 0xe9, 0x79, 0x62 };
static CRYPTO_ALIGN(AES_BLOCK_LENGTH)
const uint8_t c1_[AES_BLOCK_LENGTH] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1,
0x20, 0x11, 0x31, 0x42, 0x73, 0xb5, 0x28, 0xdd };
const aes_block_t c0 = AES_BLOCK_LOAD(c0_);
const aes_block_t c1 = AES_BLOCK_LOAD(c1_);
aes_block_t k;
aes_block_t n;
int i;
k = AES_BLOCK_LOAD(key);
n = AES_BLOCK_LOAD(nonce);
state[0] = AES_BLOCK_XOR(k, n);
state[1] = c1;
state[2] = c0;
state[3] = c1;
state[4] = AES_BLOCK_XOR(k, n);
state[5] = AES_BLOCK_XOR(k, c0);
state[6] = AES_BLOCK_XOR(k, c1);
state[7] = AES_BLOCK_XOR(k, c0);
for (i = 0; i < 10; i++) {
aegis128l_update(state, n, k);
}
}
static void
aegis128l_mac(uint8_t *mac, size_t maclen, size_t adlen, size_t mlen, aes_block_t *const state)
{
aes_block_t tmp;
int i;
tmp = AES_BLOCK_LOAD_64x2(((uint64_t) mlen) << 3, ((uint64_t) adlen) << 3);
tmp = AES_BLOCK_XOR(tmp, state[2]);
for (i = 0; i < 7; i++) {
aegis128l_update(state, tmp, tmp);
}
if (maclen == 16) {
tmp = AES_BLOCK_XOR(state[6], AES_BLOCK_XOR(state[5], state[4]));
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2]));
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
AES_BLOCK_STORE(mac, tmp);
} else if (maclen == 32) {
tmp = AES_BLOCK_XOR(state[3], state[2]);
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
AES_BLOCK_STORE(mac, tmp);
tmp = AES_BLOCK_XOR(state[7], state[6]);
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[5], state[4]));
AES_BLOCK_STORE(mac + 16, tmp);
} else {
memset(mac, 0, maclen);
}
}
static inline void
aegis128l_absorb(const uint8_t *const src, aes_block_t *const state)
{
aes_block_t msg0, msg1;
msg0 = AES_BLOCK_LOAD(src);
msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH);
aegis128l_update(state, msg0, msg1);
}
static void
aegis128l_enc(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state)
{
aes_block_t msg0, msg1;
aes_block_t tmp0, tmp1;
msg0 = AES_BLOCK_LOAD(src);
msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH);
tmp0 = AES_BLOCK_XOR(msg0, state[6]);
tmp0 = AES_BLOCK_XOR(tmp0, state[1]);
tmp1 = AES_BLOCK_XOR(msg1, state[5]);
tmp1 = AES_BLOCK_XOR(tmp1, state[2]);
tmp0 = AES_BLOCK_XOR(tmp0, AES_BLOCK_AND(state[2], state[3]));
tmp1 = AES_BLOCK_XOR(tmp1, AES_BLOCK_AND(state[6], state[7]));
AES_BLOCK_STORE(dst, tmp0);
AES_BLOCK_STORE(dst + AES_BLOCK_LENGTH, tmp1);
aegis128l_update(state, msg0, msg1);
}
static void
aegis128l_dec(uint8_t *const dst, const uint8_t *const src, aes_block_t *const state)
{
aes_block_t msg0, msg1;
msg0 = AES_BLOCK_LOAD(src);
msg1 = AES_BLOCK_LOAD(src + AES_BLOCK_LENGTH);
msg0 = AES_BLOCK_XOR(msg0, state[6]);
msg0 = AES_BLOCK_XOR(msg0, state[1]);
msg1 = AES_BLOCK_XOR(msg1, state[5]);
msg1 = AES_BLOCK_XOR(msg1, state[2]);
msg0 = AES_BLOCK_XOR(msg0, AES_BLOCK_AND(state[2], state[3]));
msg1 = AES_BLOCK_XOR(msg1, AES_BLOCK_AND(state[6], state[7]));
AES_BLOCK_STORE(dst, msg0);
AES_BLOCK_STORE(dst + AES_BLOCK_LENGTH, msg1);
aegis128l_update(state, msg0, msg1);
}
static void
aegis128l_declast(uint8_t *const dst, const uint8_t *const src, size_t len,
aes_block_t *const state)
{
uint8_t pad[RATE];
aes_block_t msg0, msg1;
memset(pad, 0, sizeof pad);
memcpy(pad, src, len);
msg0 = AES_BLOCK_LOAD(pad);
msg1 = AES_BLOCK_LOAD(pad + AES_BLOCK_LENGTH);
msg0 = AES_BLOCK_XOR(msg0, state[6]);
msg0 = AES_BLOCK_XOR(msg0, state[1]);
msg1 = AES_BLOCK_XOR(msg1, state[5]);
msg1 = AES_BLOCK_XOR(msg1, state[2]);
msg0 = AES_BLOCK_XOR(msg0, AES_BLOCK_AND(state[2], state[3]));
msg1 = AES_BLOCK_XOR(msg1, AES_BLOCK_AND(state[6], state[7]));
AES_BLOCK_STORE(pad, msg0);
AES_BLOCK_STORE(pad + AES_BLOCK_LENGTH, msg1);
memset(pad + len, 0, sizeof pad - len);
memcpy(dst, pad, len);
msg0 = AES_BLOCK_LOAD(pad);
msg1 = AES_BLOCK_LOAD(pad + AES_BLOCK_LENGTH);
aegis128l_update(state, msg0, msg1);
}
static int
encrypt_detached(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k)
{
aes_block_t state[8];
CRYPTO_ALIGN(RATE) uint8_t src[RATE];
CRYPTO_ALIGN(RATE) uint8_t dst[RATE];
size_t i;
aegis128l_init(k, npub, state);
for (i = 0; i + RATE <= adlen; i += RATE) {
aegis128l_absorb(ad + i, state);
}
if (adlen % RATE) {
memset(src, 0, RATE);
memcpy(src, ad + i, adlen % RATE);
aegis128l_absorb(src, state);
}
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis128l_enc(c + i, m + i, state);
}
if (mlen % RATE) {
memset(src, 0, RATE);
memcpy(src, m + i, mlen % RATE);
aegis128l_enc(dst, src, state);
memcpy(c + i, dst, mlen % RATE);
}
aegis128l_mac(mac, maclen, adlen, mlen, state);
return 0;
}
static int
decrypt_detached(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, size_t maclen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k)
{
aes_block_t state[8];
CRYPTO_ALIGN(RATE) uint8_t src[RATE];
CRYPTO_ALIGN(RATE) uint8_t dst[RATE];
CRYPTO_ALIGN(16) uint8_t computed_mac[32];
const size_t mlen = clen;
size_t i;
int ret;
aegis128l_init(k, npub, state);
for (i = 0; i + RATE <= adlen; i += RATE) {
aegis128l_absorb(ad + i, state);
}
if (adlen % RATE) {
memset(src, 0, RATE);
memcpy(src, ad + i, adlen % RATE);
aegis128l_absorb(src, state);
}
if (m != NULL) {
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis128l_dec(m + i, c + i, state);
}
} else {
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis128l_dec(dst, c + i, state);
}
}
if (mlen % RATE) {
if (m != NULL) {
aegis128l_declast(m + i, c + i, mlen % RATE, state);
} else {
aegis128l_declast(dst, c + i, mlen % RATE, state);
}
}
COMPILER_ASSERT(sizeof computed_mac >= 32);
aegis128l_mac(computed_mac, maclen, adlen, mlen, state);
ret = -1;
if (maclen == 16) {
ret = crypto_verify_16(computed_mac, mac);
} else if (maclen == 32) {
ret = crypto_verify_32(computed_mac, mac);
}
if (ret != 0 && m != NULL) {
memset(m, 0, mlen);
}
return ret;
}
@@ -0,0 +1,59 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis128l.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#include "crypto_aead_aegis128l.h"
#include "private/softaes.h"
#if 1
#include "aegis128l_soft.h"
#define AES_BLOCK_LENGTH 16
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
aegis128l_update(aes_block_t *const state, const aes_block_t d1, const aes_block_t d2)
{
aes_block_t tmp;
tmp = state[7];
state[7] = AES_ENC(state[6], state[7]);
state[6] = AES_ENC(state[5], state[6]);
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_ENC(tmp, state[0]);
state[0] = AES_BLOCK_XOR(state[0], d1);
state[4] = AES_BLOCK_XOR(state[4], d2);
}
#include "aegis128l_common.h"
struct aegis128l_implementation aegis128l_soft_implementation = { SODIUM_C99(.encrypt_detached =)
encrypt_detached,
SODIUM_C99(.decrypt_detached =)
decrypt_detached };
#endif
@@ -0,0 +1,8 @@
#ifndef aegis128l_soft_H
#define aegis128l_soft_H
#include "implementations.h"
extern struct aegis128l_implementation aegis128l_soft_implementation;
#endif
@@ -0,0 +1,17 @@
#ifndef aegis128l_implementations_H
#define aegis128l_implementations_H
#include <stddef.h>
#include <stdint.h>
#include "crypto_aead_aegis128l.h"
typedef struct aegis128l_implementation {
int (*encrypt_detached)(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k);
int (*decrypt_detached)(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac,
size_t maclen, const uint8_t *ad, size_t adlen, const uint8_t *npub,
const uint8_t *k);
} aegis128l_implementation;
#endif
@@ -0,0 +1,158 @@
#include <errno.h>
#include <stdlib.h>
#include "core.h"
#include "crypto_aead_aegis256.h"
#include "private/common.h"
#include "private/implementations.h"
#include "randombytes.h"
#include "runtime.h"
#include "aegis256_soft.h"
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
#include "aegis256_armcrypto.h"
#endif
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
#include "aegis256_aesni.h"
#endif
static const aegis256_implementation *implementation = &aegis256_soft_implementation;
size_t
crypto_aead_aegis256_keybytes(void)
{
return crypto_aead_aegis256_KEYBYTES;
}
size_t
crypto_aead_aegis256_nsecbytes(void)
{
return crypto_aead_aegis256_NSECBYTES;
}
size_t
crypto_aead_aegis256_npubbytes(void)
{
return crypto_aead_aegis256_NPUBBYTES;
}
size_t
crypto_aead_aegis256_abytes(void)
{
return crypto_aead_aegis256_ABYTES;
}
size_t
crypto_aead_aegis256_messagebytes_max(void)
{
return crypto_aead_aegis256_MESSAGEBYTES_MAX;
}
void
crypto_aead_aegis256_keygen(unsigned char k[crypto_aead_aegis256_KEYBYTES])
{
randombytes_buf(k, crypto_aead_aegis256_KEYBYTES);
}
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;
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 + crypto_aead_aegis256_ABYTES;
}
*clen_p = clen;
}
return ret;
}
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 >= crypto_aead_aegis256_ABYTES) {
ret = crypto_aead_aegis256_decrypt_detached(m, nsec, c, clen - crypto_aead_aegis256_ABYTES,
c + clen - crypto_aead_aegis256_ABYTES, ad,
adlen, npub, k);
}
if (mlen_p != NULL) {
if (ret == 0) {
mlen = clen - crypto_aead_aegis256_ABYTES;
}
*mlen_p = mlen;
}
return ret;
}
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)
{
const size_t maclen = crypto_aead_aegis256_ABYTES;
if (maclen_p != NULL) {
*maclen_p = maclen;
}
if (mlen > crypto_aead_aegis256_MESSAGEBYTES_MAX ||
adlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) {
sodium_misuse();
}
return implementation->encrypt_detached(c, mac, maclen, m, (size_t) mlen, ad, (size_t) adlen,
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)
{
const size_t maclen = crypto_aead_aegis256_ABYTES;
if (clen > crypto_aead_aegis256_MESSAGEBYTES_MAX ||
adlen > crypto_aead_aegis256_MESSAGEBYTES_MAX) {
return -1;
}
return implementation->decrypt_detached(m, c, (size_t) clen, mac, maclen, ad, (size_t) adlen,
npub, k);
}
int
_crypto_aead_aegis256_pick_best_implementation(void)
{
implementation = &aegis256_soft_implementation;
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
if (sodium_runtime_has_armcrypto()) {
implementation = &aegis256_armcrypto_implementation;
return 0;
}
#endif
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
if (sodium_runtime_has_aesni() & sodium_runtime_has_avx()) {
implementation = &aegis256_aesni_implementation;
return 0;
}
#endif
return 0; /* LCOV_EXCL_LINE */
}
@@ -0,0 +1,65 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis256.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#if defined(HAVE_AVXINTRIN_H) && defined(HAVE_WMMINTRIN_H)
#include "aegis256_aesni.h"
#ifdef __clang__
#pragma clang attribute push(__attribute__((target("aes,avx"))), apply_to = function)
#elif defined(__GNUC__)
#pragma GCC target("aes,avx")
#endif
#include "private/sse2_64_32.h"
#include <immintrin.h>
#include <wmmintrin.h>
#define AES_BLOCK_LENGTH 16
typedef __m128i aes_block_t;
#define AES_BLOCK_XOR(A, B) _mm_xor_si128((A), (B))
#define AES_BLOCK_AND(A, B) _mm_and_si128((A), (B))
#define AES_BLOCK_LOAD(A) _mm_loadu_si128((const aes_block_t *) (const void *) (A))
#define AES_BLOCK_LOAD_64x2(A, B) _mm_set_epi64x((long long) (A), (long long) (B))
#define AES_BLOCK_STORE(A, B) _mm_storeu_si128((aes_block_t *) (void *) (A), (B))
#define AES_ENC(A, B) _mm_aesenc_si128((A), (B))
static inline void
aegis256_update(aes_block_t *const state, const aes_block_t d)
{
aes_block_t tmp;
tmp = state[5];
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(AES_ENC(tmp, state[0]), d);
}
#include "aegis256_common.h"
struct aegis256_implementation aegis256_aesni_implementation = { SODIUM_C99(.encrypt_detached =)
encrypt_detached,
SODIUM_C99(.decrypt_detached =)
decrypt_detached };
#ifdef __clang__
#pragma clang attribute pop
#endif
#endif
@@ -0,0 +1,8 @@
#ifndef aegis256_aesni_H
#define aegis256_aesni_H
#include "implementations.h"
extern struct aegis256_implementation aegis256_aesni_implementation;
#endif
@@ -0,0 +1,67 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis256.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#if defined(HAVE_ARMCRYPTO) && defined(NATIVE_LITTLE_ENDIAN)
#include "aegis256_armcrypto.h"
#ifdef __clang__
#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function)
#elif defined(__GNUC__)
#pragma GCC target("neon,crypto,aes")
#endif
#ifndef __ARM_FEATURE_AES
#define __ARM_FEATURE_AES 1
#endif
#include <arm_neon.h>
#define AES_BLOCK_LENGTH 16
typedef uint8x16_t aes_block_t;
#define AES_BLOCK_XOR(A, B) veorq_u8((A), (B))
#define AES_BLOCK_AND(A, B) vandq_u8((A), (B))
#define AES_BLOCK_LOAD(A) vld1q_u8(A)
#define AES_BLOCK_LOAD_64x2(A, B) vreinterpretq_u8_u64(vsetq_lane_u64((A), vmovq_n_u64(B), 1))
#define AES_BLOCK_STORE(A, B) vst1q_u8((A), (B))
#define AES_ENC(A, B) veorq_u8(vaesmcq_u8(vaeseq_u8((A), vmovq_n_u8(0))), (B))
static inline void
aegis256_update(aes_block_t *const state, const aes_block_t d)
{
aes_block_t tmp;
tmp = state[5];
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(AES_ENC(tmp, state[0]), d);
}
#include "aegis256_common.h"
struct aegis256_implementation aegis256_armcrypto_implementation = { SODIUM_C99(.encrypt_detached =)
encrypt_detached,
SODIUM_C99(.decrypt_detached =)
decrypt_detached };
#ifdef __clang__
#pragma clang attribute pop
#endif
#endif
@@ -0,0 +1,8 @@
#ifndef aegis256_armcrypto_H
#define aegis256_armcrypto_H
#include "implementations.h"
extern struct aegis256_implementation aegis256_armcrypto_implementation;
#endif
@@ -0,0 +1,214 @@
#define RATE 16
static void
aegis256_init(const uint8_t *key, const uint8_t *nonce, aes_block_t *const state)
{
static CRYPTO_ALIGN(AES_BLOCK_LENGTH)
const uint8_t c0_[AES_BLOCK_LENGTH] = { 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x08, 0x0d,
0x15, 0x22, 0x37, 0x59, 0x90, 0xe9, 0x79, 0x62 };
static CRYPTO_ALIGN(AES_BLOCK_LENGTH)
const uint8_t c1_[AES_BLOCK_LENGTH] = { 0xdb, 0x3d, 0x18, 0x55, 0x6d, 0xc2, 0x2f, 0xf1,
0x20, 0x11, 0x31, 0x42, 0x73, 0xb5, 0x28, 0xdd };
const aes_block_t c0 = AES_BLOCK_LOAD(c0_);
const aes_block_t c1 = AES_BLOCK_LOAD(c1_);
const aes_block_t k0 = AES_BLOCK_LOAD(key);
const aes_block_t k1 = AES_BLOCK_LOAD(key + AES_BLOCK_LENGTH);
const aes_block_t n0 = AES_BLOCK_LOAD(nonce);
const aes_block_t n1 = AES_BLOCK_LOAD(nonce + AES_BLOCK_LENGTH);
const aes_block_t k0_n0 = AES_BLOCK_XOR(k0, n0);
const aes_block_t k1_n1 = AES_BLOCK_XOR(k1, n1);
int i;
state[0] = k0_n0;
state[1] = k1_n1;
state[2] = c1;
state[3] = c0;
state[4] = AES_BLOCK_XOR(k0, c0);
state[5] = AES_BLOCK_XOR(k1, c1);
for (i = 0; i < 4; i++) {
aegis256_update(state, k0);
aegis256_update(state, k1);
aegis256_update(state, k0_n0);
aegis256_update(state, k1_n1);
}
}
static void
aegis256_mac(uint8_t *mac, size_t maclen, size_t adlen, size_t mlen, aes_block_t *const state)
{
aes_block_t tmp;
int i;
tmp = AES_BLOCK_LOAD_64x2(((uint64_t) mlen) << 3, ((uint64_t) adlen) << 3);
tmp = AES_BLOCK_XOR(tmp, state[3]);
for (i = 0; i < 7; i++) {
aegis256_update(state, tmp);
}
if (maclen == 16) {
tmp = AES_BLOCK_XOR(state[5], state[4]);
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2]));
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
AES_BLOCK_STORE(mac, tmp);
} else if (maclen == 32) {
tmp = AES_BLOCK_XOR(AES_BLOCK_XOR(state[2], state[1]), state[0]);
AES_BLOCK_STORE(mac, tmp);
tmp = AES_BLOCK_XOR(AES_BLOCK_XOR(state[5], state[4]), state[3]);
AES_BLOCK_STORE(mac + 16, tmp);
} else {
memset(mac, 0, maclen);
}
}
static inline void
aegis256_absorb(const uint8_t *const src, aes_block_t *const state)
{
aes_block_t msg;
msg = AES_BLOCK_LOAD(src);
aegis256_update(state, msg);
}
static void
aegis256_enc(uint8_t *const dst, const uint8_t *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(uint8_t *const dst, const uint8_t *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 void
aegis256_declast(uint8_t *const dst, const uint8_t *const src, size_t len, aes_block_t *const state)
{
uint8_t pad[RATE];
aes_block_t msg;
memset(pad, 0, sizeof pad);
memcpy(pad, src, len);
msg = AES_BLOCK_LOAD(pad);
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(pad, msg);
memset(pad + len, 0, sizeof pad - len);
memcpy(dst, pad, len);
msg = AES_BLOCK_LOAD(pad);
aegis256_update(state, msg);
}
static int
encrypt_detached(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k)
{
aes_block_t state[6];
CRYPTO_ALIGN(RATE) uint8_t src[RATE];
CRYPTO_ALIGN(RATE) uint8_t dst[RATE];
size_t i;
aegis256_init(k, npub, state);
for (i = 0; i + RATE <= adlen; i += RATE) {
aegis256_absorb(ad + i, state);
}
if (adlen % RATE) {
memset(src, 0, RATE);
memcpy(src, ad + i, adlen % RATE);
aegis256_absorb(src, state);
}
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis256_enc(c + i, m + i, state);
}
if (mlen % RATE) {
memset(src, 0, RATE);
memcpy(src, m + i, mlen % RATE);
aegis256_enc(dst, src, state);
memcpy(c + i, dst, mlen % RATE);
}
aegis256_mac(mac, maclen, adlen, mlen, state);
return 0;
}
static int
decrypt_detached(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac, size_t maclen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k)
{
aes_block_t state[6];
CRYPTO_ALIGN(RATE) uint8_t src[RATE];
CRYPTO_ALIGN(RATE) uint8_t dst[RATE];
CRYPTO_ALIGN(16) uint8_t computed_mac[32];
const size_t mlen = clen;
size_t i;
int ret;
aegis256_init(k, npub, state);
for (i = 0; i + RATE <= adlen; i += RATE) {
aegis256_absorb(ad + i, state);
}
if (adlen % RATE) {
memset(src, 0, RATE);
memcpy(src, ad + i, adlen % RATE);
aegis256_absorb(src, state);
}
if (m != NULL) {
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis256_dec(m + i, c + i, state);
}
} else {
for (i = 0; i + RATE <= mlen; i += RATE) {
aegis256_dec(dst, c + i, state);
}
}
if (mlen % RATE) {
if (m != NULL) {
aegis256_declast(m + i, c + i, mlen % RATE, state);
} else {
aegis256_declast(dst, c + i, mlen % RATE, state);
}
}
COMPILER_ASSERT(sizeof computed_mac >= 32);
aegis256_mac(computed_mac, maclen, adlen, mlen, state);
ret = -1;
if (maclen == 16) {
ret = crypto_verify_16(computed_mac, mac);
} else if (maclen == 32) {
ret = crypto_verify_32(computed_mac, mac);
}
if (ret != 0 && m != NULL) {
memset(m, 0, mlen);
}
return ret;
}
@@ -0,0 +1,54 @@
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "core.h"
#include "crypto_aead_aegis256.h"
#include "crypto_verify_16.h"
#include "crypto_verify_32.h"
#include "export.h"
#include "utils.h"
#include "private/common.h"
#include "crypto_aead_aegis256.h"
#include "private/softaes.h"
#if 1
#include "aegis256_soft.h"
#define AES_BLOCK_LENGTH 16
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 d)
{
aes_block_t tmp;
tmp = state[5];
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(AES_ENC(tmp, state[0]), d);
}
#include "aegis256_common.h"
struct aegis256_implementation aegis256_soft_implementation = { SODIUM_C99(.encrypt_detached =)
encrypt_detached,
SODIUM_C99(.decrypt_detached =)
decrypt_detached };
#endif
@@ -0,0 +1,8 @@
#ifndef aegis256_soft_H
#define aegis256_soft_H
#include "implementations.h"
extern struct aegis256_implementation aegis256_soft_implementation;
#endif
@@ -0,0 +1,17 @@
#ifndef aegis256_implementations_H
#define aegis256_implementations_H
#include <stddef.h>
#include <stdint.h>
#include "crypto_aead_aegis256.h"
typedef struct aegis256_implementation {
int (*encrypt_detached)(uint8_t *c, uint8_t *mac, size_t maclen, const uint8_t *m, size_t mlen,
const uint8_t *ad, size_t adlen, const uint8_t *npub, const uint8_t *k);
int (*decrypt_detached)(uint8_t *m, const uint8_t *c, size_t clen, const uint8_t *mac,
size_t maclen, const uint8_t *ad, size_t adlen, const uint8_t *npub,
const uint8_t *k);
} aegis256_implementation;
#endif
+143
View File
@@ -0,0 +1,143 @@
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "private/common.h"
#include "private/softaes.h"
uint32_t _aes_lut[256] __attribute__ ((visibility ("hidden"))) = {
0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591,
0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec,
0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b,
0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83,
0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f,
0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea,
0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413,
0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6,
0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511,
0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b,
0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf,
0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e,
0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b,
0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad,
0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2,
0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949,
0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697,
0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f,
0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27,
0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433,
0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0,
0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c
};
static const uint32_t * const LUT = _aes_lut;
#ifndef SOFTAES_STRIDE
# ifdef FAVOR_PERFORMANCE
# define SOFTAES_STRIDE 256
# else
# define SOFTAES_STRIDE 16
# endif
#endif
static SoftAesBlock
_encrypt(const uint8_t ix0[4], const uint8_t ix1[4], const uint8_t ix2[4], const uint8_t ix3[4])
{
CRYPTO_ALIGN(64) uint32_t t[4][4][256 / SOFTAES_STRIDE];
CRYPTO_ALIGN(64) uint8_t of[4][4];
CRYPTO_ALIGN(64) SoftAesBlock out;
size_t i;
size_t j;
for (j = 0; j < 4; j++) {
of[j][0] = ix0[j] % SOFTAES_STRIDE;
of[j][1] = ix1[j] % SOFTAES_STRIDE;
of[j][2] = ix2[j] % SOFTAES_STRIDE;
of[j][3] = ix3[j] % SOFTAES_STRIDE;
}
for (i = 0; i < 256 / SOFTAES_STRIDE; i++) {
for (j = 0; j < 4; j++) {
t[j][0][i] = LUT[(i * SOFTAES_STRIDE) | of[j][0]];
t[j][1][i] = LUT[(i * SOFTAES_STRIDE) | of[j][1]];
t[j][2][i] = LUT[(i * SOFTAES_STRIDE) | of[j][2]];
t[j][3][i] = LUT[(i * SOFTAES_STRIDE) | of[j][3]];
}
}
#ifdef HAVE_INLINE_ASM
__asm__ __volatile__("" : : "r"(t) : "memory");
#endif
out.w0 = t[0][0][ix0[0] / SOFTAES_STRIDE];
out.w0 ^= ROTL32(t[0][1][ix1[0] / SOFTAES_STRIDE], 8);
out.w0 ^= ROTL32(t[0][2][ix2[0] / SOFTAES_STRIDE], 16);
out.w0 ^= ROTL32(t[0][3][ix3[0] / SOFTAES_STRIDE], 24);
out.w1 = t[1][0][ix0[1] / SOFTAES_STRIDE];
out.w1 ^= ROTL32(t[1][1][ix1[1] / SOFTAES_STRIDE], 8);
out.w1 ^= ROTL32(t[1][2][ix2[1] / SOFTAES_STRIDE], 16);
out.w1 ^= ROTL32(t[1][3][ix3[1] / SOFTAES_STRIDE], 24);
out.w2 = t[2][0][ix0[2] / SOFTAES_STRIDE];
out.w2 ^= ROTL32(t[2][1][ix1[2] / SOFTAES_STRIDE], 8);
out.w2 ^= ROTL32(t[2][2][ix2[2] / SOFTAES_STRIDE], 16);
out.w2 ^= ROTL32(t[2][3][ix3[2] / SOFTAES_STRIDE], 24);
out.w3 = t[3][0][ix0[3] / SOFTAES_STRIDE];
out.w3 ^= ROTL32(t[3][1][ix1[3] / SOFTAES_STRIDE], 8);
out.w3 ^= ROTL32(t[3][2][ix2[3] / SOFTAES_STRIDE], 16);
out.w3 ^= ROTL32(t[3][3][ix3[3] / SOFTAES_STRIDE], 24);
return out;
}
SoftAesBlock
softaes_block_encrypt(const SoftAesBlock block, const SoftAesBlock rk)
{
CRYPTO_ALIGN(64) SoftAesBlock out;
CRYPTO_ALIGN(64) uint8_t ix0[4], ix1[4], ix2[4], ix3[4];
const uint32_t s0 = block.w0;
const uint32_t s1 = block.w1;
const uint32_t s2 = block.w2;
const uint32_t s3 = block.w3;
ix0[0] = (uint8_t) s0;
ix0[1] = (uint8_t) s1;
ix0[2] = (uint8_t) s2;
ix0[3] = (uint8_t) s3;
ix1[0] = (uint8_t) (s1 >> 8);
ix1[1] = (uint8_t) (s2 >> 8);
ix1[2] = (uint8_t) (s3 >> 8);
ix1[3] = (uint8_t) (s0 >> 8);
ix2[0] = (uint8_t) (s2 >> 16);
ix2[1] = (uint8_t) (s3 >> 16);
ix2[2] = (uint8_t) (s0 >> 16);
ix2[3] = (uint8_t) (s1 >> 16);
ix3[0] = (uint8_t) (s3 >> 24);
ix3[1] = (uint8_t) (s0 >> 24);
ix3[2] = (uint8_t) (s1 >> 24);
ix3[3] = (uint8_t) (s2 >> 24);
out = _encrypt(ix0, ix1, ix2, ix3);
out.w0 ^= rk.w0;
out.w1 ^= rk.w1;
out.w2 ^= rk.w2;
out.w3 ^= rk.w3;
return out;
}
+4
View File
@@ -3,6 +3,8 @@ SODIUM_EXPORT = \
sodium.h \
sodium/core.h \
sodium/crypto_aead_aes256gcm.h \
sodium/crypto_aead_aegis128l.h \
sodium/crypto_aead_aegis256.h \
sodium/crypto_aead_chacha20poly1305.h \
sodium/crypto_aead_xchacha20poly1305.h \
sodium/crypto_auth.h \
@@ -25,6 +27,8 @@ SODIUM_EXPORT = \
sodium/crypto_hash_sha256.h \
sodium/crypto_hash_sha512.h \
sodium/crypto_kdf.h \
sodium/crypto_kdf_hkdf_sha256.h \
sodium/crypto_kdf_hkdf_sha512.h \
sodium/crypto_kdf_blake2b.h \
sodium/crypto_kx.h \
sodium/crypto_onetimeauth.h \
+4
View File
@@ -350,6 +350,8 @@ SODIUM_EXPORT = \
sodium.h \
sodium/core.h \
sodium/crypto_aead_aes256gcm.h \
sodium/crypto_aead_aegis128l.h \
sodium/crypto_aead_aegis256.h \
sodium/crypto_aead_chacha20poly1305.h \
sodium/crypto_aead_xchacha20poly1305.h \
sodium/crypto_auth.h \
@@ -372,6 +374,8 @@ SODIUM_EXPORT = \
sodium/crypto_hash_sha256.h \
sodium/crypto_hash_sha512.h \
sodium/crypto_kdf.h \
sodium/crypto_kdf_hkdf_sha256.h \
sodium/crypto_kdf_hkdf_sha512.h \
sodium/crypto_kdf_blake2b.h \
sodium/crypto_kx.h \
sodium/crypto_onetimeauth.h \
+13 -11
View File
@@ -5,6 +5,8 @@
#include "sodium/version.h"
#include "sodium/core.h"
#include "sodium/crypto_aead_aegis128l.h"
#include "sodium/crypto_aead_aegis256.h"
#include "sodium/crypto_aead_aes256gcm.h"
#include "sodium/crypto_aead_chacha20poly1305.h"
#include "sodium/crypto_aead_xchacha20poly1305.h"
@@ -14,8 +16,8 @@
#include "sodium/crypto_auth_hmacsha512256.h"
#include "sodium/crypto_box.h"
#include "sodium/crypto_box_curve25519xsalsa20poly1305.h"
#include "sodium/crypto_core_hsalsa20.h"
#include "sodium/crypto_core_hchacha20.h"
#include "sodium/crypto_core_hsalsa20.h"
#include "sodium/crypto_core_salsa20.h"
#include "sodium/crypto_core_salsa2012.h"
#include "sodium/crypto_core_salsa208.h"
@@ -56,16 +58,16 @@
#include "sodium/utils.h"
#ifndef SODIUM_LIBRARY_MINIMAL
# include "sodium/crypto_box_curve25519xchacha20poly1305.h"
# include "sodium/crypto_core_ed25519.h"
# include "sodium/crypto_core_ristretto255.h"
# include "sodium/crypto_scalarmult_ed25519.h"
# include "sodium/crypto_scalarmult_ristretto255.h"
# include "sodium/crypto_secretbox_xchacha20poly1305.h"
# include "sodium/crypto_pwhash_scryptsalsa208sha256.h"
# include "sodium/crypto_stream_salsa2012.h"
# include "sodium/crypto_stream_salsa208.h"
# include "sodium/crypto_stream_xchacha20.h"
#include "sodium/crypto_box_curve25519xchacha20poly1305.h"
#include "sodium/crypto_core_ed25519.h"
#include "sodium/crypto_core_ristretto255.h"
#include "sodium/crypto_pwhash_scryptsalsa208sha256.h"
#include "sodium/crypto_scalarmult_ed25519.h"
#include "sodium/crypto_scalarmult_ristretto255.h"
#include "sodium/crypto_secretbox_xchacha20poly1305.h"
#include "sodium/crypto_stream_salsa2012.h"
#include "sodium/crypto_stream_salsa208.h"
#include "sodium/crypto_stream_xchacha20.h"
#endif
#endif
@@ -0,0 +1,92 @@
#ifndef crypto_aead_aegis128l_H
#define crypto_aead_aegis128l_H
#include <stddef.h>
#include "export.h"
#ifdef __cplusplus
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wlong-long"
#endif
extern "C" {
#endif
#define crypto_aead_aegis128l_KEYBYTES 16U
SODIUM_EXPORT
size_t crypto_aead_aegis128l_keybytes(void);
#define crypto_aead_aegis128l_NSECBYTES 0U
SODIUM_EXPORT
size_t crypto_aead_aegis128l_nsecbytes(void);
#define crypto_aead_aegis128l_NPUBBYTES 16U
SODIUM_EXPORT
size_t crypto_aead_aegis128l_npubbytes(void);
#define crypto_aead_aegis128l_ABYTES 32U
SODIUM_EXPORT
size_t crypto_aead_aegis128l_abytes(void);
#define crypto_aead_aegis128l_MESSAGEBYTES_MAX \
SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aegis128l_ABYTES, (1ULL << 61) - 1)
SODIUM_EXPORT
size_t crypto_aead_aegis128l_messagebytes_max(void);
SODIUM_EXPORT
int crypto_aead_aegis128l_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) __attribute__((nonnull(1, 8, 9)));
SODIUM_EXPORT
int crypto_aead_aegis128l_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) __attribute__((warn_unused_result))
__attribute__((nonnull(4, 8, 9)));
SODIUM_EXPORT
int crypto_aead_aegis128l_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)
__attribute__((nonnull(1, 2, 9, 10)));
SODIUM_EXPORT
int crypto_aead_aegis128l_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)
__attribute__((warn_unused_result)) __attribute__((nonnull(3, 5, 8, 9)));
SODIUM_EXPORT
void crypto_aead_aegis128l_keygen(unsigned char k[crypto_aead_aegis128l_KEYBYTES])
__attribute__((nonnull));
#ifdef __cplusplus
}
#endif
#endif
@@ -0,0 +1,92 @@
#ifndef crypto_aead_aegis256_H
#define crypto_aead_aegis256_H
#include <stddef.h>
#include "export.h"
#ifdef __cplusplus
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wlong-long"
#endif
extern "C" {
#endif
#define crypto_aead_aegis256_KEYBYTES 32U
SODIUM_EXPORT
size_t crypto_aead_aegis256_keybytes(void);
#define crypto_aead_aegis256_NSECBYTES 0U
SODIUM_EXPORT
size_t crypto_aead_aegis256_nsecbytes(void);
#define crypto_aead_aegis256_NPUBBYTES 32U
SODIUM_EXPORT
size_t crypto_aead_aegis256_npubbytes(void);
#define crypto_aead_aegis256_ABYTES 32U
SODIUM_EXPORT
size_t crypto_aead_aegis256_abytes(void);
#define crypto_aead_aegis256_MESSAGEBYTES_MAX \
SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aegis256_ABYTES, (1ULL << 61) - 1)
SODIUM_EXPORT
size_t crypto_aead_aegis256_messagebytes_max(void);
SODIUM_EXPORT
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) __attribute__((nonnull(1, 8, 9)));
SODIUM_EXPORT
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) __attribute__((warn_unused_result))
__attribute__((nonnull(4, 8, 9)));
SODIUM_EXPORT
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)
__attribute__((nonnull(1, 2, 9, 10)));
SODIUM_EXPORT
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)
__attribute__((warn_unused_result)) __attribute__((nonnull(3, 5, 8, 9)));
SODIUM_EXPORT
void crypto_aead_aegis256_keygen(unsigned char k[crypto_aead_aegis256_KEYBYTES])
__attribute__((nonnull));
#ifdef __cplusplus
}
#endif
#endif
@@ -7,5 +7,7 @@ int _crypto_pwhash_argon2_pick_best_implementation(void);
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
@@ -0,0 +1,56 @@
#ifndef softaes_H
#define softaes_H 1
#include <stdint.h>
#include "private/common.h"
typedef struct SoftAesBlock {
uint32_t w0;
uint32_t w1;
uint32_t w2;
uint32_t w3;
} SoftAesBlock;
SoftAesBlock softaes_block_encrypt(const SoftAesBlock block, const SoftAesBlock rk);
static inline SoftAesBlock
softaes_block_load(const uint8_t in[16])
{
const SoftAesBlock out = { LOAD32_LE(in + 0), LOAD32_LE(in + 4), LOAD32_LE(in + 8),
LOAD32_LE(in + 12) };
return out;
}
static inline SoftAesBlock
softaes_block_load64x2(const uint64_t a, const uint64_t b)
{
const SoftAesBlock out = { (uint32_t) b, (uint32_t) (b >> 32), (uint32_t) a,
(uint32_t) (a >> 32) };
return out;
}
static inline void
softaes_block_store(uint8_t out[16], const SoftAesBlock in)
{
STORE32_LE(out + 0, in.w0);
STORE32_LE(out + 4, in.w1);
STORE32_LE(out + 8, in.w2);
STORE32_LE(out + 12, in.w3);
}
static inline SoftAesBlock
softaes_block_xor(const SoftAesBlock a, const SoftAesBlock b)
{
const SoftAesBlock out = { a.w0 ^ b.w0, a.w1 ^ b.w1, a.w2 ^ b.w2, a.w3 ^ b.w3 };
return out;
}
static inline SoftAesBlock
softaes_block_and(const SoftAesBlock a, const SoftAesBlock b)
{
const SoftAesBlock out = { a.w0 & b.w0, a.w1 & b.w1, a.w2 & b.w2, a.w3 & b.w3 };
return out;
}
#endif
+2
View File
@@ -45,6 +45,8 @@ sodium_init(void)
_crypto_scalarmult_curve25519_pick_best_implementation();
_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 */
+12
View File
@@ -5,6 +5,8 @@ EXTRA_DIST = \
wasi-test-wrapper.sh \
wintest.bat \
pre.js.inc \
aead_aegis128l.exp \
aead_aegis256.exp \
aead_aes256gcm.exp \
aead_aes256gcm2.exp \
aead_chacha20poly1305.exp \
@@ -85,6 +87,8 @@ EXTRA_DIST = \
xchacha20.exp
DISTCLEANFILES = \
aead_aegis128l.res \
aead_aegis256.res \
aead_aes256gcm.res \
aead_aes256gcm2.res \
aead_chacha20poly1305.res \
@@ -176,6 +180,8 @@ AM_CPPFLAGS = \
AM_LDFLAGS = @TEST_LDFLAGS@
TESTS_TARGETS = \
aead_aegis128l \
aead_aegis256 \
aead_aes256gcm \
aead_aes256gcm2 \
aead_chacha20poly1305 \
@@ -257,6 +263,12 @@ TESTS = $(TESTS_TARGETS)
TESTS_LDADD = \
${top_builddir}/src/libsodium/libsodium.la
aead_aegis128l_SOURCE = cmptest.h aead_aegis128l.c
aead_aegis128l_LDADD = $(TESTS_LDADD)
aead_aegis256_SOURCE = cmptest.h aead_aegis256.c
aead_aegis256_LDADD = $(TESTS_LDADD)
aead_aes256gcm_SOURCE = cmptest.h aead_aes256gcm.c
aead_aes256gcm_LDADD = $(TESTS_LDADD)
+76 -31
View File
@@ -134,7 +134,8 @@ CONFIG_CLEAN_VPATH_FILES =
@MINIMAL_FALSE@ scalarmult_ed25519$(EXEEXT) \
@MINIMAL_FALSE@ scalarmult_ristretto255$(EXEEXT) \
@MINIMAL_FALSE@ siphashx24$(EXEEXT) xchacha20$(EXEEXT)
am__EXEEXT_3 = aead_aes256gcm$(EXEEXT) aead_aes256gcm2$(EXEEXT) \
am__EXEEXT_3 = aead_aegis128l$(EXEEXT) aead_aegis256$(EXEEXT) \
aead_aes256gcm$(EXEEXT) aead_aes256gcm2$(EXEEXT) \
aead_chacha20poly1305$(EXEEXT) aead_chacha20poly13052$(EXEEXT) \
aead_xchacha20poly1305$(EXEEXT) auth$(EXEEXT) auth2$(EXEEXT) \
auth3$(EXEEXT) auth5$(EXEEXT) auth6$(EXEEXT) auth7$(EXEEXT) \
@@ -159,13 +160,19 @@ am__EXEEXT_3 = aead_aes256gcm$(EXEEXT) aead_aes256gcm2$(EXEEXT) \
sodium_version$(EXEEXT) stream$(EXEEXT) stream2$(EXEEXT) \
stream3$(EXEEXT) stream4$(EXEEXT) verify1$(EXEEXT) \
$(am__EXEEXT_1) $(am__EXEEXT_2)
aead_aes256gcm_SOURCES = aead_aes256gcm.c
aead_aes256gcm_OBJECTS = aead_aes256gcm.$(OBJEXT)
aead_aes256gcm_DEPENDENCIES = $(TESTS_LDADD)
aead_aegis128l_SOURCES = aead_aegis128l.c
aead_aegis128l_OBJECTS = aead_aegis128l.$(OBJEXT)
aead_aegis128l_DEPENDENCIES = $(TESTS_LDADD)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
aead_aegis256_SOURCES = aead_aegis256.c
aead_aegis256_OBJECTS = aead_aegis256.$(OBJEXT)
aead_aegis256_DEPENDENCIES = $(TESTS_LDADD)
aead_aes256gcm_SOURCES = aead_aes256gcm.c
aead_aes256gcm_OBJECTS = aead_aes256gcm.$(OBJEXT)
aead_aes256gcm_DEPENDENCIES = $(TESTS_LDADD)
aead_aes256gcm2_SOURCES = aead_aes256gcm2.c
aead_aes256gcm2_OBJECTS = aead_aes256gcm2.$(OBJEXT)
aead_aes256gcm2_DEPENDENCIES = $(TESTS_LDADD)
@@ -414,7 +421,8 @@ am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/aead_aes256gcm.Po \
am__depfiles_remade = ./$(DEPDIR)/aead_aegis128l.Po \
./$(DEPDIR)/aead_aegis256.Po ./$(DEPDIR)/aead_aes256gcm.Po \
./$(DEPDIR)/aead_aes256gcm2.Po \
./$(DEPDIR)/aead_chacha20poly1305.Po \
./$(DEPDIR)/aead_chacha20poly13052.Po \
@@ -472,7 +480,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = aead_aes256gcm.c aead_aes256gcm2.c aead_chacha20poly1305.c \
SOURCES = aead_aegis128l.c aead_aegis256.c aead_aes256gcm.c \
aead_aes256gcm2.c aead_chacha20poly1305.c \
aead_chacha20poly13052.c aead_xchacha20poly1305.c auth.c \
auth2.c auth3.c auth5.c auth6.c auth7.c box.c box2.c box7.c \
box8.c box_easy.c box_easy2.c box_seal.c box_seed.c chacha20.c \
@@ -490,16 +499,16 @@ SOURCES = aead_aes256gcm.c aead_aes256gcm2.c aead_chacha20poly1305.c \
siphashx24.c sodium_core.c sodium_utils.c sodium_utils2.c \
sodium_utils3.c sodium_version.c stream.c stream2.c stream3.c \
stream4.c verify1.c xchacha20.c
DIST_SOURCES = aead_aes256gcm.c aead_aes256gcm2.c \
aead_chacha20poly1305.c aead_chacha20poly13052.c \
aead_xchacha20poly1305.c auth.c auth2.c auth3.c auth5.c \
auth6.c auth7.c box.c box2.c box7.c box8.c box_easy.c \
box_easy2.c box_seal.c box_seed.c chacha20.c codecs.c core1.c \
core2.c core3.c core4.c core5.c core6.c core_ed25519.c \
core_ristretto255.c ed25519_convert.c generichash.c \
generichash2.c generichash3.c hash.c hash3.c kdf.c kdf_hkdf.c \
keygen.c kx.c metamorphic.c misuse.c onetimeauth.c \
onetimeauth2.c onetimeauth7.c pwhash_argon2i.c \
DIST_SOURCES = aead_aegis128l.c aead_aegis256.c aead_aes256gcm.c \
aead_aes256gcm2.c aead_chacha20poly1305.c \
aead_chacha20poly13052.c aead_xchacha20poly1305.c auth.c \
auth2.c auth3.c auth5.c auth6.c auth7.c box.c box2.c box7.c \
box8.c box_easy.c box_easy2.c box_seal.c box_seed.c chacha20.c \
codecs.c core1.c core2.c core3.c core4.c core5.c core6.c \
core_ed25519.c core_ristretto255.c ed25519_convert.c \
generichash.c generichash2.c generichash3.c hash.c hash3.c \
kdf.c kdf_hkdf.c keygen.c kx.c metamorphic.c misuse.c \
onetimeauth.c onetimeauth2.c onetimeauth7.c pwhash_argon2i.c \
pwhash_argon2id.c pwhash_scrypt.c pwhash_scrypt_ll.c \
randombytes.c scalarmult.c scalarmult2.c scalarmult5.c \
scalarmult6.c scalarmult7.c scalarmult8.c scalarmult_ed25519.c \
@@ -915,6 +924,8 @@ EXTRA_DIST = \
wasi-test-wrapper.sh \
wintest.bat \
pre.js.inc \
aead_aegis128l.exp \
aead_aegis256.exp \
aead_aes256gcm.exp \
aead_aes256gcm2.exp \
aead_chacha20poly1305.exp \
@@ -995,6 +1006,8 @@ EXTRA_DIST = \
xchacha20.exp
DISTCLEANFILES = \
aead_aegis128l.res \
aead_aegis256.res \
aead_aes256gcm.res \
aead_aes256gcm2.res \
aead_chacha20poly1305.res \
@@ -1084,22 +1097,26 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/test/quirks
AM_LDFLAGS = @TEST_LDFLAGS@
TESTS_TARGETS = aead_aes256gcm aead_aes256gcm2 aead_chacha20poly1305 \
aead_chacha20poly13052 aead_xchacha20poly1305 auth auth2 auth3 \
auth5 auth6 auth7 box box2 box7 box8 box_easy box_easy2 \
box_seal box_seed chacha20 codecs core1 core2 core3 core4 \
core5 core6 ed25519_convert generichash generichash2 \
generichash3 hash hash3 kdf keygen kx metamorphic misuse \
onetimeauth onetimeauth2 onetimeauth7 pwhash_argon2i \
pwhash_argon2id randombytes scalarmult scalarmult2 scalarmult5 \
scalarmult6 scalarmult7 scalarmult8 secretbox secretbox2 \
secretbox7 secretbox8 secretbox_easy secretbox_easy2 \
secretstream_xchacha20poly1305 shorthash sign sodium_core \
sodium_utils sodium_version stream stream2 stream3 stream4 \
verify1 $(am__append_1) $(am__append_2)
TESTS_TARGETS = aead_aegis128l aead_aegis256 aead_aes256gcm \
aead_aes256gcm2 aead_chacha20poly1305 aead_chacha20poly13052 \
aead_xchacha20poly1305 auth auth2 auth3 auth5 auth6 auth7 box \
box2 box7 box8 box_easy box_easy2 box_seal box_seed chacha20 \
codecs core1 core2 core3 core4 core5 core6 ed25519_convert \
generichash generichash2 generichash3 hash hash3 kdf keygen kx \
metamorphic misuse onetimeauth onetimeauth2 onetimeauth7 \
pwhash_argon2i pwhash_argon2id randombytes scalarmult \
scalarmult2 scalarmult5 scalarmult6 scalarmult7 scalarmult8 \
secretbox secretbox2 secretbox7 secretbox8 secretbox_easy \
secretbox_easy2 secretstream_xchacha20poly1305 shorthash sign \
sodium_core sodium_utils sodium_version stream stream2 stream3 \
stream4 verify1 $(am__append_1) $(am__append_2)
TESTS_LDADD = \
${top_builddir}/src/libsodium/libsodium.la
aead_aegis128l_SOURCE = cmptest.h aead_aegis128l.c
aead_aegis128l_LDADD = $(TESTS_LDADD)
aead_aegis256_SOURCE = cmptest.h aead_aegis256.c
aead_aegis256_LDADD = $(TESTS_LDADD)
aead_aes256gcm_SOURCE = cmptest.h aead_aes256gcm.c
aead_aes256gcm_LDADD = $(TESTS_LDADD)
aead_aes256gcm2_SOURCE = cmptest.h aead_aes256gcm2.c
@@ -1300,6 +1317,14 @@ clean-checkPROGRAMS:
echo " rm -f" $$list; \
rm -f $$list
aead_aegis128l$(EXEEXT): $(aead_aegis128l_OBJECTS) $(aead_aegis128l_DEPENDENCIES) $(EXTRA_aead_aegis128l_DEPENDENCIES)
@rm -f aead_aegis128l$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(aead_aegis128l_OBJECTS) $(aead_aegis128l_LDADD) $(LIBS)
aead_aegis256$(EXEEXT): $(aead_aegis256_OBJECTS) $(aead_aegis256_DEPENDENCIES) $(EXTRA_aead_aegis256_DEPENDENCIES)
@rm -f aead_aegis256$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(aead_aegis256_OBJECTS) $(aead_aegis256_LDADD) $(LIBS)
aead_aes256gcm$(EXEEXT): $(aead_aes256gcm_OBJECTS) $(aead_aes256gcm_DEPENDENCIES) $(EXTRA_aead_aes256gcm_DEPENDENCIES)
@rm -f aead_aes256gcm$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(aead_aes256gcm_OBJECTS) $(aead_aes256gcm_LDADD) $(LIBS)
@@ -1618,6 +1643,8 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aegis128l.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aegis256.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aes256gcm.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aes256gcm2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_chacha20poly1305.Po@am__quote@ # am--include-marker
@@ -1926,6 +1953,20 @@ recheck: all $(check_PROGRAMS)
am__force_recheck=am--force-recheck \
TEST_LOGS="$$log_list"; \
exit $$?
aead_aegis128l.log: aead_aegis128l$(EXEEXT)
@p='aead_aegis128l$(EXEEXT)'; \
b='aead_aegis128l'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
aead_aegis256.log: aead_aegis256$(EXEEXT)
@p='aead_aegis256$(EXEEXT)'; \
b='aead_aegis256'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
aead_aes256gcm.log: aead_aes256gcm$(EXEEXT)
@p='aead_aes256gcm$(EXEEXT)'; \
b='aead_aes256gcm'; \
@@ -2565,7 +2606,9 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
-rm -f ./$(DEPDIR)/aead_aegis128l.Po
-rm -f ./$(DEPDIR)/aead_aegis256.Po
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
-rm -f ./$(DEPDIR)/aead_aes256gcm2.Po
-rm -f ./$(DEPDIR)/aead_chacha20poly1305.Po
-rm -f ./$(DEPDIR)/aead_chacha20poly13052.Po
@@ -2688,7 +2731,9 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
-rm -f ./$(DEPDIR)/aead_aegis128l.Po
-rm -f ./$(DEPDIR)/aead_aegis256.Po
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
-rm -f ./$(DEPDIR)/aead_aes256gcm2.Po
-rm -f ./$(DEPDIR)/aead_chacha20poly1305.Po
-rm -f ./$(DEPDIR)/aead_chacha20poly13052.Po
+642
View File
@@ -0,0 +1,642 @@
#define TEST_NAME "aead_aegis128l"
#include "cmptest.h"
static struct {
const char *key_hex;
const char *nonce_hex;
const char *message_hex;
const char *ad_hex;
const char *ciphertext_hex;
const char *mac_hex;
} tests[] = {
{ "54662e55bb4771f9711fe5301d7412fe", "e51d417ab10a2931d8d22a9fffb98e3a",
"04f672f8cdb3e71d032d52c064bc33ecf8aad3d40c41d5806cc306766c057c50b500af5c550d076d34cc3a74a2b4"
"bed195ffa3e8eddf953aefe9aed2bc14349c700ab7e4cb974fb31615a9ff70fb44307055523ab378b133fefc8830"
"13ce23bb01b23aeda15f85e65cdf02a291a0454900cb261872d5205737fd7410",
"3b762e3ab5d06cb2896b852ea70303f289f2775401b7808e30272f",
"d6736371f35eb067244dd7963ad2e0cd3949452cbd4c220be55082498ed3b230f579d78844311652a9958e82f172"
"bb8072c4b1114ec531a6ccb340ddd86caf32a0d4c9c45738e9ec9c0d9154612f7d90465f3a277bebd667c0af0edb"
"6935d8dffbdee96c1a96e4c4318f5d3bc90c1c8d5729e1a402f765bdc9b26b08",
"ee9595bb3f1b32000578ffb751b508655b3cae8fecaf44f40d740fa0347e283a" },
{ "46a5c72e03d900b48f829df00ecb88b9", "b25187e4b77b6770c35c7a962584597d",
"fc8083311b38a80c04e57d069661b273264310906781eb7e4e44c6416f7336267674a44a7c54ed6361b43ef95005"
"14e5d9e71f8b5c33aece756b64f3ed011922facbec7c3ffd27d01a853435bde551372806bd0c",
"b73c81239e01cd81b0de13247ca4e3528b87f3078e2b674a667430b1dbdc3e93657131e654a4182b4c4ab01a33b3"
"6e946f1fcc55aab06fc6f56d",
"51189448af53ae3630c06a167ceefe6b9b5eba746fb9b53f4b3104d2b15b6020fa8998e182eb9c9d6b6463939e50"
"723780f983733206ae6f11b986d95abe83555e64f8d3242d7e8055fcb8e2df8e41d318f06728",
"caf8957f9ebc9a88469c04089962487a3c77040b82661616c5d5c83e974eae1e" },
{ "e343d75de99e6d73543968437d3dcf6a", "317a5808ed5debf6f527a780e0896b2d",
"247045cb40dea9c514a885444c526ac867b1b80e4728a23b63f596", "323094c01e",
"18cb5d2fc5e27bdda5ba16f1320da42049759368548e5bd96f2dbc",
"5d3e88816daf20f11018456b58b2614050b93b222f03be079b39a9bb2de49f47" },
{ "7db9c2721a03931c880f9e714bbf2211", "27f642398299ada7fdda1895ee4589f0",
"dc5180954df0c3391a60b44cbf70aee72b7dbb2addc90a0bf2ceac6113287eb501fe1ea9f4c51822664b82fe0279"
"b039f4",
"6dd5e43033fa6f021059a353edaf1f870387693054d0a2360fd1f6941a68f48ba972a1bc0816a446a6186e4a9a2f"
"9df556bf709470137b8e60d9daa2",
"c8a7d9131cebfa5388003cc30deac523aa9b09d148affff06ba40400e09ca900db770e07cedf5cd0647f6723c810"
"ffcb59",
"2c17a7022f6500450e86c8afdd60d3da535c2322fdf84f3dc67429e6ad92673f" },
{ "bef8a47bbf0ffc4ab56ad5d9899f42b6", "3a2195a5196a0d785e04b38dd62f056d",
"5aa0dc37e4db1de35789398b25dc656d05cdc6737de4e30ce944b304ec752bbd10ebfa51feff99dfcfe26b8526cc"
"9b0cf1ba3d1685fb26cfc0c8888fd3cdf55577a516328b289eebda2e14f15eeb1d0f4207efebe3803618d43d9968"
"8e6c",
"a4a290a0d719b1aaf58f24152402b2f36957f44ea8a2d76b045390f5e0a3559a8ec5b2f871fc6095152183b7be75"
"65d4953b593f854b8477e29ce0cdddce5cf8739ab56288c26c81921f1fbae38b90b287b4622ca8b5b6c0b4b02196"
"e73ee56af6ae427ca7ae3ca0",
"0ead975179d64f2b927440bf9ef666ab921e7a3b0832949f31315c2931451c5ddf810c17ad0330073922c07a18eb"
"665aca01c05de58f7d159a74884f9d90cc10dc8c017ab61b820fc3dd32be52f3f7265e3a7a912a230b2a7ed19992"
"e693",
"f61ace25382fc3f88ec63eab23a6f9f6d1be65d149428bbb778a77428f909863" },
{ "01f1cea5b7e20db64a67502bb4715033", "7336701bbc2d766167b57c452d010f02",
"b3669d31ef8040dd6f462624977d69cfd1869fb19946595759b7265eb98b51f579fddce4bd38452fe3",
"d007e9ce654ec9a8b44e3655dcac889176fbf8012b133c4effe70b716eff43264d67d84a3d8504858c01002957ca"
"c6eb75d94635fb708343a18e20615e4ecb963bd98a8e7bee66520fba5c2991541c1e7863c1c97ae7ba6c3c34f116"
"1518097b6e75dcfb3aa3e93995eb39",
"4e643f7a1b8c0d595c8ff2b00c0145deb5bfa13d8a1b75d7a731f2258b690e1a3b2ce2cbacc6d05c42",
"8f33c6494f971462bcf82a508f341905b8febf9a9d25363ce853d59230d5e60b" },
{ "76d53860e1c45cf60d76d8336948e337", "579c0f0993f13470fa301cd4c6fbe99a",
"d0f5d2b3b824fe01ca36d00d47434519b2112195093a06d9d07d7f4f9c5b8f2a4c68668265c40d6edd6e12b5a350"
"e4af11f1ee6226bf307a1a6c25318c0d3aa0421edf565ad42d524f69d0fef06c236c1f0d0e50261e205f381c3e11"
"96dd8827b9990d674288f8250596",
"a7a77cc847afdfb9dc8ceccc621462302f31233a830b3827ca68618e604c95ba8615f6ebb5ff1c2c66727e70c038"
"554619f96f79d08902fc70111f853766a2db04e51d",
"def4fcb75110820298f08a8a4941434deccb952dec01215f5e7f5a2509fcb9e2a994a77d5eaa617da9cf2f03483f"
"aff5831506e5617707b88e08195b6a993219898c3ead769ebaa002934d3c80023833d7ce4a7a989596de6fe78eb0"
"237e8caab0a9fcd2625af80caad6",
"a4a60bf81cb2ce55df3c5864eac4c93d7748010a1adb6e5110d389e0501d7004" },
{ "cd05e08e14686623fd334780439c4ae3", "d05ba5a655bf7b1be7500f205c9c80b9",
"021c20518825c167a746a728578a0f470b2035c7b39c75f3e492bcc2e6e96035c4fff65dfbfa93cbc7a37828a0cd"
"62bf1b20b3bb89425ae647e021cde586f652eb98c98b1ac1018c6fe3e046f41545bbfdbf94dca48e465aaed8efb7"
"eab5ea143e5b95b72a078f8fb58d8ecfdd9a3a968e2468b6",
"be9255f750498ce672c877285e649318bd5bf07cdc5902b7de61a8415b6fbf20b1e432ebc9f8f9c8e3094ff6dffd"
"1b1e0c3cc5",
"faa851ddfe54b01cf1a3caf34815c6db0145ddebd1f34ca9edd479bd4a3bb4bac21c2b5d365ff4d389a764bcc143"
"6e51267ed3e4f225b7cda1fbf25d221d91b59aed0b4d20f71859f41e85e15a02e2bcd59913d8ae019d1f01ede317"
"b4ff94ed2b05650259a705c3b2be2c2a9c82a4809dab7b03",
"83b60061bc457578effce5462091e0a2b1f8ee35dbdb6a6b17e4e6179df6eb18" },
{ "6870a5652199e2f17407185bd7cf18eb", "942988922482351c317244b26587c560",
"49b2f6765f7f552f8704671271d703b3b02157f71ed84e64481be8bbd4f3493bfd3f313ac62ba4e9a7d86288533a"
"7bc7a4257cad5db04bb80d6574e473519eccd15cd2",
"6cc34a81ee984b436947b31574473e0a849a341db0ebc67f64efb39c9e118f65cfb25d1d898b4ee8052f700cb43c"
"be744d70b71d2086a89ad12dd67feceacb092a861ba80e41808c625fbdce017d51916e1fb5b38b0beebb27478d83"
"90ec79b3f3902a4ac22d79",
"82d3ae3aea3870e40fa48da698adcb596eb43fb063866f6231bb744b687e32e72117a03da08a635e4ed0f255f28f"
"3db6f0b8a7238d0244994a507fe75ddd17138b0605",
"a3feae07a737428751dc2c92301bc012b0d5c9c41a7543d248d6213a90343565" },
{ "15a87aee858f5723beb477b2cc039d14", "6ce71c763784e59fba852ae39b25de3a",
"25d1d38a8e9e8c34564abbfcba69035ce2f78df8626543e7639f2f23d742853e34880e7bc6d684ed3075abdfb91e"
"36076242dc53d60513333f59d139e680aa246b0e7e6092e8d4e6ab471459068c2a83b07e8b7969c911e3bff7558c"
"af02b3f3e6de7ae9122d533558868d993b8242b2328834a88cd656a941",
"26fde5885fd22bdcba8b5c1b5f66d09c7da7bfef2790e6dd2a98a351056044495fe4",
"2e241f3f96e8bde7d2b5cfad94461d6c7282405c77918a2a8731711175211814e20e72ce01139643f58a2336c05c"
"c27458f042ff063bc73fbee2ca8c099ff1f3fbe8517fce6cd3d54567220218cc67b4ef52767f75fe514e8ec49013"
"d9fa787685a5a81efe550248f342eaade9cd61fb5037634f2bf621c944",
"694a5b5ae2081becf4d38b2958d3557438b9f04dbefbe649baa91924e17e4d88" },
{ "23e2250df6b870b6eebbce928cd1a80f", "279f73beda18846d7170c29414590029",
"9cdd4e34495b4a03ca2c5bef9074c1",
"f306eb122b1907b4b6bccc77984ea7be4a28f9ca3615135d4c84ad74d7469efefbbff997bb495806a3d9ab274b42"
"28cb894fceeb24c4905e121efbd3ce8be668dfee4f9e38584ba6c3374337d3c884cdaddcd96f63df225ddc879e0b"
"a4bce0125dd0",
"8821c6d2c36ae97bef1b9d78c1afba",
"155b5b0c92176ed1a2248bc86b04570620e97a2a601a3d730d53236f43696c28" },
{ "82f02cd289d07f40acf9a1d2b1cf7f06", "09162f09c3893bd2c5e4f2c8f6ec9930",
"29f1d0e8aef96c9936eb5bcb32b0f751b25a7a46d4cc5a33d5f96dcaea757b2b",
"4ccb0ba7f1b2eecbe3dc3ba47f797201ca656ab04e5b38df9b95ef24ba02a5ef04a9a8122f954048581d275e",
"6b8f329fa3e905b7c0df490f18a13ab3b6be6701cba59a1ee7c12d054c500e58",
"8c97a1010a25a9e9047d4dded0235450f488d3c18b460316e5ef5517edc82e3b" },
{ "a28c7a79d3d7d7b372c5cb4eb66201ba", "3c27d1ca6e8fd19cbf2dbd81c87d2ac0",
"0ff33640432edcf34a2df2527ca13a0340d5adcae1d10589edbc89701f5093efeaf6d7d3f97a778052a76a6efe7b"
"37021a4fbc8205f26f17dbd0c68b60c6403c4160985255aeac23c3bc88b1d8c11fd4197ba366962c",
"96bec6c8014708e9142a8ea0fd496f89f5a2414f4296ae0a185b13f362f2",
"f20be34587afaa4300683655ea16a292bfc7f2779cb771e520c6b0952e41a2b89e45f6c4b571779d573f1383b5e3"
"11f71ca89379b8a3eb9d9cde72b16e0f782058e9bb4df4731cbd7c67af1c459061ccff149da3bcdc",
"d9dd91cdfc19da4a95fca7229f296a74aafc0d78b2b398e7dc089cfc6309d281" },
{ "24d66092958836e491cf974f34ee7ca9", "1c04e8166ef37a2a5d34b4462a7ca8bd",
"01a77fb558d8d94c16eccc82b49f53823597272de8e6df070fefd202042665ef5788bab86c70dc3e571e3b372654"
"494e552ef00462bf0f7fdeca8efbaa51f3da63e6f18fd13a4668b7fb1a89464a09a17d9ce709b0b8f079d6bf93ed"
"4871c0",
"3c082dae68ee1cd6b8d1ef79593132e68e373eec746d13583f28d42730bfa18ed77ee83ad6c3db24bcda6d5e2925"
"970dc01d1968b744cf3753e597ef831dcab728ce66ef3da0ab872cb0dedf77922a57abfb",
"47ec41abfe34c4ece7ff8f3ba179238f38f3e527d97d7f3f6ada79a9609e715cd0acec31f0a0df25c7ac0bb894fe"
"791cc467a098710e92af75a14e68d9241c160d4587f7da279deaa9cc9d9c5a6e97b231021ab2ba9c63473cf269ef"
"294d1b",
"807d350484ead90c1470efc0c6e334999b204444034151c3b80961faa4b821d3" },
{ "78f67aada609c94a7c79f2fe9bf9c82e", "9ad46b00946c799b17b683ed3d920896",
"3fc884334f762cede042a56b4a89ad9eaf474459371f2daf7c157a352cd5ae6d45662593bd3eaba7bf59ed569429"
"c52153599f02e3263b2784be00e52e30d0347553fe8aa70a071c3f2e34593d1e78692f9a194800571eaaeedcf297"
"0784426959e0",
"80bb105971fd223f89efae15ae1b5e252c7e1c761b6abd5509d8354adbbb5007928763e715aad67b2109ac60afc7"
"3e386a75084c77a5af1021ddb4bc636c32a70ee95c6ef5eea9cba0d1c944754f328208ff78f7b0718899bacdf5d6"
"e603e1b098acbffc83a86a0e122078338e0bd5",
"325ce1b0bb065488f9f74f779bdc433da58412b3834005b4661491e7d9d6c2a371560ca7d649093a7ab2475548ed"
"b37b425c23f75eb1bf79b972714469174fc85665dbe2af774719d803c2426f067ae68da1ae0783ae376970055cc2"
"8d484ecae2e3",
"5f755de0d9a033967a9d23e3357332ad9640983fc121cc9104c8e79b37a9ea6d" },
{ "ba4c7e6a36e4684631fa5ede07b678cf", "ed722d3769b33d82626ce89bb4d212d9",
"ae106ad8029d73ff984de16db70772ca9adec5f2bffb1d92e12412b6f76f855463f47f1739d6e9a1fab5a9b7ff3e"
"ad419efd7fd7b31a0c5b9b992aa8d0ad754cb5ba371adfc60a5cdbcae37c4653b9cf5f46b015d31a03e10e288256"
"7d2c44255c30f1",
"1955a221ff4b3f271876a4bc04cfb41449881f6ff3a7e9aacaa1e992a5218af3294027709c1ec594bf863000ddb7"
"d561ca4c3f42340ee932e71eb8efd1b7dbd19f6ef0de28d437355b2b4cd1527cee849a315fc9a35ecb6e458e4af4"
"df07a9e108a0",
"aa24653b20af5925a19e486d0b28e3bafdb240aa984c8b365792443a5411c8385c8197d0a13f1a8a7686c02cc0f7"
"adbe1230736362afeb3c0ada988dec6d35fd298768866f64aac8dd560250e27bb1007a3fd4c312a8ce3af4af9ed2"
"7d5859ae56a3ac",
"b06f562123bfc9c4e36e2299da0d6987c2c191c2486ac2ff9e2baa156ce6cb81" },
{ "639668e0b0fbb192b83f870048d29c1c", "48ed7de6da13ba38a1e748eb9ea57529", "1ceca7",
"604b7b904ba56e1f2d17556236150e5bd19ba125f92e9adef0f75b38356fc9a1851ba34105805cae7e99dc7bdcf8"
"744c44f06e709c345cadcffde348d2d55c5c36cf5ee1f288509e7a878dc00daa3d9593afafd7a0d94fa78960b3ca"
"9fdb2b7d5746d1f4702080fadaf0cd6785373a16ceed056641aa4afe725e",
"0f5286", "b6b24c01ae14d452da68d75693fe772340ee1310d329281370c6c54231372be2" },
{ "94b94725497880ff10d89572b62d1029", "bbdb56d8112d298fd5686b93787e0011",
"f062bbe085b5f49ae4064f9ffd", "de189cbb1821775cb97888f25d4781ddb82d4664634f41",
"d317f2a31eaa3f23e84fc3eaa9",
"5098967201169e8ab8242b8e09322165127ef2155795f62fc1e55e6a72363fac" },
{ "8e6f1217eaf84aee8e5897f5860f184c", "a4e099068ad0b67f28b6902a40921dca",
"53c939f8d167e49980f8fd3ccc4a2ae3",
"4bb7fccecf15f0b32be37860507fc53812713194e2844855894ef916abbf9b5d",
"92e47292a4f02cc22d3392d1b6a089ce",
"a3eb3e03808499409b00f0bb635c6fbf12062469edb45f5bb252c08748e131ed" },
{ "6968acc00e83184e6024167672c5df8a", "2d5b193c93e8aa5302fb5bb20cd59504", "bd6b6830",
"7f4e725f4b0f84454e823b8193f1d8b39d78a8b12f1a2250beb0def895dd0aef8960652c071a82d9ad89910d9728"
"7e72848fba1623f441d4955a019f5c1a955b054db858722b1f15210c3a752fdbd2bd631620cc56c2c30d78ccb162"
"72eeeea1",
"c01c9b02", "9910104c7d6d91e99c167d027c4190701a21c2fcadc9874b1744cfda7b75b8c6" },
{ "1e7e0ef737799bb1e00ccd4e31da5ff9", "9d1111da7d3d329ab5d824404e4bdd60",
"76cbec797c2364c6ed70901db527c6a3471a84f8d297c64c9dbffd7c3204503ca6e51c8c88757500ed503ba86d73"
"67baf6b9f3f5f2b69308bef97232e67698ae10896ed70a66a7c40115770f3192b9168f66a359270c753bfffc5496"
"58fc7aba3d3943221e125a6f88e025cc024b753693",
"7e6c97d0fee9f249c7510c2a0abf9530ac49cecfffe2ae37c9d38ba60cd012d3e00b696ee54591",
"b04070df9cc5d032d1914eb69f9afeda61559ed98c7e5fbeb81930b242cd30cf097e4130b0cc45b3e3178ba5ff25"
"98493e1d1fe22fd14f3cc2de08fd8cbb3539d4c71c606adb7826c2a9e05ac36a6795293cdfab6d07fcfdedac099f"
"1ab9bfec63a32f7633e424e684ca8744b4ad2288ed",
"a0b933e1a706046c38967971e50c0ce9ececaabd188092313c654e9f297cf18a" },
{ "6dbf15415dae57093e6774f4a1b7e4d8", "bba38b490d740d7b3df0c9283d4a530c",
"fafe1562e69a0f5149e0ee65d14b42098a8a53a58d2cf07fd86f6c64cc4e67d9b5cf3655b5ed7f722d2073a3e9cc"
"8372efd9620a32d6443a328436dd5ae394700ddc171bef8cb0674b1fab87b3e93aa426aee92c7ff733c33f9e4e49"
"f614043a7fb42cf657e4e3c2",
"c742a929d2a766dde0fb0ce2d0faf790bd6c5feb63cb3126402aac7ef7c9ddfd408cd22bc6928a9b67426e20c3d9"
"b340cd7231f87ffbc29a8e6c23602b9dc434f5ab06bb8c049803b45cf088b919e8584091ecfca7259e0d130ddf4c"
"a45d44291024446f58f1271f",
"d8dda53eeb8b375930698379836e64014c22bd885b5b5cafb4dc65ed00aa947acb2792c46dfed8ecd155b21cfc98"
"ff163b403e3a9961805436678fd34942354094bc47663165341ed0b949c0ecb4da5499c1c8c87eab99ddfd0fc2d8"
"0a9a520461e3dc402c3d4b4f",
"f8e4c1f827d4c5dbe00e7794effc567089b8128a5b11e3c6c2e5e36414b4618a" },
{ "a6d38f5cebee041a0afe035caad48443", "cb7e7813c7018b25782f77e0ae7c84c7",
"6ef6c5d92f3acf78b3e2c8334038f364a51193e4e559b1458dd74c44269e69a7a6af22f531680c63270b22ee7154"
"7d72abc9b87bc5639a1b3a13f8613ad4d1742e8209ab",
"d536bed277bbb5a9",
"457fff7d0e1b61def59fbe99e81c08bc370bcac0240c9cec6d6a0de2c37f9950f5b2d12b8b21126af18d757c743a"
"2a9bf451ebcba235f9f48c31a63674f0e8a1c5af5094",
"269ee12821b981d794399bb759d233db2d60c1dcbc3a9a87dbb068551b032f1d" },
{ "753eb1d49c102d1e3a9bcfbcb1cfa369", "0e0cc4395844d363ceccc8a07a92a2d8",
"5166ac0bdba2b660af164fc847e4ad300675cda9f0acda47567f7952eea7084832f6dbfa0aae9f403a5bbbe307ad"
"40845cb08347588063ad3f1df766790c023f160ce21bdf372fb48e0f7e2ced50cb3f86c2fb257ad7863fadc5fe69"
"92bf1c4508308b259480007a628aacee94c258c91cd847f3d05251dadb96",
"5f590a65034eba433e57a9d089b2924f5f8482db6a467ea435478afc",
"f2fa7ed4fccf0388b7bb291977d2214d03dd30c4f81bab2df8f2c1cfaa46ff2fd14733cd7b8fefb6dd020ecab3eb"
"478d1fe0b849e057512fe7b897b171771a2b68d7fe6d9b70dcfbb6307dacba5409b7fdafc49752e4392111474388"
"afb6d79ed21a60c59234bafad676f88f7653765b4dc758c9fd930b2632a0",
"352c935b482696f9a4f40de117ac4efe5c38952c8a45e23242a86c66e79f7f4d" },
{ "711a437629429db2e14058e2a826dcbf", "eb036d6e483a212ff6ee25d970fe1ac3",
"29937c0efb36ed27fe7709d7179b4f38a2fc191b5e8d9616b58f6dc9ba2ab74e13bbdcd233e8726d90f7ded06c38"
"61582f27158732f997df9091446befe75855ab05b348d68f96e45445f44c31e9ba3e4d7be96d9c8e806535e79079"
"139c71fcc599fea8701e0c2edf606986eff1535afdfa51d1be2dfdee",
"",
"4a61f5d6b8e746bf6fb49ca2b16c22f4e9ffcdc89a3137b39bf5445fb6b989d5200f0c8d5538891a5e8979b5cd8c"
"734128b4e4ad98b0cd598c40ec9be74725dbca84c65a52f17ac983330b0b74e4193540f6357c3bcde4e8d8fc6942"
"314ba68115bf2a682756e3c42008803a81532708a0e7b5e3b8436145",
"4af113e2b6165247c2760ab445c6985306c81fb9ccebb8df0e57b0b044c52736" },
{ "a26d6028473bf7de23851d00d514455b", "05b87c16ebee8bb62365d265ac6818a2",
"baeef99e6d4d15be9ff68a5d94aee7afa3d898cf42f94ad572b089659708658534d198dd3fba47a48611e8d78da"
"d",
"5d77dd8066d3cea3b0762602ba6ae3d1ae1c27d1ebe70bfcdc068912def545362a5bd2",
"e4365eac2e7b5d02e7fc6c110895bcf193a0ebe28e81d0f6128a95e3e9183582ebb964d666972bd7fff8cd3870c"
"a",
"515045f7ad90ab569a6c8b90808d64346334e71d03db18d07d19f40b2b94fc7d" },
{ "9bb0e363275374f1771ababb7b96851c", "08cf3a6355ffbe621ea874e917729d4e",
"b380355f794d31e6e85fc81a49fdc2af2104471609692f94c994a710be5cabdc9c9a61b94fc3f76927c1cd5c9a53"
"55a0e8ec55a69ef114b3963ec95137b9ff84240c2a71d3b3459056d1a183eae21cc5a7c109e937faf8f61b6232fa"
"30951f030047d7555b60f85a318833afcea80ee4d88a98",
"a7fc199cb07b6e5e498dbe590af4a4d95d35b043a97d52e11cc1092c70250112e070e49fcb8a3e7bbfca3d0c4467"
"ba332c0dad277a997f2a603fd2d016979c24b3870a",
"f8ec2722a9aa97d0cab77f7833e6bddc9570bb79a159feec2dac9d2366e7eabeb9d74ab53a846fd8ad052a740dba"
"39801b681e4da903939387ac3578eec4547dc97c43a8824db11cdae4e7ca8330c9a2d4249853a7285c54498e59d6"
"45546a5bb5858b8ddfe37a14242d9750b02ccb41b92bbf",
"1f6822430a2fea84595ad870c833951814a0792cce0cd414bf9f744bfa7c9f72" },
{ "7458fcb1fa1a886924a044eccab9c5b2", "30565643aa9bae844b87bd459628d093",
"4227dc17d3e0ec8363c84b989f72d235d3991e57ebe8a6fcbcab1053edf3b323cbf5f5f45aa142494ab0afe78c",
"d07afef73f3cabbed475b69fa30aac8af674b74448cfd4d6ecb0c5c1b5b58d0c7173eaee440be65715d780d61d34"
"6dede7c52724bd76207ada9a3707c1326dffefd04fb29321db617d12b4a607452a5b197460bc524a40672628e5b9"
"d45f821a5b",
"50c568868de4b49df40d33e6b25abd6b2dfd2f22bdc12a18ee2407dfe82cd3bfa2fc344c91ba6544e079446073",
"5d9f885ee5dafd1ef4a2d0a951941f1d03acf8adc3652ec34e5b6ca4bf7ed18b" },
{ "68df4e697e83c55c822bb3637bb52d54", "1b0df23e69aa907856ccb9ca4d6c51b5",
"59242d6e2d7e612d2aee7e8c08f53f172e0f93d57b0c08e7cffda90da5b2703eed8192511f6f1bd59e9ae781b4f1"
"156ae06ec38b5bc1f5dddefee49f561d692f832030f7a1b506c0ebe26447b3eab68172e7e7810b13d425f6c78e1d"
"6591cb4a24a61c5f9554a083283485175c18cf5df4ecf2f87c98615de9ccb3",
"fe9643236be4e7aa3998f44b4336a4c1f8fec28e17",
"46e15eda413037249e584ea1e3007166d70bf9c998ca2a8386bdb8efde70f3bd35a9b0877e333451f7789f4d8b4e"
"797170445eef5f818bd321574e66b7881cdb546eb5528dce75cdd1683e715b2ac7ad259954bca62d8f0f0066fa6a"
"df50f9e13dbe3ca1e503957cb5f8a2dfce0ca7377ca51989e3d8e5275893ab",
"6afa564c9f5a650cdd7284589134c6c1379fb798af9330bec354ab1221539e86" },
{ "a4b06bbf87393d2b921dcba697274f07", "5c14d51c52d95ac040e1060a0ffa21eb",
"8c85ddd8d3f446608e656052062f0cd58e6d58",
"847d3b95895426225d08865cc9a329f6f14e63bc5a66fb6f2a05bf8eb9bc8166e6fef29e1d573acdb4c3bc699dae"
"adff7df5d6e8dbe2ef713008afcf9b6e97ce6cab4d90594fa4430ecba5bb62a7938f03d57869",
"cf6c47fec422ee29226b6cbc5092bf670b5434",
"0d57758c68a9524557fd6f6742d24a00467846456a5bbb1271e2a5e8c3ccbea3" },
{ "50034800a878a3e570364540fc862b77", "bc92f50c2630f7fe354399fa9a6fc48f",
"23a93e636d1924a60f3461de1020b73ba18fc3854c9dc9f166d7d4d1912503bdf1",
"23d5009057b76a00d92db6b280a3a30ba08ba3afec6312197f06ee01dc4a22d73ea010e02b65af7968d8977f9762"
"ff5a6dde278d8b351d3b8efb32cf7cc8a70a7a8b3d79",
"2cf9f00b66c63518354ea59510c178d75499866218eb5a031a0dc4d743ac8c05c9",
"7681550d340ca003acb18bde30e7a26b23022f9e71dc0d7801ea6e9e569784f3" },
{ "d68448b73ae9bd161c9f1f36dbf6163d", "3345d820331958c63dd7a129d3ea0de1",
"ffa236070dc5b464eb034a9332041a014cd7852b498be2dc498dcdab4151d71f47c7a6b17a176c5999a7574fab5f"
"f469cd02226492a38693eb2296a4a7cc2857b28b5b61",
"c790bb04036883e6e4a6912a9b0afc36607e12b0d457d4b5f6c120cf0c009caa087fc2710439",
"1474d60067d082706bb0cd823b22582ddc0fd68412ea0e399b03988e616ac5ca0a7a8da6e6fe29292b57046c289a"
"d8a52360ecd19655bb801c6eaa2ccd66ccb14c4c3748",
"a1d80340487279787a1dcfd1082fe04d557c072f9b558cc78c956c1b06a0683b" },
{ "519fee7049473c7c41f3bcf7b2f63a69", "be227d2bb97f2eef62d5fd9203cb63a9",
"0c121fbcfb4f4f8f150281140e49d71dc5ed82ac4a30263a6b2d92c55ac6fe4f43f64c0f526d3df642c04a5c51e5"
"8703c381701b1f4618cf66e27c60dd5e6558b48028d5fb11339c4f2547a3aefd8100",
"9ebb3c33eda54164b54bf95d4fbe113333edb0fdd62c24532fbd4cb91b11e08b1e74487dbb0f3daaa08c566e759d"
"53ea3974cc3685ec460e608f7d01fd2dc23d9bc283c73ab492bc9fa2ff458d268667504cd47e585826",
"c0e22cc3aa610bda350a2ebe8f530c05cafa19e7060b064c276a06f0bb430b79839c51e6b22aabf429616480382c"
"86f8c04ea397c976bb08caf8f35c38208e476787ce229a7a300c5411471548b15d9a",
"7891d41aa7d6f935761dc0454a7919d511f629fdc3f38f4932eb0148d870a24f" },
{ "58bd2c73aedb31baca592e42d614c68a", "bbf76585731b6334fd314e771d9e404f",
"d238c5f0677c86c001e66691ea9eb8aee429fc490d38abccfed3a546b5f05398288e7232880fa3d485fe3862c546"
"9f980d9ff4caced1cbbe7f97adc15b6919876b8cbdd35320a20eda8a1ad6e853164b0e0ffb2f702e1d6a0eae8b27"
"577bdd4e5a17e6d8",
"86147d2debc30111b82c1ccc41a13dab1aff144bf2810695a40d02bdeaf519669a1b81864edf",
"94fccab0dce48d5aaf42ef59764cba95b42410e2d6b2c87c95d8dbc15421c45d7a556e25296df9167cd46def7d10"
"602aeebd0e7e909c52ab7a22f833e976fb76b9b39b1c2889587582d44ad8f484f0382804d7481f1a8d6c903b1319"
"0c213102ae273378",
"67a012ae5452dc293645179c0fbe23d2f79ecf435e4fa09208ddf8bbd8bf8b37" },
{ "a27d07b0976574c43edba5619b3c1f27", "879f4114bf61f1d7b487bcdff6c90778",
"302994dba80c2268f5b1c77bfad0b780a9be6437a07dcf1fee61e8e72f7fd3ceac24a01be486a2eddc901a19a0f1"
"0eaa94cf46b604f98a90c0f62fa6476d27a338bd046fffc26570",
"b97a43027c5dcb8a95",
"633c76783dcb88ff677a6f567685ada02d787eb9aa3a527a45fd415180f1fc19cfddcb90583621c2609558703c7c"
"5ed548650c98e591fac7a692b1f921284ebd8b86d3a1f26f1ad2",
"1f54a298784b2ad47bdbe5c982b51b2eb5f8c96bc4b46a57dd703dbd7e1b199a" },
{ "d55658dd1f27af02885d0f431fb2ebb2", "0aba0b9dfc9831aef0203bc61a601176",
"05805491b667d9ff38147d96493db29441e188243f72668c7ba61b",
"df403489e3bb67eeae8440569f6fbc1ae072305f5047c5105a7e4e5349d3732d75572298253f60e3821c721941c0"
"2dd761edfb081d09b3c7528a0e786a6fcbab709727e7d614ecc604def19c78fe061040bd636d842b16e96158db07"
"d6c2521ad54778acc78f12b450db0474ef700dfd547f9c5b",
"2e8adbea0e9ef5068fc3abb39ccef59616420d4fa038e2f35b560c",
"d1f27edf1046f8ad30e9900c43a317744dadc934e6ceeb63184e0663ba80df77" },
{ "adff46e4d7d78b3db5c74c712534db37", "c54185637dd281ebf672393cf9bad28f",
"b3850ad942e221753e4bf30140eb5569cfd9972246b9a6a35f7a8512db333aec59d380973d6a6505d99cb004dd47"
"b33e32f4f238b1342e6756d3619414c31bde45",
"59bc7a834189b930c8cbff769ef63b5e1a08c352ed779853b36bcd3d0ca7b4e35bd6cdaf2538ebf0e3a0d7cbcf3b"
"cd2b66b910967c226a1da42f84c4a8f81e19161c6593e2c0a0fdddd3c6ab3a864037fbf976e8aebd33d4450be989"
"3da2e37e728916b663944e3fa6ba543d1010",
"5cc93a30fd8f71befd87fc50112c156b53abfc97466f36e3315915a7d4147f0b3641177b9d08ec13e7315957d078"
"ec73eb0a93a3b7a51e3db63a396e6ea2adfba7",
"9c14e5bcf26a00fa0bb04256cc32736d0f2300ea93a51f8e4ba69d15ff11121a" },
{ "4a5d7c201ddae018edc9783413dd0329", "eb7e038948d3bf61d2cd29d2fe722603",
"3e6a17d47db58690b895619128645a2782d17e9a3735c1450a7c8e13a9f212208fcf256f",
"65b8cebd83d3197118fe81dddce22b3947653e04a48d05b4a2dbc42a89e62b0d6b61d5f31487af",
"a1a858d13540281e1d0a9a82e3caef64ff742e51b1f7476d318729508a68840b371fd300",
"62b25795c2cfc4d7f8c1058256ed2d0e73374f8e33a106319a67778387150217" },
{ "83190fd90c68cf63648dbc5daa442e3e", "3c3683fb5d3f1446f8c0d0127fc59d5f",
"a5136deb0a795dccc18889c23e9bb21640864981a4ecd903e8fb62",
"13066ef4f97501fe1854da6e2d57ed43e4c074ad45b7218536e7dd8368a4ee8c6f2b63199fc0a9a679e2b198bd3a"
"43e6e8bbd6",
"0c8cc3bde1f4933729293718686301b1ce50f5e7521655016f8432",
"cbfa761976091ca1ffaadb4278f141f83bd6b5270f78cbcdf61018a744ae2fe4" },
{ "05bed4c00afcb8ecacda8daba02585a1", "ed014d4e9eb504c70d5d3153473dc146",
"6fab5ff04c5a74a0a96948501de9167597a42fde4c50ab27719dd1e2b0e0fc0fe6e48e97c79d2a71fcb5e7ef60c6"
"7a32bf865decb39bf5ac17969177b2fac849a38e08bbaa3be0d6dcee9ff685ba97e9b54514624d51c270065508c0"
"3e96f28667e3c79f6a68859a85048301779da7e2254b1bd1662ae3ea15e0332c",
"ebb614315ba4b7d69632656d5a4d2810112862ea3e443148100bf2e89d059bc9e2d9563bf34b823c57108ca9a88e"
"4b07441f0ceca4713e2af56f40f35d6f2223d37e9eeb61739a65933712763104a67488d2022a5e033e240969a4d3"
"3966b4527035eef0970c69660ab3ee5c00ac815a9ee52d767b0a937b",
"6edcebf7ac2cd10be8a9a595a00e68e2d3127f5de640323791229141caded658e99fa59539077027ed7b7a433a79"
"4bd523ec59f504978964d3e17eb388956e43395ec89b252a93b317c64580426d1ab0b633a972524084be5d488645"
"8718ed42f47967eddabdf7b2f440818e0aab9d932c10a4c7283d05b84ef74a6b",
"7be2b003c341d5a7d1a7fbbefd6170d8be25e785230bb6adb70785416eabb281" },
{ "53e1b8de6176c05e04f5a4787e733b3e", "574de8c0f914115c9267f7852280fbe8",
"0ef099d6995b41d4e9227c3aa59da313160afaa32e1753422c1eb45bf102e806aa996a54606c78320e85da74deb3"
"9e8b0059bffe32780ec784abf6bd540d3c01e9f13c4209bec2",
"3d9ca3718f31b4f37f988ec676fc3b5492a44792d1a4f8fd7cc4726fae899f102841e7f5c04b2ae2c5f9eb204c5b"
"74222d89c2bd36b1500b2dd81e9643142becec1b88aa7a0d7ea4c81fb7e8fb37ec1a58e0383e",
"5cf9292077dbcc9557a1cef51de815facf02a89c9e29ac62098c8e4d0cb49c4f55ed55dd9dc9c36a634ceb8f4dd4"
"75837582b9be1c17030c0546b335be95fded1c416e4599851e",
"782baaaec2b50b6bcb07d00c6eacb7fa8ac084113bad5a1d6dbe8c80340443e8" },
{ "81118e9376e515a93dbdda15e58ff387", "75a0f02a8e78a0d2d0097cee863aa576",
"f30c353db4dcb2320ba5fba118e50526800fda7ebabef05bdf15aee5d9b70f2ab697937d77a01bb4bb460fcc4233"
"acc3b970f4f434e9ea85f30aed7d247115fc5db1c333ac6a008dfe65ee02b930ea097d046f2923bf84785d47f382"
"b19651948d69a6e4b861a7112c4e1804f6435f70",
"6f75857a795e6aff71994dacae41c2b2d9d6d7e67fbaed6d2e20bf89da461f509ef3d284341a8a2059ef1b97e9e6"
"820f1a72ad703e71999be36fd7156d3e3f35663eb4db44a858e08bceb154af51360feadf3bca8f20",
"0376339c7324168426dbc1f36ee91603f844352817b575ffb25ca6a75e2d0f0d77d853230b7e5a4823195c406298"
"bc3781b40df001d9cfdff16de970df4ffd0aa652fc7732c6311e2665daad93bb2576d43e1a58837513c62a8b74cd"
"e75901f9520a29a10e4dad9e4aa981c5e72d6cc0",
"d5db09ad858cbf4f860e527aac44bafedcfb01653818baeabfc8efeec0e3a9e5" },
{ "2d60824c89bbeb4e2b72434aa0356587", "20ad2c51679a7246ca6d0a47ba7292e8",
"17aa9ed83ff674f959085ecde2a6c5026325265a143d2c772337056a3c66abb5d742f33be39697194fb1",
"283fa29dc399d07116e43c85eec0adc8a76221669a9bba6554f8e828b680",
"40fddfe3b15925fe189b25aeb6616538958d43f0c64806f6286a5efc8a4faee98d02314eace7619bd2a3",
"4d9f99a5248b8c7ed7ecac6397969bb92799a3e206239bcfbca54ca2b2325f9a" },
{ "e2e2a29db958c6a3f68a52825b844c2a", "3210fe0cede911318435fefee1d921d9", "45f5fc3a",
"91209d1202574e", "2067b789",
"8869621138c4b08670fd8b6ede57933e4036e9c2a635e367f12a4dd7b19e1d73" },
{ "24affb4e364dfcb9be823bda04cdf045", "d7db8f0fd20b87ea4ad5e85e026b4b42",
"296e2b8040a3907fbd8789f660f85f3b49c6050092029a2b",
"42f31798f0016547fc9126a6919c14fdee91bc68f839dabb24d2249ff5e001b6a2308b57bfa6baa84e635123e8c2"
"110c",
"3af391d72e60751b10d3f009814673d64cb86a0dc998cbf5",
"388f9d6b3b3765f7361cf130f3418f1d81f3c4220b37046d82ba47ba252424d6" },
{ "e8d14e976fed8be59625b034419fde86", "1d3a06b7b80217caa5a4e237c2b94549",
"fa2d4f764e7399bd346f60f1cee797a9624809373daa3803cdb12717fb48503263b21ab1d99dfde20d588458993d"
"8c33384e897973a9dd74bb7e308c8fdd6a46a9",
"8c0c2e14cf2ed5c7147d8c50b4c28b232a80247344f21a61dfe4065fdc559200b7a0046e58606e3a3615ff54bb60"
"5e7a5f001d215de255ba75366f6be3dd1fd4858aa9e8904ca99647387b1a17c7ff",
"9427f3a18a22e801a3d7d863cccf4fc8dfc23a51bffab61235e2bdbae311ecc321db38128730818cec04f51ba5f0"
"c3e6b7327402a2a63c95c184f7946756f2c94e",
"70a800b87eeed41887887449465656d777659f183f9cb335d2a253fe09816cfe" },
{ "73e9b0ca8fb59181dac10130454e3a7c", "81c9a08c95fb942c42003aff680b11ea",
"971adb65be3d885bc115724cc33a0f53aa47606e7bd5",
"03cc2f305af325f4fa14de7ae8e89a03d040e812f0f4a7f82d72441d83b85a424f3ebc34ad",
"18ff36eaf9e6f49530db6f886fd85a77d55289d85fcd",
"0bde31d7323ac029d9900c897aca4b0d42f33d46bab1974affe35a4095139184" },
{ "59f15a1479f5dbd9c1b879475de9d2e7", "060ac95c956235bcc003dfdc92da5d89",
"a17b5ffce4cc08b23a8b8cd7735e11822f9672691b4dac380835729694f39da377e4d3fd23ef7b8b40a355e271bb"
"fbb8cd632481c7cdb67d99d314609174b10cf370fd9b9ab872346c631127f873573ef61776bb8e154b55bab6d845"
"44cd8fe5f7611840a057",
"9faf2f97e14d2be029",
"3a4986b25ac4ebbdf8c62e74790e79f860c5c131f68b540a7a9f0504cbbc36b7484fe76713a53f354f4970613a97"
"6a4cc55ed7480d5c5acf876977b74e622926c8309b65a5edd3ea2ad7c2805f2859ce1e2805577d409760b2cf8e84"
"cda7097478491bab3fd9",
"81ab6e4c949f5f8552f8a5f067073a0563a4ea6a9ae83810d76937e1a370cda1" },
{ "5dc5206e6145ce81ffbce717cb425955", "a7a6fda319439a67cb679b3cc6076dd7",
"4244fc95829a69089920",
"92f48b403ce97f87118605d24314981ec34b958ca0036f0b6acef5e20bfddee370e13bb2cc676dd8d4547668aacc"
"7dfde6af12727789f6ef811e63b391cfa9c4a68ca89e6bd978f38f9228dd9c24e968c4e59e3d34963d6ee942f788"
"e0b5625ad95bd3eb6ae67ffcaf2e4ee9a9cbbd15c40385ae",
"adc2915b7813f367bd80", "30cff01d2431cc61bacb6445d7e3e604de19ea532a2db3adcc1a978d9cdf3dcf" },
{ "8d88268afada2ee19bdc754147d6b04f", "119588763bcbdec984a226e9dff179ce",
"04deb10354489349a273c5cd5d02ee1d71cbda2a20743bdc2cbc48788b9da779ad2f3f1dec4cceb3132b2e4a1c43"
"02c8f9ecd1d37fef",
"0f32a44fb0edff2f0d2334029e59715f5fe2b8e896068b8488f43b567c0d6fa3de5bfa99c6c8f055e3889309e088"
"22eea3a683d6907675b6f0072438be",
"bda6c7381492f48849c00a86ba72c8162c09981f593547682b88b7bc6e051a9ab9fa1602e879b8f1e5145bb61925"
"30e7faa76be34dc2",
"dac7ad31ca2f77427665d8255bb24e7604403434770869ee202598e649950dae" },
{ "0049493db4ab12f83fe50f0fb2a88961", "fd0dd2556a03ebe50b41446250d56e52",
"1d3139deaf1046e234189942c2249a7aee9d644f934e6a203a8a69e7683557551dfade301cef8abb29d7308c5a28"
"93a52ce6b1493bf2232606e79c0ae51b0a55cfc0434f2e669cbc56fe7176fd04a1278918c14791e00f88de41d563"
"d3",
"4c92be6ed0634323014b9ae5c9401f751c5b710c12df357a694c1c25d906ab3beb5bbaa002208e787f448dd0cef8"
"4d3d",
"dc3bb7e4baadeb7c32f70cef3144d04ad199ec429ca6b695f87f997c6e5db58e9d60b34d89ccfe49d5e62c267a87"
"1ab7818137f523cde68036ad1d8f7db0b80286ceda9734b32ad73f7f0eaf8d19c80fe74866c1cf785f44513b918a"
"24",
"51a9d0fb861eca8a334632ade9f37e319a283d7b33cf0894b2e4e545d01afe75" },
{ "b6279f439261d1dfa4b85151caa60e75", "d0b003ce641633d48413bf3bbcde6b5c",
"39ee6f13a66b4ee74cda034a3bfed3fcf36f101f1e5b646d1c93e019174e4bd850417fcd5755264476124a5ee8e6"
"8cf2fcb9fba50f872fb1d33a025f8c572b4b5ff034d9ad77ecd33981bdfe3e9554253522",
"c635cbbf8eace8f911d093544536f38fcfa14b78b1e1eb069c42a351cbc70b7d1f5e93bceacadaf0c9198d3b2ffe"
"54db45cfac70c05d4aecb0c801194642cc070ed223a9e3b65b735af796373db7fb6e3285ee3fd3579dd74be0cd29"
"37f6f825dc3bd77ff7674b06a9ac",
"9787ff29777e12f86c7281c57c5a345278fa96d8fc6ed949be284bb79f97b34da9f256a6be673ab93829492159e7"
"ba1a19dc727e16ec57e388447c6616626c6af3412cc70432c3dbeafa35b044e7e53456c1",
"9fb598560f6e1085c32baaeb48e643f0ae1b5a2c3a8ffbc0a9d88821c893330f" },
{ "81d8c7bf41cb0e54fa51899660637877", "044d29eb40264aa36b976a766108ac88",
"4712680db09039894cd72e86db111d63c4bcb62058f84f83ef419cc21e36f2169ca340375ff69f9280fa60c99d86"
"a03dec4673901a7029784be2cdae3f63590da312a448d24eef063304545e553fd01ce6ee088e43c8b02c51b155ba"
"da983ea1aca4bad804406aad3c92ac75ce4c",
"897f0ea8d69b962913a9a59ca36b65aa7aefe39d3a",
"1d5cff8679946302451dc9aed1c601ce46a6f31ef17a53af6ab130605cc2a41da08c932a13b72983ba8cc5837604"
"0cc17e3182993dd593f4fc8f2965825173656325942e97db98c584ff0bc913633888a0812ea7675d130d690f9fe8"
"d6eb7f1655de1938fa0163b02c50c8a122df",
"96887b58e80e7c7716cfc5ef37c2b5a6bffb401733b82a0bd31510613f033a05" },
{ "8d35dc035a1039af8f3dc653857cef8c", "a0df1b717a186cfe86a0ac8343e80217",
"572bf5295915e7b2f817bd137a6608e09fcb7bad29887b9209eb29e944f2d3231717f9a112e68756948c1fc71dcf"
"6245a0130bbffeef74ccf3ff3860ca5a23753f7539b7a268fb08434b73ba9adc385e6f9ccbfd213f812d7b64d8d6"
"d7bfce1e236c5fd857",
"94714396e2dc4bc13a6d628563b0db14e189695810a4925a90826de63327942db0508e7453",
"6f2364c357e257e9b412018a1c702f0d0c1170751393b1f73999f77927d4ec1454e78eda131af56b1b46e348f877"
"5e6a022a746b31ee135651bb2a14e21cbc3f333c13df02a3de6d5128ff1145514605d98e984c28dfa89cbfd2f0d8"
"bc41af3e4c73e7ddc0",
"8df601cc113253733da78d2f06eaba71d45d2026e77c30918ff8c176b54f75a5" },
{ "4666ffed66ee2dc3ed18e6345384e828", "8c5c38610ee79b818c18e95ed2baf026",
"dd2baf24c168f99d1868712a43dfda4717650c26c36378127800d8cf",
"196a5357a0d6c588acc29f85cf38b78b61e0810feefb965d",
"a58828aa09a6f25e7d4775ba7a2b303085bd5fb43cd61bcd19c8bb8a",
"3f54d97c03f05417d44d62925d9a0e2c457fcc8befd1c388499c3e38bf89e163" },
{ "2d5464646342ceb3039a9d2fa406b90a", "8f045fec196343f938902e1bf706e34b",
"260ab30c42d3356dc39837b28f6f387accc2527aa853dd58f54426d52cdb9ffc0a5ca5a5c00761a7299e72d48874"
"b46ffe18dfaf38f19cfad76d7c9cb4a4cd7784cfb125a58673972b4bb8c894da2a8969f68cb27fab746f8d62fef6"
"0664900833dfca7e0be03eb5908f12e74bacda9d35b06e",
"d4aa5263a31fcc8ccc9e1127f7ba6ea2d3ccc72cd7e98e442890ad3f8763856d90e362",
"51ede001d1e4ca8a3de43186651a011cd14f4bf93e9375e910a8974ea411343b68e8f6ce80cfc945ae7d9c5adf76"
"e1c0f93de8f5dc48f36b82b65886776f1298b36a2f012140da048da77e09e4d57426abe2b894c425aeb2050b0eea"
"2d8f8255b733bb814abf3ef3d530d87dd7e1504bd683f4",
"890d5d33a9dfa3807e5e20e4824d13fdce5f7ccaeee1f3448a4b21a085277370" },
{ "723efa25ce1bf1748d86d9da611be9b1", "aff260690905ed2e8618c20963e4b7c9",
"f7e3eb593d3966c015d63ea0e9211beceb8fa6d9a202bb4fd4128c3177c5",
"3950b62147fc16429392d41cc4188d5c82537204e93edc7abfe7ce3404f9aa1474ebc4acd8e18aa652a87ee99c24"
"15f9214963becd44720684f67aa814903cde",
"9d7ee643a2cec28c467d2cc88aa539341dfbc82f72b5d940feecd11d4a7d",
"eadd8931af484ec1f3c3e18f7acc0dacec73dd80836e03957b595b2022c8ac21" },
{ "784197d89800aad00105ff7487b6e5df", "fdded94dfbb72c77ad81b2ccaaa2de2e",
"b14ad4fc08d08cb0601289a7ff9127f26c4036606a50bdd2921baadffbc75749b8ca33ddf7b6ac",
"b82cbea4eaf532d52046bf0bfaf22ec2",
"a625b4da553686296d5c6f5ce526c4f84c4af779c67cd328c16a7985c9a28737130da855b1f3aa",
"1807d55856630efb2794c74810522703b71bed188d5d918b8d265fb12a8bdc9b" },
{ "4dda1ff559520020513e0a8e554da28e", "8b183c7e23130aade134ff8e539d8053",
"e56d6364a87fb7f40af02b672fd337705ab8a02a5fbf2c2a639a872da16895774d90658269437160cd22d7370ab0"
"fd3e81d746",
"675b6d9e6c4c479798038b06561f1ac0dba2ce54988efa3393cb6265d901df1f815937a6e42db8c64c76dae0c8ab"
"a0ee20",
"0b2f31b8b15ec535c7e8c732e91f4e119bca192b1fe2eaabdac037dd1568e4a8d786c7048c16ebd4c513324b18ac"
"9ee0281fac",
"4809fc5e0e21e6344364f0dd59d380740c36c1b1d22e22de5c1190c0044a98fa" },
{ "66dbe969ec0adfbe1b99874de53417d8", "13ee71e9dc02d592700c04ca0bcc6344",
"fb420a6751909185796656a952759b4b794bd4eb98c82456af4f596093f5615962e62a9ce3fd9c4e0cb31a649cb5"
"c17d30f66ad3d52e16589b174102cb5ad9973ce03f44cd3776e0d9c538d255ffe81ddff81e06cff8e4d8adef4f08"
"cca416d52ee3aade52341e5cfb5de80c71",
"db499d6cf13840accc40e3d14733662885768f7541b2615138c498b087e51b20f1c0c373a589b510de546d372a40"
"cad0f92ac3f6f7bc1b85290c4553c83b",
"7a7786b03d18c1f2edb2d9015da13a327f364895751c32b8ab840079b08e47870b4ecb49474d2da2bc0a53977aeb"
"4d63f3b4e56f6a3d22ccd64fbe098fb9b27eb5e5b1f179ac69eb3d57175bf9ee37345e6f48161adcaa27bfb53638"
"89e38cf7297b3fb9b41a0d61e751ca5184",
"18d7dd7f471d491883ad31f046ff3451d02dbc85fe59f43c5b67c53c21cd9f19" },
{ "3a00ee1e8877248065cd26e3b9a857de", "950529b19697df5b0ce43a3f429e9509",
"d6fdd1746e8e7c7b84adef010951f60fd19b5aa74b1a8ab1ef2dbd5487318fdf7844b436dd1063f10e609bc58604"
"ada5c41ae2ea1b5303f84c",
"30a5f3a4e4543dca2b4d53a59a6a11b97a7d",
"06ffcb4a0da10ae1a5a1c5b6205ccf4882a9c796370e7793d9b3ff3a857c156b3285e3dcc2181d8c0df26167ab4f"
"8709db6870c9e10e75b90f",
"6127c870f1aad279a83c79ce8226147782f709fe81f8c8740eb47bea34c2a558" },
{ "b611b23912f0c44c8f0a452e181016a3", "aa0321dae967b75f958a3949fa08fda2",
"16320a4eabdcbbb1e600058d308cd8aa650ec35985906489d1ed3210ad402589b33de4a68088cec878461e54ce60"
"ebac399457d4f4ffaea77fef304f9363817fd797afac854d0ca313321fbaca4b0f",
"d0b0ea43a3fcbcf70e5d4b21ad115e503ada6f43a74a0585481b249db3c00645f06005b1b3da91600a14a40ae5c0"
"45127cf8cb6bcb",
"39f3258b852471d9b9a289027f26c3a7e49fa8cb61983c429b3b306edb1f0d34d9718774005d71ef2e89212c6c53"
"8f647335d85a2d0b4c72b97a7eee96d5b6976a602d82a294bc2a4887b16aa327f6",
"411aac7435b623d80d284a1a6533dba99d7a44e4de22bbb22b09a4812c6f27e5" },
{ "2ed2ab0c5548c1e97879a6c3ec7ebadc", "3e15d94c7dd22593caa8be653b6d59d2",
"76b1d92662d472c87ba9b27e2756cf62513ec190f709996e",
"f1e64c14a92e952036305ceef2535f65295b2803f7396a5e88f2ac993e201782e2f1edba92011a1530278b6d3d1c"
"9a",
"8c9fe2da6b58f0a9d40609bfd9ac6855badaef814588ebc8",
"b212a9d7ef27a5228e1c02ba78cc92068c2251c162348e1d87da2afc53616571" },
{ "37263267c4f24129d9db09a2a96d7c14", "39e5c4f2b36c9ed5077765b89cea1bed", "3581b4424c",
"6ea6a9f99350a38601162f2e24928ee2", "9ace0569f7",
"746536436bc496acc8bab10e6ae17d5d1d6113b3fad96df462107c3b4b6bf96e" }
};
static int
tv(void)
{
unsigned char *ad;
unsigned char *ciphertext;
unsigned char *decrypted;
unsigned char *detached_ciphertext;
unsigned char *expected_ciphertext;
unsigned char *key;
unsigned char *message;
unsigned char *mac;
unsigned char *nonce;
char *hex;
unsigned long long found_ciphertext_len;
unsigned long long found_mac_len;
unsigned long long found_message_len;
size_t ad_len;
size_t ciphertext_len;
size_t detached_ciphertext_len;
size_t i = 0U;
size_t message_len;
key = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_KEYBYTES);
nonce = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_NPUBBYTES);
mac = (unsigned char *) sodium_malloc(crypto_aead_aegis128l_ABYTES);
do {
assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aegis128l_KEYBYTES);
sodium_hex2bin(key, crypto_aead_aegis128l_KEYBYTES, tests[i].key_hex,
strlen(tests[i].key_hex), NULL, NULL, NULL);
assert(strlen(tests[i].nonce_hex) == 2 * crypto_aead_aegis128l_NPUBBYTES);
sodium_hex2bin(nonce, crypto_aead_aegis128l_NPUBBYTES, tests[i].nonce_hex,
strlen(tests[i].nonce_hex), NULL, NULL, NULL);
message_len = strlen(tests[i].message_hex) / 2;
message = (unsigned char *) sodium_malloc(message_len);
sodium_hex2bin(message, message_len, tests[i].message_hex, strlen(tests[i].message_hex),
NULL, NULL, NULL);
ad_len = strlen(tests[i].ad_hex) / 2;
ad = (unsigned char *) sodium_malloc(ad_len);
sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), NULL, NULL, NULL);
ciphertext_len = message_len + crypto_aead_aegis128l_ABYTES;
detached_ciphertext_len = message_len;
expected_ciphertext = (unsigned char *) sodium_malloc(ciphertext_len);
assert(strlen(tests[i].ciphertext_hex) == 2 * message_len);
sodium_hex2bin(expected_ciphertext, message_len, tests[i].ciphertext_hex,
strlen(tests[i].ciphertext_hex), NULL, NULL, NULL);
assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aegis128l_ABYTES);
sodium_hex2bin(expected_ciphertext + message_len, crypto_aead_aegis128l_ABYTES,
tests[i].mac_hex, strlen(tests[i].mac_hex), NULL, NULL, NULL);
ciphertext = (unsigned char *) sodium_malloc(ciphertext_len);
detached_ciphertext = (unsigned char *) sodium_malloc(detached_ciphertext_len);
crypto_aead_aegis128l_encrypt_detached(detached_ciphertext, mac, &found_mac_len, message,
message_len, ad, ad_len, NULL, nonce, key);
assert(found_mac_len == crypto_aead_aegis128l_ABYTES);
if (memcmp(detached_ciphertext, expected_ciphertext, detached_ciphertext_len) != 0 ||
memcmp(mac, expected_ciphertext + message_len, crypto_aead_aegis128l_ABYTES) != 0) {
printf("Detached encryption of test vector #%u failed\n", (unsigned int) i);
hex = (char *) sodium_malloc((size_t) ciphertext_len * 2 + 1);
sodium_bin2hex(hex, (size_t) ciphertext_len * 2 + 1, ciphertext, ciphertext_len);
printf("Computed: [%s]\n", hex);
sodium_free(hex);
}
crypto_aead_aegis128l_encrypt(ciphertext, &found_ciphertext_len, message, message_len, ad,
ad_len, NULL, nonce, key);
assert((size_t) found_ciphertext_len == ciphertext_len);
if (memcmp(ciphertext, expected_ciphertext, ciphertext_len) != 0) {
printf("Encryption of test vector #%u failed\n", (unsigned int) i);
hex = (char *) sodium_malloc((size_t) found_ciphertext_len * 2 + 1);
sodium_bin2hex(hex, (size_t) found_ciphertext_len * 2 + 1, ciphertext, ciphertext_len);
printf("Computed: [%s]\n", hex);
sodium_free(hex);
}
decrypted = (unsigned char *) sodium_malloc(message_len);
found_message_len = 1;
if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, ciphertext,
randombytes_uniform((uint32_t) ciphertext_len), ad,
ad_len, nonce, key) != -1) {
printf("Verification of test vector #%u after truncation succeeded\n",
(unsigned int) i);
}
if (found_message_len != 0) {
printf("Message length should have been set to zero after a failure\n");
}
if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, guard_page,
randombytes_uniform(crypto_aead_aegis128l_ABYTES), ad,
ad_len, nonce, key) != -1) {
printf("Verification of test vector #%u with a truncated tag failed\n",
(unsigned int) i);
}
if (i == 0 && crypto_aead_aegis128l_decrypt(NULL, NULL, NULL, ciphertext, ciphertext_len,
ad, ad_len, nonce, key) != 0) {
printf("Verification of test vector #%u's tag failed\n", (unsigned int) i);
}
if (crypto_aead_aegis128l_decrypt(decrypted, &found_message_len, NULL, ciphertext,
ciphertext_len, ad, ad_len, nonce, key) != 0) {
printf("Verification of test vector #%u failed\n", (unsigned int) i);
}
assert((size_t) found_message_len == message_len);
if (memcmp(decrypted, message, message_len) != 0) {
printf("Incorrect decryption of test vector #%u\n", (unsigned int) i);
}
memset(decrypted, 0xd0, message_len);
if (crypto_aead_aegis128l_decrypt_detached(decrypted, NULL, detached_ciphertext,
detached_ciphertext_len, mac, ad, ad_len, nonce,
key) != 0) {
printf("Detached verification of test vector #%u failed\n", (unsigned int) i);
}
if (memcmp(decrypted, message, message_len) != 0) {
printf("Incorrect decryption of test vector #%u\n", (unsigned int) i);
}
sodium_free(message);
sodium_free(ad);
sodium_free(expected_ciphertext);
sodium_free(ciphertext);
sodium_free(decrypted);
sodium_free(detached_ciphertext);
} while (++i < (sizeof tests) / (sizeof tests[0]));
sodium_free(key);
sodium_free(mac);
sodium_free(nonce);
return 0;
}
int
main(void)
{
tv();
assert(crypto_aead_aegis128l_keybytes() == crypto_aead_aegis128l_KEYBYTES);
assert(crypto_aead_aegis128l_nsecbytes() == crypto_aead_aegis128l_NSECBYTES);
assert(crypto_aead_aegis128l_npubbytes() == crypto_aead_aegis128l_NPUBBYTES);
assert(crypto_aead_aegis128l_abytes() == crypto_aead_aegis128l_ABYTES);
assert(crypto_aead_aegis128l_messagebytes_max() == crypto_aead_aegis128l_MESSAGEBYTES_MAX);
printf("OK\n");
return 0;
}
+1
View File
@@ -0,0 +1 @@
OK
+723
View File
@@ -0,0 +1,723 @@
#define TEST_NAME "aead_aegis256"
#include "cmptest.h"
static struct {
const char *key_hex;
const char *nonce_hex;
const char *message_hex;
const char *ad_hex;
const char *ciphertext_hex;
const char *mac_hex;
} tests[] = {
{ "7083505997f52fdf86548d86ee87c1429ed91f108cd56384dc840269ef7fdd73",
"18cd778e6f5b1d35d4ca975fd719a17aaf22c3eba01928b6a78bac5810c92c75",
"5d6691271eb1b2261d1b34fa7560e274b83373343c2e49b2b6a82bc0f20cee85cd608d195c1a16679d720441c95f"
"ae86631f3f2cd27f38f71cedc79aaca7fdddbd4da4eeb97632366db65ca21acd85b41fd1a9de688bddff433a4757"
"eb084e6816dbc8ff93f5995804",
"af5b16a480e6a1400be15c8e6b194c2aca175e3b5c3f3fbbeca865f9390a",
"0943a3e659b86e267ffea969ddd6d6d63aa35d1a1f31fb6f47205104b132da65799cc64cc9f66ffa5ec479550c2c"
"5dfa006f827ef02e3ab4dae3446bf93ccb5c17e1ec0393f161fca94f2944d041f162e9c964558b6b57d3bb393b97"
"43b1f8338ff878a154800fd16c",
"480091eb823480e8b29c7aa96ffd55a026ac3d7fa16787c36c25865131a639a4" },
{ "c88bb05b2aec1218e1a5026511e6d44de7bd502588e9e2a01591b39c5ead76ff",
"4a485f226a73f0c4e16242e8234841cdf6af1771eb278e7f35428d03eb5b4cf0",
"2a4c06941ec356390542d7d7833fd68fc85a00c0452281f87dee6f10180d02182791232c7007fde35dfd5a901afa"
"896296f9f344db717994d078fbd3a4cec8d782d2bdc205f3709827b776fd5c863a952fea97a14a6c2ee3f20432b8"
"baa084470179078bd6a83597478b2fd9ae00ecb424822cb0d61e9a55a4",
"38a9809dbdd2579010d38bf5314f255b",
"b8565db06c2fa493e09b6764f4d09296422095eb6e9890f606654713bfee6f362a123688b61f254f315f18b20bcc"
"5ed8b0b4f2224de9f498e3ef03532a8bcddb361f5ace8ff491bab8b3d06550496501264f9f48ebad277e74921467"
"89d0fc1a3b1e3e81598370a4183683d1fee25a9a1fe359c836932746b9",
"5d5d35e0299dea47956a2e2143cdace4de8d228784d6717ae5a6bf5ea6b3ed04" },
{ "77b473865175ebd5ddf9c382bac227029c25bdb836e683a138e4618cc964488b",
"f183d8de1e6dd4ccefa79fe22fabfda58e68dd29116d13408042f0713a4ee5f8",
"9888b8ee03c3217a777b7558a31e331909570ea196f02c8cffad2c8dc6499b8125363c06a71c057842666bfb5c6a"
"cc937d2eecd960330c2361abdd88a4b191557ddf5102de75ddc7e09aee9862f32e24f1db3847a5f5b379fb32e2ef"
"7ffb0d3a60",
"0679fd74a846965e33e558676115d843e440fa37092fbd5c57c82fd914210fcf948f911b04632d66be46248d772b"
"3eb9f55b537e54b1ec751b63f035c8",
"3464d835302583ade6ed99e23333e865d3308f31a6cb65bcefdc9a1b9b4d0e0f75513188480dac4a64922af44413"
"24ce7de74eb9f7f4e414f6177a4814edc96313694b99ff8dd36b2f7f79c7ecd70ec475abe1c1909238767f172fd6"
"b95e92c025",
"33527e829a3db1929cd643d5251ee19482aab7f2d74635cbf8370f1e1621ecdf" },
{ "b8c6e8cea59ca9fd2922530ee61911c1ed1c5af98be8fb03cbb449adcea0ed83",
"af5bc1abe7bafadee790390277874cdfcc1ac1955f249d1131555d345832f555",
"b6c15f560be043d06aa27e15d8c901af6b19db7a15e1",
"d899366a0b4e4d86cce5ba61aca2a84349c8de5757e008e94e7d7a3703",
"4c8496dfa6c419ef3c4867769a9014bd17118c22eef5",
"f81ceacaaae6263c33f836fa26d92b0f08eb0796135c7fe312c93add6a208e8a" },
{ "d4ed0fe94cda2be7e50d57833158c84180b4cb7dec95d5ba774b6b5e1b0597bd",
"cae41ba20bfd124270b76c13d61c1dffd7a42017731546d41aa071c22b9967cc",
"1cd4b85fa6c14d5adea84ed3167479c1cd18e77792cca73a540aa16a00e50ba62ddd12a62911b21d3ee108651693"
"7f33ed7756c7ec93b3",
"35564745c05bc961994ea03764eb02044f9e7b2f6130d6d1f041580d6b3ea7ade2b6e231dacc5e97db01",
"a1f64f45985a89303d1fdacf6f31ad745a8015350f1afe63d6ecc26677f661addd3c229ed76f4c627b1e902f8ce8"
"c42fd08baef481e86e",
"c706b2f13d4e76b4e024a2d72540637a8d9ff5e626d6bffeb7801c58ccab0c2e" },
{ "d755d9d980e8cb221955b63c19f3989eecce945f61307a0593bd7cbea6577e1d",
"9f83666d787e5ceb0e17fc1b084b3734dc3ea88dda73b1b7ed53be7491f4637f",
"d1093941fdb3d9710cfcbe504be2434c17296d0b7e0f4e4058e79062f2b2cf3cbe2007ae2e5d391ebf3fc1e07e4e"
"e7d1705044c9bc2bf08e97a4d8",
"f2a1432fba86dc01b3bfbf3206943bfa3dc66e9f54b576c57f61ad515555b0c371dcfcec45eaa58ca06654b6cd47"
"6aaaaf1b2602c03f9e41a2cefc265d10f19d42bda0b07aac8e86",
"58e044943cf3b73e48ce75c048464fedb0445b02bffc00c1998b212f48f48c93e89dbfbf36cfade1112629e8deb2"
"67c55118c10ab67b7ef2740fc2",
"0179f0edd217214881e90c1be3b513170d1292603c484a55499e1bc70970d5ed" },
{ "152f15933e4ae26192bd3aaecea29daf77e9b2bcd97e7eae7637025de8a3d3ac",
"e177be02348efb533fc2e9d5a259cef80aabeec97da50c937e8d5f7c6eeb32ce",
"ef86da6d5b0dab27a444a95ef5c237baa5819b863dcf0232d0162dceda8f180e1b9c6b9d94ccc0692eb52923783e"
"f9de17497f1da62d6524bbf432aa6c3bbc1e851310218a03ef97ac6676eb6ec30ba6ab131802b992a11417cd00e6"
"270ac73dec8dad88ecc3cba25734ef7de3b8e3cceb5d19778d6808",
"221b1875425844e48c2111fa59b6df729a924a43b3869ab64f8291dca8f12be34d62d11ac94f9f308e0744d5d5f4"
"564fe9fc1e014cefee3cf7706ace4643871d41f1ad5c616adbcc1e9701a3b4",
"dc48260eb047397f41c4d0a0ffe394557aaff8b149cf4b16e7c22754095f51b626ded66e3db9d4cbd98421ee9d8e"
"7c6eb72b607cd462f1fb3ab0c41b2cc84ad320c781ccda9aefa1a68ff5d280500a17c7959e869f45f97bf09cd0bf"
"2c4c068d2b9603710ca8f71f82acd47faefdebdd0abc9b45c83388",
"97191234839a54c00143463e8e8c863f5710e520ee9d9b9ce051076696bc8b52" },
{ "873edbe818233d0f51bcfc1d5340cc4712c909de36f963e6157f128b8a71e3a8",
"16e7637700a6fc10539c056663d12ec85bd529f1e6adb131a3853578f5d27c12",
"db38cdcecbd99003978832d29cf6a34acb4d0e6293e37d2795fcded538ba37d6a11ed41430dc9f4c0cfd27587d60"
"7846f42aa30682bcc295097053821b80b5869b4a0b852ba7ac1d7b784ea0e76b2d033678011889a5adbf7e091cdb"
"b9754f828b7519f1179e2426ca6bf80a509e34729c854a5052e61adf8d",
"0b0bd264fb5030f84da620f07099f42dfbad57c314102a1f7fc0b452ebb7966ad4b88ea773aa07",
"de67a4eb8821625d4451734993d93e0fafd2c55c761afb097bfccba898e6d634be975d5f2ce8d456785a089c9b40"
"724d8ea41095c1cc80f070c3ababc9258e5eea504831b034baccff61d8f73c220d5bdb1244c8a675f2d6081abea8"
"f59088b99583cae22f8bd37fa030f94d5bfe1c9e799aa71bb41874b17f",
"8665ecac1758be7eea0b5f482ce8024ce3c78b3f51af3ee4e0b440f24db2f451" },
{ "b04b735c74d2286302e5994e126a8a8f52af38d6cb094279ac883b560a52a6a6",
"6af57ad705792ac2f71a61bcea9ab38a9a5acc510de7995b66f3ae4cd2079aa4",
"1c052ab52a21894287fa7f763b12f49b2edd6a0cd266e93207573d08d75ec31b294d171f0098f804020cc12056c6"
"0f8d396ec94d97eae1c07a874849e39a3302e8c3b538de6c9e268fb922f6875ee5bbc264137035a76d9ceb269dc0"
"988517a302c2bace2fb6efc4ffaa2c1455a16b6cd0",
"52618046f112a5a35780e370c713987e24609c38157e5fd5d51ed36324359b0615af70f801b05a98ceb1",
"7183180c37ab14f38ed084bdd2aaa4e8d8e8442b526214f594054e0379a2aba6992804afa8c63bb1e580d7d905d0"
"c46536970e98bf7cb921e95db8faf388e7c98cc08496a7036b90a2e4efdfbcf79610edbc9f905067358b13934825"
"c0ed2e3c3d1f03f7ceb812945f77fcb7731f805b1c",
"483a6b3a7d5de797f0911d2a514350d5ae5af89aefe1245cb08cf8c7487eb99a" },
{ "5bd7cbff6b469c03643cabb99dc50f905091fc9cfcd6d8f28e74ac1a33fd0198",
"3b458a51fdb6b9d5a7071a22825a79f2844c5ac7ae91014ed7862499dcf10461",
"4eda7997fa3b9e12e39eb00b209b43af9949c017660e523e78d0e483f23e9113b662f42a164db3511d",
"808d8a8523a983a2afb2f9daed913efdc19a3c1ca3315382ffe757426e7ef65bc1d83d8e6af95191f3c30de29806"
"5be1e5d14d0dba8f82281aa2fde67684cf7eb6f32ca4de7a116caa796f2b27222f93b9275f4b95f08c4a4e8d6b13"
"cd326c16daf232c8",
"98959acc116ede75df052f4028783105408022ed6db9516e8a27f18c2b4d59f1bcaa7163e0811203a2",
"edff06bd132fd3031cfa5a47803d5169289a29d304f7091b20dec2b284a0e271" },
{ "1bc0dea26d8583e51cece0df7021522adb9336450929715fecb497c43cfba717",
"7cced62d655e703f54824f4e2ceb6e5af1507e2000f1bfec9e50eb87328c2218",
"edeb537b66dc39d20ef6ca5647e6f34df0f5dce2964d227b0c444613f951edbbc532b5576735e9dbf39177ccf807"
"1e5fe9fa011bf8ab7fe9f716acd50847f7a9ce35262b22f04486f1e956e09005249b5ed70e68ca9896802c4ff9b8"
"019fab057bbd5ecddaebb6a079e57cb6e39c95f6748b22cf3703e30a5e",
"36febc6e0763391b6b1031478fd485b54d427b88d06d3582c10263",
"5f75548b3bdc53e80c61fe8659f2b90350a59dff4477fad24764621dbc35ebbb6d71f80c556a825a2bba962561a9"
"db3360311438d4b3eb7452926dc5ec88d451be66eeaa491cc21837ec202b3e71b3ec2d0ed2f53ec59da253fc9920"
"482545f570e3b2e4ecb3629757f3c721fc462a380504aa8fa9fc8880fa",
"9e46a21c41a40101ca413017cadc2fed4fc3ff390a57fc0643784871af07492f" },
{ "230bf249a043d34effa31974328fce207daf3ce10b42e5b44073b70e9566b1bf",
"de67af72aa00fe1798e8b41be2528f36a45aeb3d957bbcc5c01490e4a786437d",
"12403a1905c9da8bd546946612e7d4ddab1c716a533cbd5898240b4c68c675c2f18b72dd40c218bc6f7599edb573"
"f89af867ab3c05fcef8c78b9bd0a267e8db3d9ab1dd04dd14a11f9c9e0",
"77fe28a72f7029da86bfbcddcb819f7068afc07a249e207ae80f0acb90",
"e9f1c7e28b1581f25448b1e21de4fe67c3ff432338b2f7364460b6b1f666a2ddb5b9cc896c3f410445d00c146952"
"180ad1a36944aad13956e6ff95449bcf8bb6cdb1b3e87112507663441c",
"7174e0d47bd83c1a8cf9cb14127d26bad67bf413e146bdfceab4e79b7ef13c70" },
{ "c9675c6e2c0d8cf9f45f17faff568943e4a9038df4472908dd631c5ba8a29c2f",
"bc07c8de4778d50f5dbf324e3f9e377b82e6defdb84163bc9447f156bb70beb7",
"d2c4c2773ac5fcbfe43869bafa8278709a32dc395be3df8360562184d47675133ff716c620fe4d18902dfb41d09b"
"205c87a9a2acd268f9d5662c9e4b12c50181d93ec7b676cb7afd0639f2b3c1154f7489cdf926a85f51c62eb16c47"
"b1bde2b46df56ffc9438b395",
"88a976fd2e7ab25e492f90a1901d7d3982b678217d4b248066c6d8e7a97af0aa93d04300eb0fc0be23a5db41b1c5"
"62efc21c6057c57cd723894d9735d3a651240c6c30e7afc2be2192081c4622ff1d7390e81182642a4d532dda34e2"
"ed45994ce50e1524ce",
"15f5a70290975933cbb70f830200fdd876732952577ef9c0bce0293e78c0525a1209eba2531d9c58cb742ecb4555"
"d4c9cb6bbe69c62a0910e633d14351d3b8f0c3c6734ed9adc384c294bc4935d0026fcd50d513750826da12ecb5f4"
"6b7c6595550547b963de030e",
"da44d1dc3de8523cb2dc0b3d5012f0920ef4665fb676bd4ff66fd6662db058ea" },
{ "c4de2cc53d61339da13f360f88ae40b1895067680a7a9d28b3d281bb2a7d2f34",
"29428c6b06edddd68e8f4973fc2a698fc49c71230bb97da4fbcdafb7f945c9de",
"e9d1f0438a405d57816cf8eb37d3bbada217837db578d7c8e26355ecffc3b497732a54ae509fe8402f30239dca95"
"9b0aa7bd436f23c31e2b9cec889f3bc82d4ad2d4af9c6f978a14b1a8dd325d8976368af2d3f04b83ee343a0bea47"
"0bf8d56913986121402a49ed4a68c6526cb53d41ac",
"74",
"f1bc93dc853b7989e79d34615742488c52221d9d277560406fae0dca1a086ec09ae034a37424556922cd6661bb01"
"a389aa00823fe3e2fb84e9811a078bdcbb4da5e949fefd45988131846259c64b45b279b7cce15ad2b1ba0b52db1d"
"e7d39b07458bba7b26a4a4081fa3b0b6aa53b73d6d",
"ff4527b7c136c8c92b151e0658ff456262fe74a07747f9437445d9336919939a" },
{ "0d0b70db983f4afeac46cb5e042ca51a6a85cdc500f2dfb2f97282d2f96d3235",
"a1280a20ba18cf8977c63450318ff1f6c4303b20c111fc733212e37e11cbd38e",
"d9db68a084a6aaacdbfa1cfd7ab1f9b4fde06f18ff093d9f5a04afb9f1a23a573125906fbe126e8fc0f51e65465a"
"09c1167bb6fbb623f311fe07f564ad4216a01b597d4d756acfc736b905a26dcbad3c6aae8bb7043039d06561ff59"
"7924d623767105024c170113b6",
"0a9d9525935e346ede23c3eee268c24f1070959d392d1aa1c4234cc19cce7807c477ac8e9062ff302015952aa910"
"6de9db40c8d20e022f3617",
"2f517ff86b32f3841fd9cfd34fbbf2bfb77b190dd2bdb74f438914d95809d52d20f07af6fa7a03913a517a6cf3dc"
"591045eb4fd7fa0b55d80ca54d48ee85d56841fd44db7585e5d0ad8f27264751157be2190b85f224623a40c4c821"
"cc8c7c680c548204e7f742d749",
"054df03cbd4f45572ecee0a8fe80b37eeca1f17881bd12c42ad6575a5ef304c5" },
{ "8011b1043674d753172302aa123478a121640daf4317957545749d0be6a91698",
"57bd1ac0f3db407989f88a762f60b3eabd03d3bc3bae577f3818b15c0974ae9c",
"be1833fd169fd745acaa7d8584c457657433e6a3237225a086d47806804120613d78344e097ecc6a5f869d07",
"",
"e34dff511e16bf12570a6828843c414b8fdced120db36ea0223e8700f57bea4c9dfbec5d3195caa633d52ee8",
"0ac3f0459608a7f38b5b77c3f38c73f9ebc48253b316830b9583bcd51ba5c995" },
{ "d4af433d4d7598a8bf02f3e34ba9014a85f92e7ff946d51ea7fa9a4f5cab09dc",
"4fa45413eca04bccc3c732e18fc6442646e5d809afc00e1e749a8b8f84d6926c",
"b867dea7593a03b7b7762052e58b18483163c0828f5ebecb8cbbe4d55c7f1a4ceadf55f4c3a979e619763377cfba"
"4f88e9e692c2794ee862b2aed63902879e11c5ee167ea4fc266a4556fbb54357ad243f92418a1d13c987f5b260e"
"d",
"ee4ff169ca",
"e2e12b2510c72d2d59ad8bf30235d14f3e85824e19b09f4e84eed629325b5a5368178dc94dac13b9aa262f12592f"
"8748bbed8581dad74895fe73dac4cc3a5f17ba480903ab86d349d68cfa0e4dcedea3321ffe1023b092cc77853a0"
"7",
"07a59bb7b8f5805195197a01bf6f628c689024dd64218f0a2a9b77aa5cd6b357" },
{ "2eb12f163119cd1262e0dbb26338486bc75c183026cbc71bed601f6cde324bb7",
"c59654bef68ff95760ce8fdd39f480a3655c650647d00e49620b9938f917535d",
"9cf103fd377ee14f1fd775530b5153eb31789755382697aef6008f59b0404bcf3fe34509835308cfac8cfed2678f"
"523815615423831317ad7770ef74145db7a72ca9462ecd50d7b19a0d50e894bdadbb0f63d6624c80c85836bfabf4"
"4359f700fe04b5e6bf1db1b4ded24fe9054e7318",
"a3fb893a7baf646371e92f3c34c6700e6a9306bd7e905a25be4bd7d6239416ca94a1a31b59068729",
"22139c2d9bedf4a0535c22de56fe441df6752a692a99c10c186b439fde9954e815d6e81d0bfa0a7c3caf60808343"
"3e9b8d32321392f41ae03e5b67cd7801362c371223a98989b00c79fb42d4b25cc222ef6a4fe415654030e67ec506"
"44bbc93fe83c20e1a30259a14ae1ec82ac4759d8",
"83b054697569ad69e55ee1b1491b9353255c4cef4c0f31a0db8090b7dd06ce0b" },
{ "553928dbf68b2dfdacd75bacda2cbb4fb33d81f55731f8ac6615631ed4169784",
"92e86bd57fafd57c88a090397a72f7af5967fb623eec8892b358abd1665f88ac",
"b305ac06529bc8483fdc6d765a535ccbc8125a27b8d72fa2450053ad4be45beede300f87e035a05538b3",
"1f80c2c7694a35f5653ab2fc2cc93614d959f2136bd4cf2918d2a20d6440e8ae73a652e08b7987d1df8c",
"4885419082270c83c03f5d4869adc63cd2f940bf527e8474c7c61a748fc883b74e5ffbd8b0cd3e780a92",
"ef4b2bbe41b9c4e58e207fe9fdbb0e9aed224989d9b9a77e78003b1c2fd7bc31" },
{ "4d6ffdfc693ab2d94d760163bb9b31728a2762c26236f04859b7b31b98c0e159",
"e412d9b3b1b40c740ce56cdc0bec430c0ba4f95f5d83124244cebae8295b31c5",
"ff03d03191d459d57a628a8d69d398214699bf88c2ce8694e2dcbe6d9c987056a50319ef387363b6266fb8d3e15a"
"fe3b2eeb964800799c0686c3d6f0b27d9523592690ba7d765e9a21d62e113788076267cb50193d64b43156b3683e"
"7ab0758e",
"78c96946f355a8153659dd06b41b75b8109b0c31c0d6ff2feb90c875a3b211f01061f73a88a9d42550c807676dd3"
"a405516da1d2639395cb4df526e046d621ec997c1c4fc858b60ff9051f2ee093fc8f032f367bf25b3f32361d8aec"
"5c0e239dbb129316411e96da198d6fb512",
"4c3083ed17c2de0981fcfd38bc244c6e6d0756fa3c23b22fe770c0c952159b6e112c6f4b6686aef4bbd0be98bcb2"
"c32c44af09425f70cbe031d08798ef258a820dcd3029d2b0a857615a939e2a008ef14b949f5bd4ccb4607c8a8a4f"
"c5f1236e",
"bfa101aea1676baa3b5205d45b572425ef7da415984796d2b76f01fe5e37e919" },
{ "c9bde00bad3334e5792b5c1e5a8fda8ea7f7eed152c0a3feceb565208017af73",
"2ee41bb5c473206ec00ec597548161573e8c2adf7387f88e4fcf64c84a2f5905",
"b7dac21337a4029b80ae0ce7578eb0eb45c76eb84d68c4dde73690162b377118237fd1f466ce1d7d7638945779e0"
"b148047c61b63c7e05c877f75f4a52865efe94fb65ee99e4b0d79242c69c3aad1c425d017a71eb26adc2594a6a52"
"16eb72b736f40a91001b13c91d13d5b057ff05ea883ccff3eb6033679b7b41a62f",
"26b1dbda8f99f9492955fab6891c3de81e4535ed525fdc6d98beebef67067fefb1674359525cacb2119d016876fe"
"b5dd",
"6249b44800c9d47ca20cfc1726563befbedf20639735d441917f52cbcc7ef72d5b095c6a15a7bf1239f8b93a62d9"
"bd5e7f47b05ab9f12b4da72392ab4ba093de150fb8b7b61ea92e6a3204b178e2e1c066102ea9aea6241749ebdfba"
"4b307ab0a5471d1d43fc930dc29a1ed5e687d41883c69d0de38ffdd25ce4d8ea33",
"53bf7cee58474076330dc64d1eeff748df909700dd942d8d59da2447b9f84fec" },
{ "6466a65e9fe920b026739645b446cafb70919a5d03a7e890537bf88c620c5bdf",
"db812442fcc36f2deb4b04a9c32354579abd8a57c185654dc8ce5af21f5e5463",
"39917090786a9532f0700bbdd94d960491d89b68b2b9b1425ef8db67b735ff08d73cb171d911eb94eda3354e252b"
"ee238408ced860a8c1657fdf8c9afea4f4bd041173ae22f236c238d38e469c89b2b2bc73d3ec88cda37530362939"
"34732295e29dda",
"34c8b124c1e26a893aeee4b228214ce840cd9e49f1ab7bbfbb4d90c808215be99c9da5d0d426d5933f6aaf9d1af5"
"78c1a6f2b56e6b4c2ef41f6fa67e7f2693f36b3e21223a5428a8a24d2db24d",
"e1d4206c53b1072c317a494b43323a65d4f17afd6f02f865d94c425f80153add9d611175e9f0bb45c51d7f469272"
"10bfeafdcbf29cf3e1de3c01f4fc3fa94848af52293e3f48be11d1efa5d6e2aefb62385c97ab1dc7aaa96bd0210b"
"af8a7c732386b8",
"bb406b111937304d1ede67719247747cb082efa5e8743364b763ef0e9af1059b" },
{ "be69e13f684ade9206fc567da10871fa4bface67e86e23b9bab7da87f5c2f39c",
"d8b143fd6fe42e1ddf4460592c2c3239e2dd97bad39066b86d121b658395bdce",
"4f7c016b4ad5d4822e125851ea3cff387ed83933c6e20965225c34e5da784ba36585e38293c6508eca322e9a9bfb"
"21b3d5b5b0866c2d32b850072abfebf5417f9cf7c1b3e995338b99cab418b9812863c051fd03131c82b999bfa107"
"bb987a83528931e75a5f4ca0de75f0",
"0d32bb65ce4936e3c9eed5cea33bec6cdc7c4e105c132a2dd663bb2cb0fa2ca62fa1fd55ee46ba39853c04655a84"
"fcb4eec40e5a810e8ecc01063420cae63259ed33cb3fac23b343cbfaa7d9bb30ea45f824d0eaff4d836845baf675"
"6564c66e3aef9457baa1c70e3a9b6cf4",
"4cb6bb6308675a9a03f72d1fbf1d2b7b092bb4743e6f8e6d4f8bc176e1778eb226efd8b33a14c3bf0a554d7cd648"
"80dff4adf7fe622d8b2a51d5a3becc06f77046eb98f6f8b7e4c9a9cbf24eb7a384f87912146662a065f22b984e9f"
"11bbba929183d4152c2dd607f87714",
"c06e27543c2dad50440824ab41013fa2fb34bc1c47222e5a157fe2a8d8324c18" },
{ "e365b446bd38e82eec6f10ef0ab21ee388ad485f08935ab5b27d812c77c8c2eb",
"b5d1efebc38b831ef46617bfc282e47e20a844c326c35981b0af5e97cf151cef",
"a04e8c9a01dcc73001fc6a53", "c6064f3f164594ab4bfe65c76c753d81e110a255d3cd9e512c3ef38d54",
"bca8a253d89f09d92b364671",
"4ef59bdf41cb393aada19b052ed31e568855c6edb37d286078ea3c8b8969061b" },
{ "f6c8e88d9e0da3770d3499977a5b9f9d071731244c6b0ccac921261ca799c4ca",
"de6b3d103cf9efc4cb7d60dd3458e7c5a348692ab63a87c8ff611a336f0bf63b",
"5eda6f7400227d5f0c4f8910c621dcd6ef0c4f9d2d9fb3feab68b3b162fc3db362acfb61c55b06febf04546a3bb0"
"02dd6f3b9e2f531cafb7a6b1d31c29483526b2958eddbc9f2eab5717e1",
"0dff4615b2084f8e01dce6ecf3edfc785f1cc51361f32f29b7e5c49c82f9666454f2143b9fffaac5ad9ef9fc0aab"
"e91245cc050d5e21dd3d31bb508072d8a23d3e289aede9e95bef1bc8c8dd6d1401409234237f7e4df6db44cf9290"
"ebca5ee8a69768eb6dc29dcc5aabde",
"50c1b3be72fed8b6feeeeac72b999bf7f24bec747d30dee62f91753e7a26fdb4666cbea2f437232e57edb331ef32"
"7119b8b41572e8a6198fd4377e6657520d6e833fac4b2b2b1ea4c01923",
"342804e54894f812c0879615dd7d4b8959d36f00b03c3e183148ebba41d34d88" },
{ "c9268f6053542789747187da6140b7566024b623dc9691a534bd730764b20a63",
"b0cd1ad38a01130f0b312be85a9dd570937c0fa1050ec7c3aa31befc400b8283", "60bf644abf31501722",
"3091f60cfb9fa8946e8a06b1a663e60b54a24f2e5f8eb5282d980a21878c794efaa2f6f699300e3facc64197c5",
"a3bdd452eecc7c431d", "32d6f160b3c802fc4a92344f6edd6bd47cc83630ac76b3f7d2d8ea38bf1d8886" },
{ "491c6c8be1926521f6abfdaff5f95c5fc6ee07a800fffb4715e36c5de167e8f3",
"747cf6c78d7462846364b00f21a26b18c49d7bc3878f478af38a7dedf86c9ab1",
"9ca6b63dce33c54e7122ef72a5bec5552b1cd8099596ed8917ff694390e970248f1ef672e985121c",
"3d545120992929ab79fbe41da239705bbd20ab461daeb3f13b74069b0797b02699abe360382669e6752564f6525c"
"349b0bf6a8833445d14ad99d2cfa1212e20874603760682769ec1abdf33186de04d33621d8",
"f5a2cf25a6e22b71786ebf2adeb78d0675d08711b0cc9f1bbc6b065f056f1948570ebf4dc8df1574",
"8c7250ec14c5e10239d1d8d275059a09dce220b496a4869f82718258f52d004f" },
{ "512cb5bfea47aa81a414e0e9c866daa1f2f7d7562a9ff7616ca182642695e9c2",
"39f87cc65699610a3a5b84abaf4d8333e1f83f640b7673ba630d53eb608f3c57",
"371b10a048dc329eadda98b1ab87a8fbcf817eac1fc0a40f5a8c3e34e1b735dd4bf2f185964a",
"96fdeb760af9a39b819676fbd7cf6e025de97d9a735012b0fc2aaf2f845b4d76e97220920b7beb1b7f920e0795cd"
"e96ff923865a5eec1a08fd88c837b2ac0b38e860b1ac5d5054e46c6538fd916f46e8bb17751cf152a3dd531762a8"
"abbafe38198dfbd35ce232ec1927b8f47d1833db9bdebf6f7d92eb029056835ae0",
"dfa26829a13b2383e59180b896920d0a8dc02d11ab91fcea5e004416517cbb465f951447237b",
"7325d446ad6af8023893386201dc1a8c7b3d603d13241a5bbc33f6248d42cd48" },
{ "f2ffec87944d3061075de87038cfed1797276d8c6857433c9458677f67e090b8",
"7aef11906a27ec49ace7193bf61183e4c67835c9c26b50381c7ec18b81e4bac4",
"1460c5acbb61d26d0af31b565d3696e50d6dc022c528f11569dde0ad691b32fb20538236028d51b98d441ba5ef52"
"7ace9a59ee9784c9ff14e8a1d03b2450bb75aba2a91ddf1827c14ef131",
"d95e3d49c922e70c4c34edbde880239eec5bad1c13158a07d6a13462a8978158cadb13ee5f2cc95a21673b6ce25d"
"7c30f0c8acdfa55c259c6d03a4b25d22fa65",
"bfb8d129ab8a3898eb71aa46e2d976c44d790803420ce1b6c77c399ac19842b1486339571b82d84a0461a946664a"
"68e6387b4bec56ee0acc08bec0100175d670ebdb6a9c36fcd13126762a",
"2956d57d9089e44a5c34400b411210dd35c261a9354f6ef1d07235224f2f3b85" },
{ "5c2b46c8c5e5a4661c26ad19be10a781cb845c824a403a6bb708c738e90d9c46",
"b80e79dc4b26bb75d284f0346697816efd98b0412549d4ab09e5453b14a1362f",
"ead1a7d4f2a4d5d5a979e16cdbd32005a5b5506968e18d68a598ba5c0fe2863839ecb029450b0b2d0966558a890c"
"af2b2c5ee750be7784f583b6d3e0bed0cb5d4fa6f7fd098dbe05ba8416c400faf2034c3074dc1ef7d7ee63ea1cfe"
"d18526d394c445848a959fee",
"9aa44ce6a70328ac8455e5648a34176e",
"09633b3761e956bca7602b876d9b5429e64e56c2b39ee00484ce92ffa7395751cfd43f6c46ac3b0552fbc2280404"
"df446cdd8632a41fc7989c4d603b3f6b7efbd075aaceeb3e01bbe60ef88b696ac22f41fec3d7b65b35c0c45d8bfb"
"0cc99d80316b913968089e28",
"2e1954215e5487ac78177f851a580067ff75de270b664e962240f38a42f67150" },
{ "05fead6fb5a0f2be62533e0a29377010bac0a25c753155d56de340a094e7c426",
"aa6663a20646cdcc620fcf23c31deac51ef80b68bc8c5df1f91197066763eb39",
"5e9162142770449251a541fcb7798ee6a59ef56c518a96742b4186f3d27e3a8ef9855dd5c0c586cf957725726a5d"
"9518919c54b07b87630c8f5079b49aa656d03b0a10ae7aa498c1eaf4bf0660ff999c8080524843ff8a8137d95921"
"b8425ff6a3cbac4f52c198f9932af067ef734ca00b682f6ad0ef0e",
"08fffcc594bc5d08a1f6473b604289aa885d9b199c2acbc56493cbd740a5127ed1e218a719076a310301954e54f3"
"8b682eb9f50cb05d2335e7d82bb88487f333",
"211957354e5bd50bc25009e2cdb0adbad870d25aa02c3759bebb29ea2de74afd194aa82edf530086b07569588e5f"
"bc3618f762712d63844c8177d7d24b2d9d5f6be5ff98cf7ea678ac7022a15c17430c20213ef276284ceb7f35e00f"
"2b33a124a88d9aa6ca5eb37afa4076b051f94e2c2018cd90bfb499",
"79edf8d61edd0c8d23e2337c3cc7db00a622215540796800dd4c01be03958587" },
{ "96cfab5f246dfcf8b33a9e80fb15f90a089a9078dabacbe767082da806cb4fc9",
"6a0ad0d16594d33730b03a7b40b86581fda3661264ea17f3a4327160a30f181d",
"61b0d79387c11ac4a87c37a9b3", "a62d02eac118d047cae4ebd58ce97a7c99ed90f4a4bee9a442",
"d0762aa4c8d20934e91a999ca5",
"c0dc96d5ad1cdff9445e163c0df739880bb4dd741f4ca70eef655b213b53773e" },
{ "4206ea8a06c8fdfa6aa47e76e317c3108169d142f6de50927345a2825767a7db",
"b9c7d7ce4503a4ca01b8762ff383f0c13c240d0c9ad691cabb61a73fb1ea7dd0",
"0915f9ff74e3b4cc4d9faedd463176e8b4d259aca80b64fedb9427394fc5950d1db2ee8a57",
"4b283f58f0938a62ba97144ac872b231bd93c8bc14c7bbe22f993598544d90991d713e289cc3",
"963202b6d18e7742621ccdefd04ba47457aa639ec78ea6ebc277d062117fcb7f7efbe926e7",
"33d965ed6fff8369f9e2173f784c19795ba93776e9de83fe0292830c0ad52dc5" },
{ "7729253efc6935859e8e7cbb15850aeb37e0e3fbc017754c9583d7b4353d37f6",
"8b66e8adf9bdc7907e2127485410c30bd8488901d0c75857b35c087eb9e21d18",
"ea7d864e9e1b537c409601fa7b35ed10e66b71ad6a81aae70ab07cc69123a459b9020034dd165a46035ce9ab29e7"
"01d3622a76947e7adbf6c6fecfb4316f35e24fb01a5f46cf57",
"a3788e4450cd6edc283dc66866a7d03b1250b8868364bdfa6017cd9a518046304c4e46f5203e547fbf9c5f416429"
"41b198ea1f640ae2f6431caf544fff17a09fb288904fc3f1686c496f7c3dd47f9fe013a9",
"01a5877237bc6b94f0597df25ff9482976a5ff545dd26759efa03b10280d5f9a058c7bb1c230be66977d463df1ae"
"3ddc3d7ab02c10313320b5dab74a22dc0a6d9158cd3900a184",
"7539465a447f836c3d2e6abfc53a8d9af7914d2fcb738735d64051f8f14d59c0" },
{ "d0c627cef866ebdab7a8030be47a9aae4e97311a3a1896de7971c78feba16dfa",
"505b133a1f82a9eb4c57c485d139197fd3e59dbb07b9c8a02a32438f6502fd90",
"206f537aac47c77eff924a9b3e74ea85623945e1c24490",
"636238aea904adc5f4582d48a00357c4aa57ff1f822fdbf49cadf780f5e346f0153d8ecd353073517fe4f080",
"c44ce4e69f32651596fc5fec1f9f59cfa62c7a44f7281f",
"36d1db8dfadc687ed88ccedc2796b8aa76337ed49e999091186659586295b6a8" },
{ "e13e72cd7f25a23b4f605050771ce73980ac37ea3c2104a17a6dccfae70b795f",
"3720f810b9d2fc0c01abe11477689b78ba6515488483b747fdf66f243f2bb387",
"f2468d65f0c10f82d7989e84b500178f011bc98c199f0bc299c882644373f554ef4a6eb8ff008bf005aa8b40da2"
"1",
"1041f65b724df64dd279659ade61cddf90672f490453aed4f019dd86fe5eee3c15c359b01d0f91a34a67bb67b4ac"
"f51e229ada29499a0503fcb6eff20be9f59b4ff57b73e173dcb1faddbb111e645149321883c02b7f2ec265009e1e"
"8331905cef72a24111fd80de344b420b51e4daa88e6b3b054dd96f4536f5",
"79e9eb1f7879d2c2b27e52f3f00fa7c0e813da9bd741f1a3955ea9de04703a8624f6b7b91b0d720c95432bb57fd"
"a",
"4071822c3d3d92142be2437266fba4701e5c28cab4c11e3ac32d245351b66135" },
{ "1caf2693aa463ae93d13f6b687d7a19fdf047c30d054c2fdb5e07e88b5ab5a08",
"86603e8c83f17abf6af5d8571e4f78955440c1aa97bb6a6e146d787fcc1d4e50",
"ea9eddcc4ac951c60afae654d012b307f21c823da4ca44b3276c7f7006ce82c07d8caefa665636d6f5031e31bc7"
"7",
"cfbaf3cac9237f19986571ec0e39ed09b1a5107cfde57bea24b3f5dba56bb7db7459c4fa82ade76f63ec59e9400f"
"4f51188734811bb563131f49c2e2d71841334b596a63470b2dfe3a421cc657129b449628e5c1ce39a57ff07f2130"
"643a725637014eeba27ff95146a99a06e2584cb9bb3f12",
"de9912a8bec65989ba4c82daaeebb14aa21246bdcd52d01ae5d4e1aa3d70a12277651c75d62569349e0e4cebd80"
"b",
"7af7d1875ed73bf8db71707992f07ffb5fcaa82f5a821c0d3a9000443db1bc45" },
{ "cb1a72f1752672a7fc0ccaf10c76257c047fb767f42c3f23cabc78d35a8cae4d",
"a48db1fa02317b85f1787ed869f1b13250d7f582304594fdf4a2899d50e22c3f",
"25f09554ecaab85e2d00c6e76e31222a9ac91b79fe9eccadb6fd38bdb948502849ea5ed30470d0d94335a64fbfe0"
"d01f5a5b6afb95a40c5406c43e022520c2c727d53f66846e35fa3fedb4c7efa44a16",
"72c88fc1764d922dcc6f3a61e444213e6f7877ef585c65a57ab9814813c9ae73b5a4619b316a6cec5e34241ed2f3"
"cc530d105de4e5ca356ad66cb95f2aef4cedff42a0522f5f7d9d7a9f2fa54901e914a5b733791ef5236b78d06533"
"5477a5eac9d626da94b36a76c3f702",
"ca4afd213fa1a13a18e6ec57488012451cb648902e367edf72902944422f3dddbfd4946f5b34292c39ddd84e5c76"
"91afa22f359cec4dd14afd210a5df66a5799aea2bb57c17f29fcf9c3aeb9c528c260",
"21ac240f5e13978f67a5a233e6ecadc5e555fa3c5637d29661ed9196556b231e" },
{ "34eeeed632897724c59cc20d82ec745af1a6b43665ac88290c11b9baeda6b80a",
"562c76d4ff6201116aa3ba82056b43d8106565553efa4f65be2776ec7346156c",
"485560e1c34a3f1068a77cfd144054f1add7ac802d013adf462fa1e112fef5ca2ee8b48c1a37f1d62c06",
"26f75dda69bd27835c891b9d556fb7312ed524c8f4fed9029ad963eae7a43f85a6dec0146b919e195bcbcf7eeac0"
"09ac5aac9ec784175e0d18a25693",
"4a7861fc50e5c17910876b4cc45b1249ca8b8ed3940e82f5f6bf6e0a161263c66005ce91edd32f876c4c",
"72b792ed7d8e1d5c044c452daab093029c63881044bfa97a819204f8fd87c499" },
{ "ffae6a920ea2fc5baea3c3278f8cbba1f1ab3f07f2499cc87eeb3df3858d67d4",
"81a53e4c40e507e2071b7f9464914a273065ec7f24c5e6e5d0bb77f6fce20b76",
"484672fe6dbd8223fa1cc097886e9b73e971a6120b9f909dec308cf1df8d02181216b35ca756025dc50f6bfe3d19"
"2cc5531ad9bb4dccbc1687afc507539b5fd6259c80f55fb55cee1708485f78d013a03851e4e6ce28c0",
"8bb27c47b62c7048b6117e0c631313d2e165c277742a2a1cdddd",
"8027f08446e70cb72e52679809488940fe1965ec18bf1c56882cc412e41f7727efc55acd6c2b996b5fac79bf13bf"
"ddc7e03b3900f57589215a37ff34241329ca7b5da9ee238ed7fdaf5b1bbbb172e040d1dccc6acbd8ae",
"d25734872533b137110dec26861bcb77fe062c0c41775a2a05ccb86365bcac09" },
{ "57f2386e011a547a48e5c8c170bdc2758e246d4fdb4b5f90f06945efb6bf6c9e",
"8647b48a6ac27f0b6b68f09d9a264963b0b62c8cc8b454ccef9c503e6d568b33",
"523120a8a391e743e7e2d60fa509345da8145db83631881bcf21c0c56b47990966ee08a36b361d2660268bfebaa2"
"2d4f5a8584c1c04a27693adfef76e910eeac0454c4c1aa3b",
"e7b43a9582ba177e97df8725092ae30620a9066c1cdfa627dda1042f5a325a46496c4b200baff0e0709c52ed0ed8"
"2ab11af1efec1e05d044f50d25a38eaf6da2fc2709e609df95f2dc6500d30caca60e421a169ac0f1f69b1d774f37"
"5b942edfc4151e0c78",
"a032008e9601e05f87694a001918c0389b66d13ea514f4c2d5c891591856a3e45472f74b14c409376060ecd90de7"
"b700b0048cd84bac232f5211768e4185086d7992103be87e",
"ce7174bc583746a5183676f5af292df91213a864bae6e6783cc51543cd18e80c" },
{ "29f1e4ad600bc24f64d2a99669f7317add8e61d5d3a3dcda1968b398e7ab3a8d",
"15190e8300313a59c0c6c4dcb0358cc88f7e856240091f1b1bc599a2ff3aca00",
"b01d68b18df703fa9d166efd6aa3ac15fd48dc99f4ac806194f0f500be971560b3135ae422095a",
"cf90cd99d137d5bb0203c0a97f5d4842f4c0ad975df8a5dd863269b37e94fbcd941f220736ea4987e9cfb73b17c9"
"39be601c40daa99133b9a0f98bdc4e4b77bc47d307354119a2fab2771285048a273aa859f99a4ceb6bcf5bae19d7"
"b9d766529d53e29a384304af8de07e",
"321523038cedbe3da195d701835cf62941e6260c3c4ce5466e1fe14b36bccfc0bfcf4955f1f061",
"75b72ea023300ea4fd27926d097e49d4955c6dd6747ea38d2c33bb21ca61e168" },
{ "4600adc836738547a6e1fb257d6a7c290d4895dcbff2e071dc38bac04f338a30",
"ab2f8f6a728f1bab52541407027c51a1619c1db32985120f5ab40cef22e08edd", "f8cbb1362eab78f7",
"7adb0527d13748950fc60a8f6879ec1116c73817e343958965359c8f7f7465b26fe5da1f43112465be72751de684"
"600456e97856aee757161f6157dafac3",
"26baa1fd39aa3c33", "147f674a8345d803d23714b057bf8c030ffb002b6f9dac1a1a7d7582dd89b746" },
{ "01f560d41c4dcdb3906e687c5fe23c070b9a8a9653987706f3357037d7d512d2",
"a47633929b3fbfafd2c29d25ab1e8e3b6402aeecff25d60761355ef44ace4cb0",
"6e085d40606a8042e71fc16b720cec34e47d9bd5e0676f74b6be17f7c78b53ab910980ed7b0622c248006c0ff9e9"
"4b66b8944acfe6857f3241d0abdd8d70a4a81eb0c0a86dde53849e34643b9f37e173ed218d88bea948a240",
"d7631a8eea17f31555b3d4abf16439f763501827180a1f5e58389f796f1c0b468f41ea3ff2e1c76cd02d180c9df1"
"e19f6524b2a8d006f2f954f340a2f0a5a97946d39c34b935f5da5b081f18ecf457b6f0b33a37185ea8af64aa0ade"
"40026580dafe1a5dfd2c4a7acfa8a8254897c7fd3b",
"c309272b71ffd6ee1ed80b91ad22fe88d0488fa7c2dc4539f3452d6d6d1508c162bb8df3ec1fa5ebbd8ab738387d"
"5b0e649cfd83e17b3e943ccedf4548171c82cb8f0b2ae39c48d78df07e282cc40c3068dc70f1fc080114c1",
"786061e81d76bc07550cab11bc1ba1765b41e2967bc8736e11029968cbd85ba4" },
{ "c440e9504cfb4544932adc72ff5fc1b657ba0aae703b1bff33805b7f9b81412d",
"df08a05337a532382953728ef1e921b772d435803e671a02e9cdba82522714a1",
"9dfa0945de0d4c2cb76aa55f8b55761911163b87993db7964760dc5e807f003b6875f74eb34cc160942f580bfba4"
"d96d967d50b1b20b0643ae1a2c73691b6bfb64403350272686fc8bb3a8e3a5674761c2204ca240e37005",
"0c9f5ad3e58b9bf021e09b83564c8d74b1b2bf7c8cba0dc8177084a4e1a07bb84c30c3566103f538",
"279ac5eb9bf6e01cd50a0eda161658f331226f4c8d43fdb793ae07f353e6fc2f2821a01a02be62f515af80633215"
"a908aad8e5199c4ff23a38277ff8f16f15058d69fca995718c0d837b6db3bbb5842dd21c07ca35b21bd4",
"16f09ea8657c053e907bdf8f822936f2cac056af25e0240633c80ae0baf7ade2" },
{ "ca81440758e13fe0b847ea81be8037b1be4cf995f805d4f40c1f421c9864ab9d",
"aed156910fd8af6af094c74c0ca0fba932b436bc282e0c5c910ffd3651777117", "fd83897f98974ac8",
"64ff6ab0506574c5020e14c45a009192a7a17ffbf6761393e17a86aaf339264a5c72e9e2b7fd22832a999076dbd4"
"9c75145228ba6d36b0372042e22435f34577a2c3e1c89e2e1846dbc393d57064f016d0487d591fc6b7f8499701f8"
"2568182041929386c821b74a53232dd596b300a13fa09949939967e58b2c0cf2de5b8b",
"cc1913d2e48750a0", "59db1143754b19f380fb1d1b9296fa992b7c2f5adc56f451349d1ff95cd2a1d9" },
{ "a657ee84d894bb98db137d57121d149eee96447353225f701b4c0c8bfc5d9497",
"1edcd529feb85cd69e484c0989a9b60776437dd4dcf988e3bfcce5bead13f331",
"4fd8a593ef021f81603e430e0c9eef2fa2e7cab56d86b13a9ecfee70fb96a7bb0cdc7b23df061ff73b96a289faf0"
"c0756f0c2e4692489e58391eae3574539f40189fb8735735deda0c8d71ff361155a0d3a574b193a31746f0272001"
"fbe8f840dbb4f16f522c90096ae5d76209af6eb2e423109d2bf0",
"fd167c49f8e588d06df1ac5d94d61538e399d0c531aa0ac0f9a1c030dbd3e8b649796917f4f8f8078b104352b156"
"4a042ccffd30c19340e067d4f17b0bacc47e121a8808d06b1ea6bcc06ffbc1bdaed0999dca79212c8df6ec",
"99f8a75bbaef042167ebfb927e6ff5bdc23e3a2084e539780ffbdc20d9be6d21e761381f23937f3179aeff80469b"
"a65b8d2169c5695ad2dc64e39d165eb7e57ded4ab07182ca59e516b41dc463c2093425d9dcf6a377312e4437d441"
"6d063324d24945f86c57a060cdb4c182fb3c9094e6c43af38a8d",
"977af18c47b4e1bf3f6ee45ae865d3e3dd6ebc953c4ee636c3e560beb433c5d6" },
{ "0cb4ac9b372daf29e69a698a434c67bf822f88eabe81c2fbd1869b151bec66ad",
"b34c3f1d39ac43e9a10ed22019b858a679fc4c629b7554e4b205ec3f31d601d7",
"40da148ae0cd9eb7d108fe5b04664e6369ac4f24465737a33f2a16164e67a84a403a66ea3f4166b4304f",
"1559e36d745dd40b60d8006bfa6ad62f9f1a8a7992de66bbc71d8ddf18fd68ce01e7910a972a028334f686c3b214"
"d725d3606eb3b762d69fb1460b95e949a724d09977c41b13fb094e16e186ddd429515e939e641cc38e5f6c492f3c"
"f7495cbe2b474c48f1890e214edfb8580d1de07855084d69ae241b421ae6",
"e2c7a3fcd1d66a1f71301dfcfc459ad8c3485f2586a4594a02e46d35dbc4e637e9562cee2e317adc7120",
"feae706283fea438eaa7c20641bb8446e9695cd9a0292f99b3b3ed4609a28dee" },
{ "b38e1805f202898c64975134d2369d065b808ca28ac8562bef3dd97b96650b3c",
"1bd55d1c60a6f84094c52906fb2f711aacb93831fee6dc27fb6a746f4c412012",
"d4817734cb56d6bd3321c7a3dc4e23d5481703d72075ae6127f1f366a0624bc1e2ac175db9ee2fe4a9c0a016d1d9"
"955c652970a05dbb4b16f7d2e7275b9a915bc39df5effea00190b77eeb6fd056cb2951cada1d8ef9c8e9ca0de03d"
"7b2d659c947c9a82ab512641ae734f82",
"1be672d193cec78c85db5636ebdfe4f087ab5a2fccff0885fb39b60f901e8d6921e4d285b5daa19dac9032d6b03a"
"2a81740ba4ffd833e90a942253e607a800c1ff92",
"5be3df33c976077a603612ee85cfdf388953e958e5ee0c53271058258dbcc1fa8e493e044467fd00229b64337644"
"8e9958dae478e59808839daa20c983159be864a905f97e7e00bf82ac97bfd9d005f3282886b7c1df0b505f75741c"
"518bedea91f800fcb135688940a38022",
"5fe7fac48f68d44c9c8d8be7ac95025fb4bf890650af092d1228c4858a8c1a9f" },
{ "bdeb596ed2056c8a78eb1f33340d2b8b0789cc456d6e8db9bb45516233900e29",
"7096012b1bf4f66f48c1f26ab48d8594d244be86426438993ed1cfad84376c90",
"5f3638865cb87188951620dfbcf77c6da914372635542fca218b74f5808090f8ff72919975744dff1a6693a759da"
"7579ee01c449246e12783546333d9201ddd0e9941acbedc6c1995b09",
"186d83c27e4831ef0c472840230860513d15b0f3df6a27ce2decb7a53c15e38c3b043c8a",
"399b4dbc243c979b481b18a29415fff5065c9da5367679a2bbe60b5864352fa096c65cc51c9d5054844b8f0cdacb"
"c638f8defdc81b7d80a9f5b1fa58201f0c513dbb192ea93a05dda87f",
"7f5644fb9adcbc68a86621c4d6d7b1b32a62cda6ccdbe2d5fa8e708a4de8a3f5" },
{ "42985b7c9c97ec16bba3c36bcf82e93205c35a57428262d9e45a7fd494a9020d",
"be4b2dd3dde2e7a773f7b85f0acb48d65bdbf4d8bfc103eee72697c8834a5058",
"6bfc05bc2457a43f50a7391a2c38627fb0429a446ac684e7552cd54c07b9608f716ceeb50d6bc0563247163213e6"
"2ca2bbb5067dd00b3d884795a11dab0c96e23419ce7779554bf39c50edd6ae225998cf96d1effe70c81d348a938b"
"116fcae5d402f35aa2900673376576",
"a7f9f0d4a1cdeb5abf1d927f6968beab9c6ead6995f484c016",
"985b208c4938d0fd9ac7b653e0d04445fd9666044e79a766c746354cf7c949e8724170dd76245f2af71ac34d379b"
"0be203bcb863f40081564ba161087605a9863f5b39c2c7d0f7876c84b02d9131f5284ce5d837662575efedcbb3b0"
"12053e2c4b15ef4ee0010840552759",
"ac55330373905d10205b0884596166370c6c9c52af6a358bbf09195b3e2f2626" },
{ "50034fdf7205a542055cf377ef546d1fe01ae8c7581806688c04279aeccf76de",
"215de8afdde0916097f91dda6fecbd18c5e65bc685e10488e99a225a5887d92b",
"dcd4b2ef9dd40e50adc8ce3fb674801d650e",
"6f1ce70899b24793fd8ad89784d62ebc43b750faa9bc63fa44e707cb6877dc400dbcb85500a386add1052bbf090c"
"637c8c618428040226209023a0db954ac26824ce40ba5021bb19d1a65ee3e3c4261c9801bd85b9c282753072",
"df3e9901518fa830aaacab9a5635c861aab5",
"b2a32c41c181a42175cd9108135f815663981c51f43af547e7942f77ebdc46aa" },
{ "782358a4bf3258130b1ab345e76184bd37eeff55c6efe7b8489626e5ba01741b",
"3ae5c450b1f426cedd3f5445ee785b6c2718d587f4239053cbad839e7e19f044", "454e",
"bc5971d3c8a7284f6218685581fc0e67572e5f124405136021536da07ec4d443015de3a708e72eaa943f5b5fb8f4"
"85472a3999e95dc3ab7cf72ecba533006681a49f39b5d5768e9ed22e3cfc7d20d3744308a6518d46a0",
"8a75", "d5cf51a52be53fc9b297efd9c0f3421e598143718f7f46fc3dd542f166a65e8f" },
{ "5958a371e26fff28efef8a6e71a0b81b4a14e3cf57ac75d215376e050468806b",
"1293abdd7b6c43483f8caa43836922fb3a92feb4eb1476f4fa5ec4f06a0431f7",
"06544eb4f4baafd8880df8a4e1da38d3111149aef41669b56ae2", "5f6cd8814bf4915f08cbf1",
"e4b718de939d6fbb41e32b57098b08fa16bd39ccc085625d0546",
"d1a48afe22b3c7d28e239f103b93b0a200428f4bb8e80fcb2e5110fd1ed780eb" },
{ "7bdcad0b011743f3dec12c999ac89b28f60e03564cd076fbf0183457846e606b",
"e008a14a3fb5e56e89e02d5fec31b37b3fb6357682bc3db3368f25987f6205c2",
"c2bc1a650114c6d522d2f928c6a65fb6abcca554336dfb70b51f61558a349387b35462bba19c3f8f13488fd4812f"
"9d6d58d04a6ca93e8dad62a5f695a0834dd99f876294",
"18066e9f8cdd274090f075f3047a455ca6be1ec4d1672acb013f328a1d981bece9b9c9f0f38dd25db8523b885b47"
"cfaba4844d5bb3972591bdc2b68062e7fb0e08773506e7851a18fbc6cd29c29358a347ea195a10f5a7d874010909"
"278395f2f9820ee8eb6655602b7b44c6c1642b9c157cc5c1a454e1b18b46",
"bcf887985dc0e45a156b522f02c4b2adbf90a2b30f4a30ee68505df9c61d3857a6216a827c98d1d7df6dc664a526"
"32b61361f4d86ca646c83f690015535b149c545efed3",
"bd2cbde77f6ef4955e956d440226534942f7a41a659eb826647b3a99a57efa87" },
{ "21505992872622190e47da3d4a985ceaf356b35e096429bdff8e4a21fcbeccac",
"8b4ab2427a4177cd205fda2b2b31f8f5ecc5ff591262791f88f54535f3054977",
"1ceea40aba4d9328718e9939eaba25f5b558ed0df855e743cc958506b4d0c5e44d0690b9637bf94a30e861ed9260"
"e254d602be895f173453a7977236846c4687d2b38470f074b07e16e67721646989421cf5081555fa7bef42a83066"
"6e6c2c9b61ba14932210",
"106f5b1fed2f5d3a102733ef6fbb7e190e508e7e8cb73766bf18fa4d50b87d6f83144f9b616dceef6c0b085f09e4"
"27f7f0985a535fd9edf3bc05aa8dbc0db601cb4f90761420164fba50a68c5a87322fecbe28c902b03035e88d499a"
"f758eb2049659f2561ee6c5210579f8c0c",
"1562c0d501518e478b0c5561b32a79bbf5249d0eb8db411190454b4f3a458bfc200f65af91a22eb0fce63c726cb2"
"b51023d294c9a35e0ff842da517d6f91b6126c0ecfccd72cfc35d7ef98f11ebbb4cd071c2eafeda598a5ccf4e09d"
"8cff52ed583d968525a7",
"1dfe935ef87488e515897c850bc899d4a9844d512969802e98be90c0343bc146" },
{ "337bd1641222ad96608b0928eb3e05fee02a6fb1e2f66cb4c9b698d1d96ee39b",
"b532f2e6485513a5b21a6326beded2b3a74bc49c74db3f7a23e440e5bc864e7d",
"9cdf9d6c42cff95ca0bf8d199962f55ce013348fb06d878b10a344ad5a7b2b2981b0e44ddb7dda1f74bcd24f3ff1"
"bb63da249bb02234edf123305759780e45ace82aac7a95adbd1c7e72741e374c82a4524146d13589ef28ee593678"
"9e65724b10406aff6d19d0fee8289033c094bed67df3fd45b0bdd52fccc25492cd335a",
"efa6fdd7e4c161a5cc2eb6d67b14d6d8f16ecd3c52e8c9720709c321de05973b51750a7286120a50b3039e54c4c5"
"e09785f815ddb5eb528b43e972bf4c60e41252",
"4616337212a9b1fb827ad8729cf40a8309330dcc958ac0d5f73c9e57279de69280065e13fd1309153243c1303cf1"
"16227392c9ce4b8ab505a580c06926587378c83f49c30021a1f4038180fedbe90259a9d468c87bdff827da1d01a1"
"23fbd5b091d62d3b17e3ce7f4e83cba4510dc1e41b420c2ffc7544464befe9eb5a898d",
"709914dea13632a2127159bf004a73349efc090a46bfecec911c63679a1540e6" },
{ "88f3c9cd7b2f27295c5defc7ba7071996ae5d558192c1a4788efe8a3bc3559d0",
"d1ec8bbec1bd039825009a00b35522ad81c8de7bbfb698551f880b05319330c6",
"5fc7d4fba7f9018c91533584a5e61be925559d1c8b1270621aaa2f0f51ec69ee7b14628841e2a234f3ed4279e589"
"bc40339928d600f79a051db41699a98a263864ae34909a7c37e9c833c106bc5e996c730879d7b94d18c87741a3e7"
"2bbbd30a5c7a",
"9c",
"efec904dfe14b42ca52b083ca46fc0ab80877b425e8cfbafdbcdf8600bcaa64afa05119ebbdd0f8db82ae71236c2"
"4cac6cc53b9e0ec701f94ae4a9217f9f63ad426394793cebb1f0af7ba4bf0dc8ac621c48e2a435955afc79f095ba"
"518e20bbe360",
"1ed588fb6966a006fccc5f5a6e57949f9389f89c3e346bd8851610a0b159e958" },
{ "db7c3c7c7e5aa8a1c5cd5173bfb0d25958db4038a3d8deb705c102935fea8f21",
"315686635d388d5b2ecf3b12a8450280d92555a6920f6ad3b48ba3b4f8ec5053",
"939b319d85880267f8be72b69d2a22ba2460bbd7ce68cfc9398afce09c4f0005cf510db2aa894dcbf08120f07640"
"255a9464056ec16765521f23d602b5af51cab7133cf01123b3038cd7dc47fdd7801c46fd628de0aa",
"b2da",
"783dbc7d88eb43f69d7330326e58555f58df2e75a019586beb5e4a303a3b3e4439677fd7e00a6826372cb2bc15c2"
"5ab445bb0dfa8aae1f4d9b5d6ded219e69037c161c7fd5911bf08e3179419dbef05d37df75fb19c2",
"b96409a14cdac61218fcc2ece389e570ac6c665856f36d98fa01be4d767b960c" },
{ "cf1f1538739072f57ebf0fa4090a63c72cf8f5bb904effb6051073596ed1dd19",
"41e11d23771626febef2435eaefddf0c93a484ea6c4c7fa0bfd48f93e50b646d",
"a22ba67dac88efd1988863f8991bfc9dbb9dc1a34e3866b0a51e088671971225fed3bc0369b0bccb436249d6fa30"
"e7",
"80d7f1fc70203411f8827cd7eec9888f26e39e055d8fd1c2876e1e252b3b14363f493100f157d8246c29b973a490"
"338dfa0bcb52221d260875a65e22a56f655a55330933b35e2937c53a625a55bf40564fc58f742ecf54aed0536ca3"
"f7c59f6d",
"b3c76b03eb90c78ca281f178f30a92a98ed9966698ceb24f15f6c5ebf2e65ec4880543847005a58006a0829d2d00"
"b3",
"22f4354c7487a2db0c8c2249fe96909ea1cc9a053447b4a83ad396e3b3ec87ca" },
{ "38a7aa902690a3e1b285953e0121eae7304815e12a015fa98cbd227e6f7d73c1",
"f23f9ac01c0b118b684f10031836f7c92e8a70eea0e916dba2952b685ae2c148",
"995580acc337ee1216802b1a45daf0df12280eb94953ac61916d35eee038e5ea1d1f53da1c6a3e17d54dd1555e79"
"c4ac988494f805715f59f2404eee2fdb592fa538928d",
"6b726ca02fa44684e7d92ddb0b6e2f30d6a6e75b537f209d21bf2375718b4092286ea592f3c1750af21b12f64961"
"1370ee4bfac05e0281c9731242c507a56d9d6522c26e172fb406f3e61efbf3c346917988a1dc85c829d51d3954a0"
"825d2ca4d0e2a784c78ea07bfc5973e80fe6b34ccfe72457",
"c73f3832441f59ce54910fd16dca9e2bd59a168ccd658ba3eb87fbb1ba561f63ad73ecf9618481bc6e8c8020c60e"
"8194cc65bdea155f0f6cc79adaf2334c099793efba4a",
"5c52422a24f79990f26224082d375bf81eaf5df242389c894cf89c4d0131d01e" },
{ "aa54db3f1c5e6405d443afcf4a463974448435f4002d64044a21a04c269759b9",
"0711d3a79176e4c75ac8cc1ecdbadd4203a6a4b9eda4c2ef17150f493d645b8b",
"5a80d351e6a2682a6ceeb374acf59de7e7",
"171077e40c0a689d44003bd1ce56c08b81f6fa3c118cf448f5e8b6386328d5e3465132e5bdf4f73e60b1b1e6e021"
"d05f6881fe7ec8be523ae7e6c57dd1b0af6939b79dc785d584400dfb71aabc336817e295a922aa1d46b873ad3863"
"3099ffbecbf43527a1e64f98d82cf85a18",
"5026a9cbdd2239c6a9abd45e36d5b46b14",
"afe7bea6340c227c0f062e73a05e1be4aa63b93d35f2322322d3e855e0ef5887" },
{ "c3dddd6891c6081f6b478a6cf89574636c8905efbc8079ef1924b97036a050ef",
"abc30e2892910e8c3fb83d4cb6f93eea614a7ff03b750e31ad5fc74ab77e0715",
"079db15c3fc075189ca979ae738e72f0e5a35410b0b746d2d92874f58214cedd7e69a5337485ff038a44f18cbb6c"
"9bb02bc396aa128b87e7888011e803fd9f43dd43494dfb2b58981d1f95820be9d37cec3bc4f779861cf59137f764"
"dd88ea41cf044d9a",
"56c59f42c3429832f9f2333099d2c422ea40cf36162b162e6cda56a9",
"6910f3c047011cf301c6d8458ca4d1c40aafc129476a9c89da7b35ced9479edd3c7cbd5c1ae7a8fabff159cce121"
"c170c1e1a884255b08758d640371d26eb031ae92d1deb7091f202bff0698ca059eae8ae572ada217b6d3df5d446a"
"a5aef503eda02f5e",
"f5d285ebf784c68df40ff4324bf79d0808d43f0739d297f4238b833a7cf9c013" },
{ "77716c56b9f0e158530b24ae8bc160f827eb4a11ee3b1bb3fbef3922e41d58c1",
"f340f377c03ffca01829e013ba7a175b158ac51e5ec84e13dcc1a1974e157557",
"2b9b2bf80c7c65d0a2d243cfac9d01ec9a0250b5e985d430f5eed4ca6aa62b31e3f5d4256a9c998fc588c69486ad"
"41618d8b9094468f9e74b6",
"d314a97f25ebbb16aa2d8a444c70474b5733fa18507c544515ac905450507c708868a7c3847705fcc3b7651a72a2"
"15675a24d44aec160c562c1d68f859dcd4b9aa3569595e040ef6",
"a58d41ed071ccfd12e01de4038783e6b23f84f55354dc0368a025cb9ceff0aa01d9e77badba040fdbc5cd984f95f"
"4c6c6ad1151f02b5687ffd",
"f66ee48f6ab2bbdf3ebd292a11c997bfd6f81ef5a9b61f0c9c5f9e77d7fa2624" }
};
static int
tv(void)
{
unsigned char *ad;
unsigned char *ciphertext;
unsigned char *decrypted;
unsigned char *detached_ciphertext;
unsigned char *expected_ciphertext;
unsigned char *key;
unsigned char *message;
unsigned char *mac;
unsigned char *nonce;
char *hex;
unsigned long long found_ciphertext_len;
unsigned long long found_mac_len;
unsigned long long found_message_len;
size_t ad_len;
size_t ciphertext_len;
size_t detached_ciphertext_len;
size_t i = 0U;
size_t message_len;
key = (unsigned char *) sodium_malloc(crypto_aead_aegis256_KEYBYTES);
nonce = (unsigned char *) sodium_malloc(crypto_aead_aegis256_NPUBBYTES);
mac = (unsigned char *) sodium_malloc(crypto_aead_aegis256_ABYTES);
do {
assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aegis256_KEYBYTES);
sodium_hex2bin(key, crypto_aead_aegis256_KEYBYTES, tests[i].key_hex,
strlen(tests[i].key_hex), NULL, NULL, NULL);
assert(strlen(tests[i].nonce_hex) == 2 * crypto_aead_aegis256_NPUBBYTES);
sodium_hex2bin(nonce, crypto_aead_aegis256_NPUBBYTES, tests[i].nonce_hex,
strlen(tests[i].nonce_hex), NULL, NULL, NULL);
message_len = strlen(tests[i].message_hex) / 2;
message = (unsigned char *) sodium_malloc(message_len);
sodium_hex2bin(message, message_len, tests[i].message_hex, strlen(tests[i].message_hex),
NULL, NULL, NULL);
ad_len = strlen(tests[i].ad_hex) / 2;
ad = (unsigned char *) sodium_malloc(ad_len);
sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex), NULL, NULL, NULL);
ciphertext_len = message_len + crypto_aead_aegis256_ABYTES;
detached_ciphertext_len = message_len;
expected_ciphertext = (unsigned char *) sodium_malloc(ciphertext_len);
assert(strlen(tests[i].ciphertext_hex) == 2 * message_len);
sodium_hex2bin(expected_ciphertext, message_len, tests[i].ciphertext_hex,
strlen(tests[i].ciphertext_hex), NULL, NULL, NULL);
assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aegis256_ABYTES);
sodium_hex2bin(expected_ciphertext + message_len, crypto_aead_aegis256_ABYTES,
tests[i].mac_hex, strlen(tests[i].mac_hex), NULL, NULL, NULL);
ciphertext = (unsigned char *) sodium_malloc(ciphertext_len);
detached_ciphertext = (unsigned char *) sodium_malloc(detached_ciphertext_len);
crypto_aead_aegis256_encrypt_detached(detached_ciphertext, mac, &found_mac_len, message,
message_len, ad, ad_len, NULL, nonce, key);
assert(found_mac_len == crypto_aead_aegis256_ABYTES);
if (memcmp(detached_ciphertext, expected_ciphertext, detached_ciphertext_len) != 0 ||
memcmp(mac, expected_ciphertext + message_len, crypto_aead_aegis256_ABYTES) != 0) {
printf("Detached encryption of test vector #%u failed\n", (unsigned int) i);
hex = (char *) sodium_malloc((size_t) ciphertext_len * 2 + 1);
sodium_bin2hex(hex, (size_t) ciphertext_len * 2 + 1, ciphertext, ciphertext_len);
printf("Computed: [%s]\n", hex);
sodium_free(hex);
}
crypto_aead_aegis256_encrypt(ciphertext, &found_ciphertext_len, message, message_len, ad,
ad_len, NULL, nonce, key);
assert((size_t) found_ciphertext_len == ciphertext_len);
if (memcmp(ciphertext, expected_ciphertext, ciphertext_len) != 0) {
printf("Encryption of test vector #%u failed\n", (unsigned int) i);
hex = (char *) sodium_malloc((size_t) found_ciphertext_len * 2 + 1);
sodium_bin2hex(hex, (size_t) found_ciphertext_len * 2 + 1, ciphertext, ciphertext_len);
printf("Computed: [%s]\n", hex);
sodium_free(hex);
}
decrypted = (unsigned char *) sodium_malloc(message_len);
found_message_len = 1;
if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, ciphertext,
randombytes_uniform((uint32_t) ciphertext_len), ad, ad_len,
nonce, key) != -1) {
printf("Verification of test vector #%u after truncation succeeded\n",
(unsigned int) i);
}
if (found_message_len != 0) {
printf("Message length should have been set to zero after a failure\n");
}
if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, guard_page,
randombytes_uniform(crypto_aead_aegis256_ABYTES), ad,
ad_len, nonce, key) != -1) {
printf("Verification of test vector #%u with a truncated tag failed\n",
(unsigned int) i);
}
if (i == 0 && crypto_aead_aegis256_decrypt(NULL, NULL, NULL, ciphertext, ciphertext_len, ad,
ad_len, nonce, key) != 0) {
printf("Verification of test vector #%u's tag failed\n", (unsigned int) i);
}
if (crypto_aead_aegis256_decrypt(decrypted, &found_message_len, NULL, ciphertext,
ciphertext_len, ad, ad_len, nonce, key) != 0) {
printf("Verification of test vector #%u failed\n", (unsigned int) i);
}
assert((size_t) found_message_len == message_len);
if (memcmp(decrypted, message, message_len) != 0) {
printf("Incorrect decryption of test vector #%u\n", (unsigned int) i);
}
memset(decrypted, 0xd0, message_len);
if (crypto_aead_aegis256_decrypt_detached(decrypted, NULL, detached_ciphertext,
detached_ciphertext_len, mac, ad, ad_len, nonce,
key) != 0) {
printf("Detached verification of test vector #%u failed\n", (unsigned int) i);
}
if (memcmp(decrypted, message, message_len) != 0) {
printf("Incorrect decryption of test vector #%u\n", (unsigned int) i);
}
sodium_free(message);
sodium_free(ad);
sodium_free(expected_ciphertext);
sodium_free(ciphertext);
sodium_free(decrypted);
sodium_free(detached_ciphertext);
} while (++i < (sizeof tests) / (sizeof tests[0]));
sodium_free(key);
sodium_free(mac);
sodium_free(nonce);
return 0;
}
int
main(void)
{
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);
assert(crypto_aead_aegis256_abytes() == crypto_aead_aegis256_ABYTES);
assert(crypto_aead_aegis256_messagebytes_max() == crypto_aead_aegis256_MESSAGEBYTES_MAX);
printf("OK\n");
return 0;
}
+1
View File
@@ -0,0 +1 @@
OK