You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
written so that the python code closely follows the Kyber specification
39
+
[specification](https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf) and [FIPS 203](https://csrc.nist.gov/pubs/fips/203/final). To cryptographic guarantees are made of this work.
44
40
45
41
## History of this Repository
46
42
@@ -64,7 +60,7 @@ The KAT files were either downloaded or generated:
64
60
repository](https://github.com/pq-crystals/kyber/) and are included in
65
61
`assets/PQCLkemKAT_*.rsp`
66
62
2. For **ML-KEM**, the KAT files were download from the GitHub repository
67
-
[post-quantum-cryptography/KAT](https://github.com/post-quantum-cryptography/KAT/tree/main/MLKEM)and are included in `assets/kat_MLKEM_*.rsp`
63
+
[usnistgov/ACVP-Server/](https://github.com/usnistgov/ACVP-Server/releases/tag/v1.1.0.35) release 1.1.0.35, and are included in `assets/ML-KEM-*` directories.
68
64
69
65
**Note**: for Kyber v3.02, there is a discrepancy between the specification and
70
66
reference implementation. To ensure all KATs pass, one has to generate the
@@ -91,15 +87,15 @@ use:
91
87
92
88
-`ML_KEM.keygen()`: generate a keypair `(ek, dk)`
93
89
-`ML_KEM.encaps(ek)`: generate a key and ciphertext pair `(key, ct)`
94
-
-`ML_KEM.decaps(ct, dk)`: generate the shared key `key`
90
+
-`ML_KEM.decaps(dk, ct)`: generate the shared key `key`
95
91
96
92
#### Example
97
93
98
94
```python
99
95
>>>from kyber_py.ml_kem importML_KEM_512
100
96
>>> ek, dk =ML_KEM_512.keygen()
101
97
>>> key, ct =ML_KEM_512.encaps(ek)
102
-
>>> _key =ML_KEM_512.decaps(ct, dk)
98
+
>>> _key =ML_KEM_512.decaps(dk, ct)
103
99
>>>assert key == _key
104
100
```
105
101
@@ -122,15 +118,15 @@ use:
122
118
123
119
-`Kyber.keygen()`: generate a keypair `(pk, sk)`
124
120
-`Kyber.encaps(pk)`: generate shared key and challenge `(key, c)`
125
-
-`Kyber.decaps(c, sk)`: generate the shared key `key`
121
+
-`Kyber.decaps(sk, c)`: generate the shared key `key`
126
122
127
123
#### Example
128
124
129
125
```python
130
126
>>>from kyber_py.kyber import Kyber512
131
127
>>> pk, sk = Kyber512.keygen()
132
128
>>> key, c = Kyber512.encaps(pk)
133
-
>>> _key = Kyber512.decaps(c, sk)
129
+
>>> _key = Kyber512.decaps(sk, c)
134
130
>>>assert key == _key
135
131
```
136
132
@@ -157,7 +153,7 @@ currently only support $q = 3329$ and $n = 256$.
157
153
158
154
All times recorded using a Intel Core i7-9750H CPU and averaged over 1000 runs.
159
155
160
-
## Documentation (under active development)
156
+
## Documentation
161
157
162
158
-https://kyber-py.readthedocs.io/en/latest/
163
159
@@ -243,10 +239,6 @@ function on every polynomial.
243
239
computing `f.compress(d).decompress(d)`. They are however *close*. See the
244
240
specification for more information.
245
241
246
-
### Number Theoretic Transform
247
-
248
-
**TODO**: it would be good to write something more detailed here.
249
-
250
242
### Modules
251
243
252
244
Building on `polynomials_generic.py` we also include a file
0 commit comments