From 71f6572ade2c2f0f631e5a09d61a2bfe80f8ecd2 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 12 Jan 2023 15:49:03 +0100 Subject: [PATCH] credentials: Add more unit tests --- pdns/test-credentials_cc.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pdns/test-credentials_cc.cc b/pdns/test-credentials_cc.cc index d3738c47b0..109f2b0c7b 100644 --- a/pdns/test-credentials_cc.cc +++ b/pdns/test-credentials_cc.cc @@ -44,6 +44,13 @@ BOOST_AUTO_TEST_CASE(test_CredentialsUtils) BOOST_CHECK(verifyPassword(customParams, plaintext)); } + { + // hash password with invalid parameters + BOOST_CHECK_THROW(hashPassword(plaintext, 0, 2, 16), std::runtime_error); + BOOST_CHECK_THROW(hashPassword(plaintext, 512, 0, 16), std::runtime_error); + BOOST_CHECK_THROW(hashPassword(plaintext, 512, 2, 0), std::runtime_error); + } + // empty BOOST_CHECK(!isPasswordHashed("")); // missing leading $ @@ -79,6 +86,12 @@ BOOST_AUTO_TEST_CASE(test_CredentialsUtils) BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=A,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // invalid p BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=10,p=p,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing ln + BOOST_CHECK_THROW(verifyPassword("$scrypt$la=10,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing p + BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=10,q=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing r + BOOST_CHECK_THROW(verifyPassword("$scrypt$l,ln=10,q=1,s=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // work factor is too large BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=16,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // salt is too long @@ -121,4 +134,19 @@ BOOST_AUTO_TEST_CASE(test_CredentialsHolder) #endif } +BOOST_AUTO_TEST_CASE(test_SensitiveData) +{ + size_t bytes = 16; + SensitiveData data(bytes); + BOOST_CHECK_EQUAL(data.getString().size(), bytes); + + SensitiveData data2("test"); + data2 = std::move(data); + BOOST_CHECK_EQUAL(data2.getString().size(), bytes); + BOOST_CHECK_EQUAL(data.getString().size(), 0U); + + data2.clear(); + BOOST_CHECK_EQUAL(data2.getString().size(), 0U); +} + BOOST_AUTO_TEST_SUITE_END() -- 2.47.3