Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Bug 1672823 - Add Wycheproof HKDF test cases. r=bbeurdouche
Differential Revision: https://phabricator.services.mozilla.com/D94496

--HG--
extra : moz-landing-system : lando
  • Loading branch information
Kevin Jacobs committed Nov 3, 2020
1 parent f8e7a39 commit 81a8b9e
Show file tree
Hide file tree
Showing 9 changed files with 6,205 additions and 356 deletions.
1,053 changes: 1,053 additions & 0 deletions gtests/common/testvectors/hkdf-sha1-vectors.h

Large diffs are not rendered by default.

1,309 changes: 1,309 additions & 0 deletions gtests/common/testvectors/hkdf-sha256-vectors.h

Large diffs are not rendered by default.

1,644 changes: 1,644 additions & 0 deletions gtests/common/testvectors/hkdf-sha384-vectors.h

Large diffs are not rendered by default.

1,983 changes: 1,983 additions & 0 deletions gtests/common/testvectors/hkdf-sha512-vectors.h

Large diffs are not rendered by default.

161 changes: 0 additions & 161 deletions gtests/common/testvectors/hkdf-vectors.h

This file was deleted.

10 changes: 10 additions & 0 deletions gtests/common/testvectors_base/test-structs.h
Expand Up @@ -77,6 +77,16 @@ typedef struct EcdhTestVectorStr {
bool valid;
} EcdhTestVector;

typedef struct HkdfTestVectorStr {
uint32_t id;
std::string ikm;
std::string salt;
std::string info;
std::string okm;
uint32_t size;
bool valid;
} HkdfTestVector;

typedef struct RsaSignatureTestVectorStr {
SECOidTag hash_oid;
uint32_t id;
Expand Down
61 changes: 61 additions & 0 deletions gtests/common/wycheproof/genTestVectors.py
Expand Up @@ -196,6 +196,19 @@ def format_testcase(self, testcase, key, hash_oid, keySize, out_defs):

return result

class HKDF():
"""Class that provides the generator function for a single HKDF test case."""

def format_testcase(self, vector):
"""Format an HKDF testcase object. Return a string in C-header format."""
result = '{{ {},\n'.format(vector['tcId'])
for key in ['ikm', 'salt', 'info', "okm"]:
result += ' \"{}\",\n'.format(vector[key])
result += ' {},\n'.format(vector['size'])
result += ' {}}},\n\n'.format(str(vector['result'] == 'valid').lower())

return result

class RSA_PKCS1_SIGNATURE():
pub_keys = {}

Expand Down Expand Up @@ -480,6 +493,50 @@ def generate_vectors_file(params):
'comment' : ''
}

hkdf_sha1_params = {
'source_dir': 'source_vectors/',
'source_file': 'hkdf_sha1_test.json',
'target': '../testvectors/hkdf-sha1-vectors.h',
'array_init': 'const HkdfTestVector kHkdfSha1WycheproofVectors[] = {\n',
'formatter' : HKDF(),
'crop_size_end': -3,
'section': 'hkdf_sha1_vectors_h__',
'comment' : ''
}

hkdf_sha256_params = {
'source_dir': 'source_vectors/',
'source_file': 'hkdf_sha256_test.json',
'target': '../testvectors/hkdf-sha256-vectors.h',
'array_init': 'const HkdfTestVector kHkdfSha256WycheproofVectors[] = {\n',
'formatter' : HKDF(),
'crop_size_end': -3,
'section': 'hkdf_sha256_vectors_h__',
'comment' : ''
}

hkdf_sha384_params = {
'source_dir': 'source_vectors/',
'source_file': 'hkdf_sha384_test.json',
'target': '../testvectors/hkdf-sha384-vectors.h',
'array_init': 'const HkdfTestVector kHkdfSha384WycheproofVectors[] = {\n',
'formatter' : HKDF(),
'crop_size_end': -3,
'section': 'hkdf_sha384_vectors_h__',
'comment' : ''
}

hkdf_sha512_params = {
'source_dir': 'source_vectors/',
'source_file': 'hkdf_sha512_test.json',
'target': '../testvectors/hkdf-sha512-vectors.h',
'array_init': 'const HkdfTestVector kHkdfSha512WycheproofVectors[] = {\n',
'formatter' : HKDF(),
'crop_size_end': -3,
'section': 'hkdf_sha512_vectors_h__',
'comment' : ''
}

p256ecdh_params = {
'source_dir': 'source_vectors/',
'source_file': 'ecdh_secp256r1_test.json',
Expand Down Expand Up @@ -863,6 +920,10 @@ def generate_test_vectors():
chacha_poly_params,
curve25519_params,
dsa_params,
hkdf_sha1_params,
hkdf_sha256_params,
hkdf_sha384_params,
hkdf_sha512_params,
p256ecdsa_sha256_params,
p384ecdsa_sha384_params,
p521ecdsa_sha512_params,
Expand Down
2 changes: 1 addition & 1 deletion gtests/pk11_gtest/manifest.mn
Expand Up @@ -22,8 +22,8 @@ CPPSRCS = \
pk11_encrypt_derive_unittest.cc \
pk11_export_unittest.cc \
pk11_find_certs_unittest.cc \
pk11_hpke_unittest.cc \
pk11_hkdf_unittest.cc \
pk11_hpke_unittest.cc \
pk11_import_unittest.cc \
pk11_kbkdf.cc \
pk11_keygen.cc \
Expand Down

0 comments on commit 81a8b9e

Please sign in to comment.