Commit a00d389
authored
ML-DSA support as a TLS 1.3 signature scheme (#3251)
Wire up draft-ietf-tls-mldsa (IANA code points 0x0904/0x0905/0x0906 for
MLDSA44/65/87) through AWS-LC's libssl, backed by the existing PQDSA
EVP_PKEY support in libcrypto. ML-DSA is TLS 1.3 only and is advertised
in the default signing and verification sigalg lists; the per-sigalg
gate in pkey_supports_algorithm keeps these entries from being selected
on earlier protocol versions.
- Add SSL_SIGN_MLDSA44/65/87 to the public header.
- Add a new SSL_PKEY_PQDSA certificate slot.
- Extend SSL_SIGNATURE_ALGORITHM with param_nid (replacing the EC-only
curve field) so sigalg rows can constrain both EC curves and ML-DSA
parameter sets.
- Gate PQDSA to TLS 1.3 in pkey_supports_algorithm, and require the
sigalg's param_nid to match EVP_PKEY_pqdsa_get_type(pkey).
- Route PQDSA through the existing EVP_DigestSign/Verify path, which
dispatches to sign_message/verify_message in pure mode.
- Add MLDSA44/65/87 to kVerifySignatureAlgorithms and
kSignSignatureAlgorithms so they're negotiated by default.
Tests:
- Add MLDSA test fixtures (cert + seed private key) from the IETF LAMPS
WG examples accompanying draft-ietf-lamps-dilithium-certificates, and
parameterized handshake tests covering success, TLS 1.2 rejection, and
cross-variant sigalg mismatch.
- Regenerate the golden ClientHello byte vectors in ssl_test.cc and bump
kKeyShare1Offset by the corresponding 6 bytes.
- Relax SSLTest.Padding to skip version/session combinations whose
baseline ClientHello is now pushed past the 0xff boundary by the larger
sigalg list.1 parent 9360b0a commit a00d389
9 files changed
Lines changed: 808 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1149 | 1149 | | |
1150 | 1150 | | |
1151 | 1151 | | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
1152 | 1155 | | |
1153 | 1156 | | |
1154 | 1157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
299 | 299 | | |
300 | 300 | | |
301 | 301 | | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
302 | 310 | | |
303 | 311 | | |
304 | 312 | | |
| |||
323 | 331 | | |
324 | 332 | | |
325 | 333 | | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
326 | 340 | | |
327 | 341 | | |
328 | 342 | | |
| |||
344 | 358 | | |
345 | 359 | | |
346 | 360 | | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
347 | 376 | | |
348 | 377 | | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
349 | 387 | | |
350 | 388 | | |
351 | 389 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1842 | 1842 | | |
1843 | 1843 | | |
1844 | 1844 | | |
1845 | | - | |
1846 | | - | |
| 1845 | + | |
| 1846 | + | |
1847 | 1847 | | |
1848 | 1848 | | |
1849 | 1849 | | |
| |||
2203 | 2203 | | |
2204 | 2204 | | |
2205 | 2205 | | |
2206 | | - | |
| 2206 | + | |
2207 | 2207 | | |
2208 | 2208 | | |
2209 | 2209 | | |
| |||
2486 | 2486 | | |
2487 | 2487 | | |
2488 | 2488 | | |
2489 | | - | |
2490 | | - | |
| 2489 | + | |
| 2490 | + | |
| 2491 | + | |
2491 | 2492 | | |
2492 | 2493 | | |
2493 | 2494 | | |
| |||
2504 | 2505 | | |
2505 | 2506 | | |
2506 | 2507 | | |
2507 | | - | |
| 2508 | + | |
| 2509 | + | |
2508 | 2510 | | |
2509 | 2511 | | |
2510 | 2512 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1328 | 1328 | | |
1329 | 1329 | | |
1330 | 1330 | | |
| 1331 | + | |
| 1332 | + | |
1331 | 1333 | | |
1332 | 1334 | | |
1333 | 1335 | | |
| |||
1341 | 1343 | | |
1342 | 1344 | | |
1343 | 1345 | | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
1344 | 1351 | | |
1345 | 1352 | | |
1346 | 1353 | | |
| |||
0 commit comments