summaryrefslogtreecommitdiffstats
path: root/third_party/rust/rust-argon2/tests/integration_test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/rust-argon2/tests/integration_test.rs')
-rw-r--r--third_party/rust/rust-argon2/tests/integration_test.rs1076
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);
+}