mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-28 03:17:31 +09:00
Update NSS to 3.32.1-RTM
This commit is contained in:
parent
f29876f120
commit
c91ef9012b
512 changed files with 83203 additions and 16839 deletions
55
security/nss/gtests/freebl_gtest/ghash_unittest.cc
Normal file
55
security/nss/gtests/freebl_gtest/ghash_unittest.cc
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
// You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include "gcm-vectors.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "util.h"
|
||||
|
||||
#include "gcm.h"
|
||||
|
||||
namespace nss_test {
|
||||
|
||||
class GHashTest : public ::testing::TestWithParam<gcm_kat_value> {
|
||||
protected:
|
||||
void TestGHash(const gcm_kat_value val, bool sw) {
|
||||
// Read test data.
|
||||
std::vector<uint8_t> hash_key = hex_string_to_bytes(val.hash_key);
|
||||
ASSERT_EQ(16UL, hash_key.size());
|
||||
std::vector<uint8_t> additional_data =
|
||||
hex_string_to_bytes(val.additional_data);
|
||||
std::vector<uint8_t> result = hex_string_to_bytes(val.result);
|
||||
std::vector<uint8_t> cipher_text(result.begin(), result.end() - 16);
|
||||
std::vector<uint8_t> expected = hex_string_to_bytes(val.ghash);
|
||||
ASSERT_EQ(16UL, expected.size());
|
||||
|
||||
// Prepare context.
|
||||
gcmHashContext ghashCtx;
|
||||
ASSERT_EQ(SECSuccess, gcmHash_InitContext(&ghashCtx, hash_key.data(), sw));
|
||||
|
||||
// Hash additional_data, cipher_text.
|
||||
gcmHash_Reset(&ghashCtx,
|
||||
const_cast<const unsigned char *>(additional_data.data()),
|
||||
additional_data.size());
|
||||
gcmHash_Update(&ghashCtx,
|
||||
const_cast<const unsigned char *>(cipher_text.data()),
|
||||
cipher_text.size());
|
||||
|
||||
// Finalise (hash in the length).
|
||||
uint8_t result_bytes[16];
|
||||
unsigned int out_len;
|
||||
ASSERT_EQ(SECSuccess, gcmHash_Final(&ghashCtx, result_bytes, &out_len, 16));
|
||||
ASSERT_EQ(16U, out_len);
|
||||
EXPECT_EQ(expected, std::vector<uint8_t>(result_bytes, result_bytes + 16));
|
||||
}
|
||||
};
|
||||
|
||||
#ifdef NSS_X86_OR_X64
|
||||
TEST_P(GHashTest, KAT_X86_HW) { TestGHash(GetParam(), false); }
|
||||
#endif
|
||||
TEST_P(GHashTest, KAT_Sftw) { TestGHash(GetParam(), true); }
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(NISTTestVector, GHashTest,
|
||||
::testing::ValuesIn(kGcmKatValues));
|
||||
|
||||
} // nss_test
|
||||
Loading…
Add table
Add a link
Reference in a new issue