aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wycheproof
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2020-04-12 10:58:07 -0400
committerGitHub <noreply@github.com>2020-04-12 09:58:07 -0500
commitebb04592d2286118d3368d939d8a53a4a42be59d (patch)
treeaf02b303791e04acad0f6bf7d9f32c0fbb3e0a82 /tests/wycheproof
parentb77145a009b232f5b68c5f2f2a76370e793a8c1c (diff)
downloadcryptography-ebb04592d2286118d3368d939d8a53a4a42be59d.tar.gz
cryptography-ebb04592d2286118d3368d939d8a53a4a42be59d.tar.bz2
cryptography-ebb04592d2286118d3368d939d8a53a4a42be59d.zip
Refs #5075 -- use hkdf_*.json from wycheproof (#5190)
Diffstat (limited to 'tests/wycheproof')
-rw-r--r--tests/wycheproof/test_hkdf.py50
-rw-r--r--tests/wycheproof/test_utils.py4
2 files changed, 52 insertions, 2 deletions
diff --git a/tests/wycheproof/test_hkdf.py b/tests/wycheproof/test_hkdf.py
new file mode 100644
index 00000000..7038d623
--- /dev/null
+++ b/tests/wycheproof/test_hkdf.py
@@ -0,0 +1,50 @@
+# This file is dual licensed under the terms of the Apache License, Version
+# 2.0, and the BSD License. See the LICENSE file in the root of this repository
+# for complete details.
+
+from __future__ import absolute_import, division, print_function
+
+import binascii
+
+import pytest
+
+from cryptography.hazmat.primitives import hashes
+from cryptography.hazmat.primitives.kdf.hkdf import HKDF
+
+
+_HASH_ALGORITHMS = {
+ "HKDF-SHA-1": hashes.SHA1(),
+ "HKDF-SHA-256": hashes.SHA256(),
+ "HKDF-SHA-384": hashes.SHA384(),
+ "HKDF-SHA-512": hashes.SHA512(),
+}
+
+
+@pytest.mark.wycheproof_tests(
+ "hkdf_sha1_test.json",
+ "hkdf_sha256_test.json",
+ "hkdf_sha384_test.json",
+ "hkdf_sha512_test.json",
+)
+def test_hkdf(backend, wycheproof):
+ hash_algo = _HASH_ALGORITHMS[wycheproof.testfiledata["algorithm"]]
+ if wycheproof.invalid:
+ with pytest.raises(ValueError):
+ HKDF(
+ algorithm=hash_algo,
+ length=wycheproof.testcase["size"],
+ salt=binascii.unhexlify(wycheproof.testcase["salt"]),
+ info=binascii.unhexlify(wycheproof.testcase["info"]),
+ backend=backend
+ )
+ return
+
+ h = HKDF(
+ algorithm=hash_algo,
+ length=wycheproof.testcase["size"],
+ salt=binascii.unhexlify(wycheproof.testcase["salt"]),
+ info=binascii.unhexlify(wycheproof.testcase["info"]),
+ backend=backend
+ )
+ result = h.derive(binascii.unhexlify(wycheproof.testcase["ikm"]))
+ assert result == binascii.unhexlify(wycheproof.testcase["okm"])
diff --git a/tests/wycheproof/test_utils.py b/tests/wycheproof/test_utils.py
index 82c0a359..2cf3be08 100644
--- a/tests/wycheproof/test_utils.py
+++ b/tests/wycheproof/test_utils.py
@@ -10,8 +10,8 @@ from ..utils import WycheproofTest, skip_if_wycheproof_none
def test_wycheproof_test_repr():
- wycheproof = WycheproofTest({}, {"tcId": 3})
- assert repr(wycheproof) == "<WycheproofTest({}, {'tcId': 3}, tcId=3)>"
+ wycheproof = WycheproofTest({}, {}, {"tcId": 3})
+ assert repr(wycheproof) == "<WycheproofTest({}, {}, {'tcId': 3}, tcId=3)>"
def test_skip_if_wycheproof_none():