diff options
author | Martin Thomson <mt@lowentropy.net> | 2021-08-10 07:49:43 +0000 |
---|---|---|
committer | Martin Thomson <mt@lowentropy.net> | 2021-08-10 07:49:43 +0000 |
commit | e980c4e09898ee86163d8d93624a90ad0d2b2e1a (patch) | |
tree | cd9676331eb8142e8f4ab5c7469abb06910e507a /gtests/freebl_gtest | |
parent | 16cc08ad06ef9c4d7ddb30dadf90a88ee0651a74 (diff) | |
download | nss-hg-e980c4e09898ee86163d8d93624a90ad0d2b2e1a.tar.gz |
Bug 1709750 - Read HPKE vectors from official JSON, r=djackson
Added check for required fields
Differential Revision: https://phabricator.services.mozilla.com/D119046
Diffstat (limited to 'gtests/freebl_gtest')
-rw-r--r-- | gtests/freebl_gtest/blake2b_unittest.cc | 16 | ||||
-rw-r--r-- | gtests/freebl_gtest/freebl_gtest.gyp | 28 | ||||
-rw-r--r-- | gtests/freebl_gtest/prng_kat_unittest.cc | 57 |
3 files changed, 27 insertions, 74 deletions
diff --git a/gtests/freebl_gtest/blake2b_unittest.cc b/gtests/freebl_gtest/blake2b_unittest.cc index 69a77c9aa..aaf8106aa 100644 --- a/gtests/freebl_gtest/blake2b_unittest.cc +++ b/gtests/freebl_gtest/blake2b_unittest.cc @@ -271,19 +271,3 @@ TEST_F(Blake2BTests, EmptyKeyTest) { EXPECT_EQ(SECFailure, rv); EXPECT_EQ(SEC_ERROR_INVALID_ARGS, PORT_GetError()); } - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - - if (NSS_NoDB_Init(nullptr) != SECSuccess) { - return 1; - } - - int rv = RUN_ALL_TESTS(); - - if (NSS_Shutdown() != SECSuccess) { - return 1; - } - - return rv; -} diff --git a/gtests/freebl_gtest/freebl_gtest.gyp b/gtests/freebl_gtest/freebl_gtest.gyp index c19db414e..98666c247 100644 --- a/gtests/freebl_gtest/freebl_gtest.gyp +++ b/gtests/freebl_gtest/freebl_gtest.gyp @@ -30,12 +30,14 @@ 'target_name': 'freebl_gtest', 'type': 'executable', 'sources': [ - 'mpi_unittest.cc', + 'blake2b_unittest.cc', + 'cmac_unittests.cc', 'dh_unittest.cc', 'ecl_unittest.cc', 'ghash_unittest.cc', + 'mpi_unittest.cc', + 'prng_kat_unittest.cc', 'rsa_unittest.cc', - 'cmac_unittests.cc', '<(DEPTH)/gtests/common/gtests.cc' ], 'dependencies': [ @@ -50,28 +52,6 @@ }], ], }, - { - 'target_name': 'prng_gtest', - 'type': 'executable', - 'sources': [ - 'prng_kat_unittest.cc', - ], - 'dependencies': [ - 'freebl_gtest_deps', - '<(DEPTH)/exports.gyp:nss_exports', - ], - }, - { - 'target_name': 'blake2b_gtest', - 'type': 'executable', - 'sources': [ - 'blake2b_unittest.cc', - ], - 'dependencies': [ - 'freebl_gtest_deps', - '<(DEPTH)/exports.gyp:nss_exports', - ], - }, ], 'target_defaults': { 'include_dirs': [ diff --git a/gtests/freebl_gtest/prng_kat_unittest.cc b/gtests/freebl_gtest/prng_kat_unittest.cc index 835afc302..caa2e1eba 100644 --- a/gtests/freebl_gtest/prng_kat_unittest.cc +++ b/gtests/freebl_gtest/prng_kat_unittest.cc @@ -15,9 +15,11 @@ #include "blapi.h" +extern std::string g_source_dir; + namespace nss_test { -typedef struct PRNGTestValuesStr { +struct PRNGTestValues { std::vector<uint8_t> entropy; std::vector<uint8_t> nonce; std::vector<uint8_t> personal; @@ -25,9 +27,7 @@ typedef struct PRNGTestValuesStr { std::vector<uint8_t> additional_entropy; std::vector<uint8_t> additional_input_reseed; std::vector<std::vector<uint8_t>> additional_input; -} PRNGTestValues; - -std::vector<PRNGTestValues> test_vector; +}; bool contains(std::string& s, const char* to_find) { return s.find(to_find) != std::string::npos; @@ -59,8 +59,10 @@ void print_bytes(std::vector<uint8_t> bytes, std::string name) { std::cout << std::endl; } -static void ReadFile(const std::string file_name) { +static std::vector<PRNGTestValues> ReadFile(const std::string file_name) { + std::vector<PRNGTestValues> test_vector; std::ifstream infile(file_name); + EXPECT_FALSE(infile.fail()) << "kat file: " << file_name; std::string line; // Variables holding the input for each test. @@ -123,11 +125,17 @@ static void ReadFile(const std::string file_name) { test = {}; infile.seekg(pos); } + return test_vector; } -class PRNGTest : public ::testing::TestWithParam<PRNGTestValues> { +class PRNGTest : public ::testing::Test { protected: - void RunTest(PRNGTestValues test) { + void SetUp() override { + test_vector_ = ReadFile(::g_source_dir + "/kat/Hash_DRBG.rsp"); + ASSERT_FALSE(test_vector_.empty()); + } + + void RunTest(PRNGTestValues& test) { ASSERT_EQ(2U, test.additional_input.size()); SECStatus rv = PRNGTEST_Instantiate_Kat( test.entropy.data(), test.entropy.size(), test.nonce.data(), @@ -154,34 +162,15 @@ class PRNGTest : public ::testing::TestWithParam<PRNGTestValues> { rv = PRNGTEST_Uninstantiate(); ASSERT_EQ(SECSuccess, rv); } -}; - -TEST_P(PRNGTest, HashDRBG) { RunTest(GetParam()); } - -INSTANTIATE_TEST_SUITE_P(NISTTestVector, PRNGTest, - ::testing::ValuesIn(test_vector)); - -} // nss_test - -int main(int argc, char** argv) { - if (argc < 2) { - std::cout << "usage: prng_gtest <.rsp file>" << std::endl; - return 1; - } - - nss_test::ReadFile(argv[1]); - assert(!nss_test::test_vector.empty()); - ::testing::InitGoogleTest(&argc, argv); - - if (NSS_NoDB_Init(nullptr) != SECSuccess) { - return 1; - } - int rv = RUN_ALL_TESTS(); + protected: + std::vector<PRNGTestValues> test_vector_; +}; - if (NSS_Shutdown() != SECSuccess) { - return 1; +TEST_F(PRNGTest, HashDRBG) { + for (auto& v : test_vector_) { + RunTest(v); } - - return rv; } + +} // namespace nss_test |