Skip to content

Commit bb08546

Browse files
committed
add test coverage for ML-DSA
1 parent 2811344 commit bb08546

File tree

8 files changed

+1741
-5
lines changed

8 files changed

+1741
-5
lines changed

.github/workflows/ci.yml

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,26 @@ jobs:
186186
os: ubuntu-latest
187187
python-version: "3.13"
188188
opt-deps: ["kyber_py"]
189+
- name: py3.9 with dilithium-py
190+
os: ubuntu-latest
191+
python-version: "3.9"
192+
opt-deps: ["dilithium_py"]
193+
- name: py3.10 with dilithium-py
194+
os: ubuntu-latest
195+
python-version: "3.10"
196+
opt-deps: ["dilithium_py"]
197+
- name: py3.11 with dilithium-py
198+
os: ubuntu-latest
199+
python-version: "3.11"
200+
opt-deps: ["dilithium_py"]
201+
- name: py3.12 with dilithium-py
202+
os: ubuntu-latest
203+
python-version: "3.12"
204+
opt-deps: ["dilithium_py"]
205+
- name: py3.13 with dilithium-py
206+
os: ubuntu-latest
207+
python-version: "3.13"
208+
opt-deps: ["dilithium_py"]
189209
# finally test with multiple dependencies installed at the same time
190210
- name: py2.7 with m2crypto, pycrypto, gmpy, gmpy2, and brotli
191211
os: ubuntu-22.04
@@ -202,26 +222,26 @@ jobs:
202222
- name: py3.9 with m2crypto, gmpy, gmpy2, brotli, and zstandard
203223
os: ubuntu-latest
204224
python-version: 3.9
205-
opt-deps: ['m2crypto', 'gmpy', 'gmpy2', 'brotli', 'zstd', 'kyber_py']
225+
opt-deps: ['m2crypto', 'gmpy', 'gmpy2', 'brotli', 'zstd', 'kyber_py', 'dilithium_py']
206226
- name: py3.10 with m2crypto, gmpy, gmpy2, brotli, and zstandard
207227
os: ubuntu-latest
208228
python-version: '3.10'
209-
opt-deps: ['m2crypto', 'gmpy', 'gmpy2', 'brotli', 'zstd', 'kyber_py']
229+
opt-deps: ['m2crypto', 'gmpy', 'gmpy2', 'brotli', 'zstd', 'kyber_py', 'dilithium_py']
210230
- name: py3.11 with m2crypto, gmpy, gmpy2, brotli, and zstandard
211231
os: ubuntu-latest
212232
python-version: '3.11'
213233
# gmpy doesn't build with 3.11
214-
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py']
234+
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py', 'dilithium_py']
215235
- name: py3.12 with m2crypto, gmpy, gmpy2, brotli, and zstandard
216236
os: ubuntu-latest
217237
python-version: '3.12'
218238
# gmpy doesn't build with 3.12
219-
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py']
239+
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py', 'dilithium_py']
220240
- name: py3.13 with m2crypto, gmpy, gmpy2, brotli, and zstandard
221241
os: ubuntu-latest
222242
python-version: '3.13'
223243
# gmpy doesn't build with 3.13
224-
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py']
244+
opt-deps: ['m2crypto', 'gmpy2', 'brotli', 'zstd', 'kyber_py', 'dilithium_py']
225245
steps:
226246
- uses: actions/checkout@v2
227247
if: ${{ !matrix.container }}
@@ -353,6 +373,9 @@ jobs:
353373
- name: Install kyber_py
354374
if: ${{ contains(matrix.opt-deps, 'kyber_py') }}
355375
run: pip install "https://github.com/GiacomoPope/kyber-py/archive/b187189a514b3327578928c1d4c901d34592678e.zip"
376+
- name: Install dilithium_py
377+
if: ${{ contains(matrix.opt-deps, 'dilithium_py') }}
378+
run: pip install "https://github.com/GiacomoPope/dilithium-py/archive/refs/tags/1.2.2.zip"
356379
- name: Install build dependencies (2.6)
357380
if: ${{ matrix.python-version == '2.6' }}
358381
run: |

tests/caMldsa65Cert.pem

Lines changed: 457 additions & 0 deletions
Large diffs are not rendered by default.

tests/caMldsa65Key.pem

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
87+
frlVnx+fcQmvzTPEO7Jo0Jf4
88+
-----END PRIVATE KEY-----

0 commit comments

Comments
 (0)