Skip to content

Commit 038a5d9

Browse files
authored
Merge pull request #88 from GiacomoPope/include_more_tests
include more tests for decaps in mlkem
2 parents a0dac69 + b9a3ced commit 038a5d9

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

tests/test_ml_kem.py

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def generic_keygen_kat(self, ML_KEM, index):
105105
self.assertEqual(ek, ek_kat)
106106
self.assertEqual(dk, dk_kat)
107107

108-
def generic_encap_decap_kat(self, ML_KEM, index):
108+
def generic_encap_kat(self, ML_KEM, index):
109109
with open(
110110
"assets/ML-KEM-encapDecap-FIPS203/internalProjection.json"
111111
) as f:
@@ -126,6 +126,24 @@ def generic_encap_decap_kat(self, ML_KEM, index):
126126
K_prime = ML_KEM.decaps(dk_kat, c_kat)
127127
self.assertEqual(K_prime, k_kat)
128128

129+
def generic_decap_kat(self, ML_KEM, index):
130+
with open(
131+
"assets/ML-KEM-encapDecap-FIPS203/internalProjection.json"
132+
) as f:
133+
data = json.load(f)
134+
kat_data = data["testGroups"][3 + index]["tests"]
135+
136+
# Parse out the decaps key
137+
dk_hex = data["testGroups"][3 + index]["dk"]
138+
dk_kat = bytes.fromhex(dk_hex)
139+
140+
# Ensure that decaps works
141+
for test in kat_data:
142+
c_kat = bytes.fromhex(test["c"])
143+
k_kat = bytes.fromhex(test["k"])
144+
K = ML_KEM.decaps(dk_kat, c_kat)
145+
self.assertEqual(K, k_kat)
146+
129147
def test_ML_KEM_512_keygen(self):
130148
self.generic_keygen_kat(ML_KEM_512, 0)
131149

@@ -135,11 +153,20 @@ def test_ML_KEM_768_keygen(self):
135153
def test_ML_KEM_1024_keygen(self):
136154
self.generic_keygen_kat(ML_KEM_1024, 2)
137155

138-
def test_ML_KEM_512_encap_decap(self):
139-
self.generic_encap_decap_kat(ML_KEM_512, 0)
156+
def test_ML_KEM_512_encap(self):
157+
self.generic_encap_kat(ML_KEM_512, 0)
158+
159+
def test_ML_KEM_768_encap(self):
160+
self.generic_encap_kat(ML_KEM_768, 1)
161+
162+
def test_ML_KEM_1024_encap(self):
163+
self.generic_encap_kat(ML_KEM_1024, 2)
164+
165+
def test_ML_KEM_512_decap(self):
166+
self.generic_decap_kat(ML_KEM_512, 0)
140167

141-
def test_ML_KEM_768_encap_decap(self):
142-
self.generic_encap_decap_kat(ML_KEM_768, 1)
168+
def test_ML_KEM_768_decap(self):
169+
self.generic_decap_kat(ML_KEM_768, 1)
143170

144-
def test_ML_KEM_1024_encap_decap(self):
145-
self.generic_encap_decap_kat(ML_KEM_1024, 2)
171+
def test_ML_KEM_1024_decap(self):
172+
self.generic_decap_kat(ML_KEM_1024, 2)

0 commit comments

Comments
 (0)