diff options
Diffstat (limited to 'third_party/rust/rust-argon2/tests/integration_test.rs')
-rw-r--r-- | third_party/rust/rust-argon2/tests/integration_test.rs | 1076 |
1 files changed, 1076 insertions, 0 deletions
diff --git a/third_party/rust/rust-argon2/tests/integration_test.rs b/third_party/rust/rust-argon2/tests/integration_test.rs new file mode 100644 index 0000000000..c2e07c78f4 --- /dev/null +++ b/third_party/rust/rust-argon2/tests/integration_test.rs @@ -0,0 +1,1076 @@ +// Copyright (c) 2017 Martijn Rijkeboer <mrr@sru-systems.com> +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// These tests are based on Argon's test.c test suite. + +extern crate argon2; +extern crate hex; + +use argon2::{Error, Config, ThreadMode, Variant, Version}; +use hex::ToHex; + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_1() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"somesalt", + "2ec0d925358f5830caf0c1cc8a3ee58b34505759428b859c79b72415f51f9221", + "$argon2d$m=65536,t=2,p=1$c29tZXNhbHQ\ + $LsDZJTWPWDDK8MHMij7lizRQV1lCi4WcebckFfUfkiE", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_2() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "28ae0d1037991b55faec18425274d5f9169b2f44bee19b45b7a561d489d6019a", + "$argon2d$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $KK4NEDeZG1X67BhCUnTV+RabL0S+4ZtFt6Vh1InWAZo", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_3() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 262144, + 1, + b"password", + b"somesalt", + "41c89760d85b80ba1be7e959ebd16390bfb4176db9466d70f670457ccade4ec8", + "$argon2d$m=262144,t=2,p=1$c29tZXNhbHQ\ + $QciXYNhbgLob5+lZ69FjkL+0F225Rm1w9nBFfMreTsg", + ); +} + +#[test] +fn test_argon2d_version10_4() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 256, + 1, + b"password", + b"somesalt", + "bd404868ff00c52e7543c8332e6a772a5724892d7e328d5cf253bbc8e726b371", + "$argon2d$m=256,t=2,p=1$c29tZXNhbHQ\ + $vUBIaP8AxS51Q8gzLmp3KlckiS1+Mo1c8lO7yOcms3E", + ); +} + +#[test] +fn test_argon2d_version10_5() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 256, + 2, + b"password", + b"somesalt", + "6a91d02b9f8854ba0841f04aa6e53c1d3374c0a0c646b8e431b03de805b91ec3", + "$argon2d$m=256,t=2,p=2$c29tZXNhbHQ\ + $apHQK5+IVLoIQfBKpuU8HTN0wKDGRrjkMbA96AW5HsM", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_6() { + hash_test( + Variant::Argon2d, + Version::Version10, + 1, + 65536, + 1, + b"password", + b"somesalt", + "05d1d0a85f499e9397b9c1c936b20f366a7273ccf259e2edfdb44ca8f86dd11f", + "$argon2d$m=65536,t=1,p=1$c29tZXNhbHQ\ + $BdHQqF9JnpOXucHJNrIPNmpyc8zyWeLt/bRMqPht0R8", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_7() { + hash_test( + Variant::Argon2d, + Version::Version10, + 4, + 65536, + 1, + b"password", + b"somesalt", + "99e787faced20949df5a3b9c8620712b45cfea061716adf8b13efb7feee44084", + "$argon2d$m=65536,t=4,p=1$c29tZXNhbHQ\ + $meeH+s7SCUnfWjuchiBxK0XP6gYXFq34sT77f+7kQIQ", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_8() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "b9c2e4a4ec9a6db99ca4e2b549dd64256305b95754b0a70ad757cd1ff7eed4a4", + "$argon2d$m=65536,t=2,p=1$c29tZXNhbHQ\ + $ucLkpOyabbmcpOK1Sd1kJWMFuVdUsKcK11fNH/fu1KQ", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version10_9() { + hash_test( + Variant::Argon2d, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "d1da14196c233e0a3cb687aa6e6c465cb50669ffdb891158c2b75722395f14d5", + "$argon2d$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $0doUGWwjPgo8toeqbmxGXLUGaf/biRFYwrdXIjlfFNU", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_1() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"somesalt", + "955e5d5b163a1b60bba35fc36d0496474fba4f6b59ad53628666f07fb2f93eaf", + "$argon2d$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $lV5dWxY6G2C7o1/DbQSWR0+6T2tZrVNihmbwf7L5Pq8", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_2() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "c2d680a6e7ac1b75e2c2b1e5e71b1701584869492efea4a76ccc91fec622d1ae", + "$argon2d$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $wtaApuesG3XiwrHl5xsXAVhIaUku/qSnbMyR/sYi0a4", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_3() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 262144, + 1, + b"password", + b"somesalt", + "9678b3379ce20ddc96fa38f045c8cdc96282287ff2848efd867582b9528a2155", + "$argon2d$v=19$m=262144,t=2,p=1$c29tZXNhbHQ\ + $lnizN5ziDdyW+jjwRcjNyWKCKH/yhI79hnWCuVKKIVU", + ); +} + +#[test] +fn test_argon2d_version13_4() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 256, + 1, + b"password", + b"somesalt", + "25c4ee8ba448054b49efc804e478b9d823be1f9bd2e99f51d6ec4007a3a1501f", + "$argon2d$v=19$m=256,t=2,p=1$c29tZXNhbHQ\ + $JcTui6RIBUtJ78gE5Hi52CO+H5vS6Z9R1uxAB6OhUB8", + ); +} + +#[test] +fn test_argon2d_version13_5() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 256, + 2, + b"password", + b"somesalt", + "7b69c92d7c3889aad1281dbc8baefc12cc37c80f1c75e33ef2c2d40c28ebc573", + "$argon2d$v=19$m=256,t=2,p=2$c29tZXNhbHQ\ + $e2nJLXw4iarRKB28i678Esw3yA8cdeM+8sLUDCjrxXM", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_6() { + hash_test( + Variant::Argon2d, + Version::Version13, + 1, + 65536, + 1, + b"password", + b"somesalt", + "8193708c030f09b121526b0efdffce738fef0ddb13937a65d43f3f1eab9aa802", + "$argon2d$v=19$m=65536,t=1,p=1$c29tZXNhbHQ\ + $gZNwjAMPCbEhUmsO/f/Oc4/vDdsTk3pl1D8/HquaqAI", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_7() { + hash_test( + Variant::Argon2d, + Version::Version13, + 4, + 65536, + 1, + b"password", + b"somesalt", + "cd1e2816cf8895fffe535b87b7a0aa3612f73c6ce063de83b1e7b4621ca0afe6", + "$argon2d$v=19$m=65536,t=4,p=1$c29tZXNhbHQ\ + $zR4oFs+Ilf/+U1uHt6CqNhL3PGzgY96Dsee0Yhygr+Y", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_8() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "a34dafc893182d521ae467bbfdce60f973a1223c4615654efeb0bfef8a930e25", + "$argon2d$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $o02vyJMYLVIa5Ge7/c5g+XOhIjxGFWVO/rC/74qTDiU", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2d_version13_9() { + hash_test( + Variant::Argon2d, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "f00eb8a999a1c6949c61fbbee3c3cece5066e3ff5c79aed421266055e2bf4dd7", + "$argon2d$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $8A64qZmhxpScYfu+48POzlBm4/9cea7UISZgVeK/Tdc", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_1() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"somesalt", + "f6c4db4a54e2a370627aff3db6176b94a2a209a62c8e36152711802f7b30c694", + "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ\ + $9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_2() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "9690ec55d28d3ed32562f2e73ea62b02b018757643a2ae6e79528459de8106e9", + "$argon2i$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $lpDsVdKNPtMlYvLnPqYrArAYdXZDoq5ueVKEWd6BBuk", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_3() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 262144, + 1, + b"password", + b"somesalt", + "3e689aaa3d28a77cf2bc72a51ac53166761751182f1ee292e3f677a7da4c2467", + "$argon2i$m=262144,t=2,p=1$c29tZXNhbHQ\ + $Pmiaqj0op3zyvHKlGsUxZnYXURgvHuKS4/Z3p9pMJGc", + ); +} + +#[test] +fn test_argon2i_version10_4() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 256, + 1, + b"password", + b"somesalt", + "fd4dd83d762c49bdeaf57c47bdcd0c2f1babf863fdeb490df63ede9975fccf06", + "$argon2i$m=256,t=2,p=1$c29tZXNhbHQ\ + $/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY", + ); +} + +#[test] +fn test_argon2i_version10_5() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 256, + 2, + b"password", + b"somesalt", + "b6c11560a6a9d61eac706b79a2f97d68b4463aa3ad87e00c07e2b01e90c564fb", + "$argon2i$m=256,t=2,p=2$c29tZXNhbHQ\ + $tsEVYKap1h6scGt5ovl9aLRGOqOth+AMB+KwHpDFZPs", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_6() { + hash_test( + Variant::Argon2i, + Version::Version10, + 1, + 65536, + 1, + b"password", + b"somesalt", + "81630552b8f3b1f48cdb1992c4c678643d490b2b5eb4ff6c4b3438b5621724b2", + "$argon2i$m=65536,t=1,p=1$c29tZXNhbHQ\ + $gWMFUrjzsfSM2xmSxMZ4ZD1JCytetP9sSzQ4tWIXJLI", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_7() { + hash_test( + Variant::Argon2i, + Version::Version10, + 4, + 65536, + 1, + b"password", + b"somesalt", + "f212f01615e6eb5d74734dc3ef40ade2d51d052468d8c69440a3a1f2c1c2847b", + "$argon2i$m=65536,t=4,p=1$c29tZXNhbHQ\ + $8hLwFhXm6110c03D70Ct4tUdBSRo2MaUQKOh8sHChHs", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_8() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "e9c902074b6754531a3a0be519e5baf404b30ce69b3f01ac3bf21229960109a3", + "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ\ + $6ckCB0tnVFMaOgvlGeW69ASzDOabPwGsO/ISKZYBCaM", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version10_9() { + hash_test( + Variant::Argon2i, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "79a103b90fe8aef8570cb31fc8b22259778916f8336b7bdac3892569d4f1c497", + "$argon2i$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $eaEDuQ/orvhXDLMfyLIiWXeJFvgza3vaw4kladTxxJc", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_1() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"somesalt", + "c1628832147d9720c5bd1cfd61367078729f6dfb6f8fea9ff98158e0d7816ed0", + "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_2() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "d1587aca0922c3b5d6a83edab31bee3c4ebaef342ed6127a55d19b2351ad1f41", + "$argon2i$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $0Vh6ygkiw7XWqD7asxvuPE667zQu1hJ6VdGbI1GtH0E", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_3() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 262144, + 1, + b"password", + b"somesalt", + "296dbae80b807cdceaad44ae741b506f14db0959267b183b118f9b24229bc7cb", + "$argon2i$v=19$m=262144,t=2,p=1$c29tZXNhbHQ\ + $KW266AuAfNzqrUSudBtQbxTbCVkmexg7EY+bJCKbx8s", + ); +} + +#[test] +fn test_argon2i_version13_4() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 256, + 1, + b"password", + b"somesalt", + "89e9029f4637b295beb027056a7336c414fadd43f6b208645281cb214a56452f", + "$argon2i$v=19$m=256,t=2,p=1$c29tZXNhbHQ\ + $iekCn0Y3spW+sCcFanM2xBT63UP2sghkUoHLIUpWRS8", + ); +} + +#[test] +fn test_argon2i_version13_5() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 256, + 2, + b"password", + b"somesalt", + "4ff5ce2769a1d7f4c8a491df09d41a9fbe90e5eb02155a13e4c01e20cd4eab61", + "$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQ\ + $T/XOJ2mh1/TIpJHfCdQan76Q5esCFVoT5MAeIM1Oq2E", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_6() { + hash_test( + Variant::Argon2i, + Version::Version13, + 1, + 65536, + 1, + b"password", + b"somesalt", + "d168075c4d985e13ebeae560cf8b94c3b5d8a16c51916b6f4ac2da3ac11bbecf", + "$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQ\ + $0WgHXE2YXhPr6uVgz4uUw7XYoWxRkWtvSsLaOsEbvs8", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_7() { + hash_test( + Variant::Argon2i, + Version::Version13, + 4, + 65536, + 1, + b"password", + b"somesalt", + "aaa953d58af3706ce3df1aefd4a64a84e31d7f54175231f1285259f88174ce5b", + "$argon2i$v=19$m=65536,t=4,p=1$c29tZXNhbHQ\ + $qqlT1YrzcGzj3xrv1KZKhOMdf1QXUjHxKFJZ+IF0zls", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_8() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "14ae8da01afea8700c2358dcef7c5358d9021282bd88663a4562f59fb74d22ee", + "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $FK6NoBr+qHAMI1jc73xTWNkCEoK9iGY6RWL1n7dNIu4", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2i_version13_9() { + hash_test( + Variant::Argon2i, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "b0357cccfbef91f3860b0dba447b2348cbefecadaf990abfe9cc40726c521271", + "$argon2i$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $sDV8zPvvkfOGCw26RHsjSMvv7K2vmQq/6cxAcmxSEnE", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_1() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"somesalt", + "980ebd24a4e667f16346f9d4a78b175728783613e0cc6fb17c2ec884b16435df", + "$argon2id$v=16$m=65536,t=2,p=1$c29tZXNhbHQ\ + $mA69JKTmZ/FjRvnUp4sXVyh4NhPgzG+xfC7IhLFkNd8", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_2() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "ce622fc2053acd224c06e7be122f9e9554b62b8a414b032056b46123422e32ab", + "$argon2id$v=16$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $zmIvwgU6zSJMBue+Ei+elVS2K4pBSwMgVrRhI0IuMqs", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_3() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 262144, + 1, + b"password", + b"somesalt", + "01cbafb58f2dc764adced1ab9a90fcb62f6ed8a066023b6ba0c204db6c9b90cd", + "$argon2id$v=16$m=262144,t=2,p=1$c29tZXNhbHQ\ + $AcuvtY8tx2StztGrmpD8ti9u2KBmAjtroMIE22ybkM0", + ); +} + +#[test] +fn test_argon2id_version10_4() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 256, + 1, + b"password", + b"somesalt", + "da070e576e50f2f38a3c897cbddc6c7fb4028e870971ff9eae7b4e1879295e6e", + "$argon2id$v=16$m=256,t=2,p=1$c29tZXNhbHQ\ + $2gcOV25Q8vOKPIl8vdxsf7QCjocJcf+erntOGHkpXm4", + ); +} + +#[test] +fn test_argon2id_version10_5() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 256, + 2, + b"password", + b"somesalt", + "f8aabb5315c63cddcdb3b4a021550928e525699da8fcbd1c2b0b1ccd35cc87a7", + "$argon2id$v=16$m=256,t=2,p=2$c29tZXNhbHQ\ + $+Kq7UxXGPN3Ns7SgIVUJKOUlaZ2o/L0cKwsczTXMh6c", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_6() { + hash_test( + Variant::Argon2id, + Version::Version10, + 1, + 65536, + 1, + b"password", + b"somesalt", + "8e0f310407a989013a823defbd6cbae54d86b35d1ac16e4f88eb4645e1357956", + "$argon2id$v=16$m=65536,t=1,p=1$c29tZXNhbHQ\ + $jg8xBAepiQE6gj3vvWy65U2Gs10awW5PiOtGReE1eVY", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_7() { + hash_test( + Variant::Argon2id, + Version::Version10, + 4, + 65536, + 1, + b"password", + b"somesalt", + "16653426e582143da6a0ff75daac9fa94c21ac2c221c96bd3645a5c15c2d962a", + "$argon2id$v=16$m=65536,t=4,p=1$c29tZXNhbHQ\ + $FmU0JuWCFD2moP912qyfqUwhrCwiHJa9NkWlwVwtlio", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_8() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "75709d4c96a2c235696a77eefeecf33e64221f470b26177c19e5e27642612dbb", + "$argon2id$v=16$m=65536,t=2,p=1$c29tZXNhbHQ\ + $dXCdTJaiwjVpanfu/uzzPmQiH0cLJhd8GeXidkJhLbs", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version10_9() { + hash_test( + Variant::Argon2id, + Version::Version10, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "f0b57cfe03a9d78c4700e2fe802002343660a56b1b5d21ead788e6bb44ef48d3", + "$argon2id$v=16$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $8LV8/gOp14xHAOL+gCACNDZgpWsbXSHq14jmu0TvSNM", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_1() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"somesalt", + "09316115d5cf24ed5a15a31a3ba326e5cf32edc24702987c02b6566f61913cf7", + "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_2() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 1048576, + 1, + b"password", + b"somesalt", + "16a1cb8a061cf1f8b16fb195fe559fa6d1435e43dded2f4fb07293176be892fa", + "$argon2id$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ\ + $FqHLigYc8fixb7GV/lWfptFDXkPd7S9PsHKTF2vokvo", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_3() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 262144, + 1, + b"password", + b"somesalt", + "78fe1ec91fb3aa5657d72e710854e4c3d9b9198c742f9616c2f085bed95b2e8c", + "$argon2id$v=19$m=262144,t=2,p=1$c29tZXNhbHQ\ + $eP4eyR+zqlZX1y5xCFTkw9m5GYx0L5YWwvCFvtlbLow", + ); +} + +#[test] +fn test_argon2id_version13_4() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 256, + 1, + b"password", + b"somesalt", + "9dfeb910e80bad0311fee20f9c0e2b12c17987b4cac90c2ef54d5b3021c68bfe", + "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ\ + $nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4", + ); +} + +#[test] +fn test_argon2id_version13_5() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 256, + 2, + b"password", + b"somesalt", + "6d093c501fd5999645e0ea3bf620d7b8be7fd2db59c20d9fff9539da2bf57037", + "$argon2id$v=19$m=256,t=2,p=2$c29tZXNhbHQ\ + $bQk8UB/VmZZF4Oo79iDXuL5/0ttZwg2f/5U52iv1cDc", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_6() { + hash_test( + Variant::Argon2id, + Version::Version13, + 1, + 65536, + 1, + b"password", + b"somesalt", + "f6a5adc1ba723dddef9b5ac1d464e180fcd9dffc9d1cbf76cca2fed795d9ca98", + "$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ\ + $9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypg", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_7() { + hash_test( + Variant::Argon2id, + Version::Version13, + 4, + 65536, + 1, + b"password", + b"somesalt", + "9025d48e68ef7395cca9079da4c4ec3affb3c8911fe4f86d1a2520856f63172c", + "$argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHQ\ + $kCXUjmjvc5XMqQedpMTsOv+zyJEf5PhtGiUghW9jFyw", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_8() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 65536, + 1, + b"differentpassword", + b"somesalt", + "0b84d652cf6b0c4beaef0dfe278ba6a80df6696281d7e0d2891b817d8c458fde", + "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $C4TWUs9rDEvq7w3+J4umqA32aWKB1+DSiRuBfYxFj94", + ); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_argon2id_version13_9() { + hash_test( + Variant::Argon2id, + Version::Version13, + 2, + 65536, + 1, + b"password", + b"diffsalt", + "bdf32b05ccc42eb15d58fd19b1f856b113da1e9a5874fdcc544308565aa8141c", + "$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ\ + $vfMrBczELrFdWP0ZsfhWsRPaHppYdP3MVEMIVlqoFBw", + ); +} + +#[test] +fn test_verify_encoded_with_missing_dollar_before_salt_version10() { + let encoded = "$argon2i$m=65536,t=2,p=1c29tZXNhbHQ\ + $9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::DecodingFail)); +} + +#[test] +fn test_verify_encoded_with_missing_dollar_before_salt_version13() { + let encoded = "$argon2i$v=19$m=65536,t=2,p=1c29tZXNhbHQ\ + $wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::DecodingFail)); +} + +#[test] +fn test_verify_encoded_with_missing_dollar_before_hash_version10() { + let encoded = "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ\ + 9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::DecodingFail)); +} + +#[test] +fn test_verify_encoded_with_missing_dollar_before_hash_version13() { + let encoded = "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::DecodingFail)); +} + +#[test] +fn test_verify_encoded_with_too_short_salt_version10() { + let encoded = "$argon2i$m=65536,t=2,p=1$\ + $9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::SaltTooShort)); +} + +#[test] +fn test_verify_encoded_with_too_short_salt_version13() { + let encoded = "$argon2i$v=19$m=65536,t=2,p=1$\ + $9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"; + let password = b"password"; + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Err(Error::SaltTooShort)); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_verify_encoded_with_wrong_password_version10() { + let encoded = "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ\ + $b2G3seW+uPzerwQQC+/E1K50CLLO7YXy0JRcaTuswRo"; + let password = b"password"; // should be passwore + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Ok(false)); +} + +#[cfg(not(debug_assertions))] +#[test] +fn test_verify_encoded_with_wrong_password_version13() { + let encoded = "$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ\ + $8iIuixkI73Js3G1uMbezQXD0b8LG4SXGsOwoQkdAQIM"; + let password = b"password"; // should be passwore + let res = argon2::verify_encoded(encoded, password); + assert_eq!(res, Ok(false)); +} + +#[test] +fn test_encoded_len_returns_correct_length() { + assert_eq!(argon2::encoded_len(Variant::Argon2d, 256, 1, 1, 8, 32), 83); + assert_eq!(argon2::encoded_len(Variant::Argon2i, 4096, 10, 10, 8, 32), 86); + assert_eq!(argon2::encoded_len(Variant::Argon2id, 65536, 100, 10, 8, 32), 89); +} + +#[test] +fn test_hash_raw_with_not_enough_memory() { + let pwd = b"password"; + let salt = b"diffsalt"; + let config = Config { + variant: Variant::Argon2i, + version: Version::Version13, + mem_cost: 2, + time_cost: 2, + lanes: 1, + thread_mode: ThreadMode::Sequential, + secret: &[], + ad: &[], + hash_length: 32, + }; + let res = argon2::hash_raw(pwd, salt, &config); + assert_eq!(res, Err(Error::MemoryTooLittle)); +} + +#[test] +fn test_hash_raw_with_too_short_salt() { + let pwd = b"password"; + let salt = b"s"; + let config = Config { + variant: Variant::Argon2i, + version: Version::Version13, + mem_cost: 2048, + time_cost: 2, + lanes: 1, + thread_mode: ThreadMode::Sequential, + secret: &[], + ad: &[], + hash_length: 32, + }; + let res = argon2::hash_raw(pwd, salt, &config); + assert_eq!(res, Err(Error::SaltTooShort)); +} + +fn hash_test( + var: Variant, + ver: Version, + t: u32, + m: u32, + p: u32, + pwd: &[u8], + salt: &[u8], + hex: &str, + enc: &str, +) { + let config = Config { + variant: var, + version: ver, + mem_cost: m, + time_cost: t, + lanes: p, + thread_mode: ThreadMode::from_threads(p), + secret: &[], + ad: &[], + hash_length: 32, + }; + let hash = argon2::hash_raw(pwd, salt, &config).unwrap(); + let mut hex_str = String::new(); + let res = hash.write_hex(&mut hex_str); + assert_eq!(res, Ok(())); + assert_eq!(hex_str.as_str(), hex); + + let encoded = argon2::hash_encoded(pwd, salt, &config).unwrap(); + let result = argon2::verify_encoded(encoded.as_str(), pwd).unwrap(); + assert!(result); + + let result = argon2::verify_encoded(enc, pwd).unwrap(); + assert!(result); +} |