summaryrefslogtreecommitdiff
path: root/gtests/freebl_gtest
diff options
context:
space:
mode:
authorMartin Thomson <mt@lowentropy.net>2021-08-10 07:49:43 +0000
committerMartin Thomson <mt@lowentropy.net>2021-08-10 07:49:43 +0000
commite980c4e09898ee86163d8d93624a90ad0d2b2e1a (patch)
treecd9676331eb8142e8f4ab5c7469abb06910e507a /gtests/freebl_gtest
parent16cc08ad06ef9c4d7ddb30dadf90a88ee0651a74 (diff)
downloadnss-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.cc16
-rw-r--r--gtests/freebl_gtest/freebl_gtest.gyp28
-rw-r--r--gtests/freebl_gtest/prng_kat_unittest.cc57
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