diff --git a/README.md b/README.md index 183edfe..25f7c33 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The goal of this library is to provide a simple and easy-to-use interface for generating key pairs, certificates, signing and verifying messages, and encrypting and decrypting messages using post-quantum cryptographic algorithms. -A secondary goal is to provide a set of cryptographic algorithms that are compatible with existing X.509, PKIX, and CMS data structures and protocols and to support the efforts of the [LAMPS Working Group](https://datatracker.ietf.org/wg/lamps/about/) in the IETF especially the [draft-ietf-lamps-pq-composite-sigs](https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/) and [draft-ietf-lamps-pq-composite-kem](https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-kem/) drafts. +A secondary goal is to provide a set of cryptographic algorithms that are compatible with existing X.509, PKIX, and CMS data structures and protocols and to support the efforts of the [LAMPS Working Group](https://datatracker.ietf.org/wg/lamps/about/) in the IETF especially the [draft-ietf-lamps-pq-composite-sigs](https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/) (composite signatures, tracking **draft-19**) and [draft-ietf-lamps-pq-composite-kem](https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-kem/) (composite KEM, tracking **draft-15**) drafts. Composite algorithms use the production OID arc `1.3.6.1.5.5.7.6.37`–`.66`. ## Warning diff --git a/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_both_priv.der b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_both_priv.der new file mode 100644 index 0000000..ec87385 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_both_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_expandedkey_priv.der b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_expandedkey_priv.der new file mode 100644 index 0000000..eb43526 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_seed_priv.der b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_seed_priv.der new file mode 100644 index 0000000..eb43526 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_seed_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_sig.bin b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_sig.bin new file mode 100644 index 0000000..a45bfc6 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_sig.bin differ diff --git a/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_ta.der b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_ta.der new file mode 100644 index 0000000..a412eab Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa44-2.16.840.1.101.3.4.3.32_ta.der differ diff --git a/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_both_priv.der b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_both_priv.der new file mode 100644 index 0000000..8b7be1c Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_both_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_expandedkey_priv.der b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_expandedkey_priv.der new file mode 100644 index 0000000..4ed1637 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_seed_priv.der b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_seed_priv.der new file mode 100644 index 0000000..4ed1637 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_seed_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_sig.bin b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_sig.bin new file mode 100644 index 0000000..696c1df Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_sig.bin differ diff --git a/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_ta.der b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_ta.der new file mode 100644 index 0000000..8370407 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa65-2.16.840.1.101.3.4.3.33_ta.der differ diff --git a/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_both_priv.der b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_both_priv.der new file mode 100644 index 0000000..4f37cfe Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_both_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_expandedkey_priv.der b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_expandedkey_priv.der new file mode 100644 index 0000000..daa8b35 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_seed_priv.der b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_seed_priv.der new file mode 100644 index 0000000..daa8b35 Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_seed_priv.der differ diff --git a/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_sig.bin b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_sig.bin new file mode 100644 index 0000000..9b74d7b Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_sig.bin differ diff --git a/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_ta.der b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_ta.der new file mode 100644 index 0000000..e8cfdaa Binary files /dev/null and b/artifacts/r5_certs/HashMlDsa87-2.16.840.1.101.3.4.3.34_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_both_priv.der new file mode 100644 index 0000000..566099f Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_expandedkey_priv.der new file mode 100644 index 0000000..770c7b3 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_seed_priv.der new file mode 100644 index 0000000..770c7b3 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_sig.bin new file mode 100644 index 0000000..86a642f Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_ta.der new file mode 100644 index 0000000..a7a961a Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128f-2.16.840.1.101.3.4.3.36_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_both_priv.der new file mode 100644 index 0000000..3df309e Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_expandedkey_priv.der new file mode 100644 index 0000000..3363b19 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_seed_priv.der new file mode 100644 index 0000000..3363b19 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_sig.bin new file mode 100644 index 0000000..d0e51f8 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_ta.der new file mode 100644 index 0000000..676190b Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_128s-2.16.840.1.101.3.4.3.35_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_both_priv.der new file mode 100644 index 0000000..30562f2 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_expandedkey_priv.der new file mode 100644 index 0000000..1e71917 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_seed_priv.der new file mode 100644 index 0000000..1e71917 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_sig.bin new file mode 100644 index 0000000..32fcc99 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_ta.der new file mode 100644 index 0000000..8ed08e0 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192f-2.16.840.1.101.3.4.3.38_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_both_priv.der new file mode 100644 index 0000000..93041cd Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_expandedkey_priv.der new file mode 100644 index 0000000..08d5db2 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_seed_priv.der new file mode 100644 index 0000000..08d5db2 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_sig.bin new file mode 100644 index 0000000..a2f0ddb Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_ta.der new file mode 100644 index 0000000..0147e85 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_192s-2.16.840.1.101.3.4.3.37_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_both_priv.der new file mode 100644 index 0000000..d794770 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_expandedkey_priv.der new file mode 100644 index 0000000..da5e5e0 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_seed_priv.der new file mode 100644 index 0000000..da5e5e0 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_sig.bin new file mode 100644 index 0000000..ad2a118 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_ta.der new file mode 100644 index 0000000..34edb54 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256f-2.16.840.1.101.3.4.3.40_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_both_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_both_priv.der new file mode 100644 index 0000000..ec75e4d Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_expandedkey_priv.der new file mode 100644 index 0000000..367266d Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_seed_priv.der b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_seed_priv.der new file mode 100644 index 0000000..367266d Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_sig.bin b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_sig.bin new file mode 100644 index 0000000..9b997eb Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_ta.der b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_ta.der new file mode 100644 index 0000000..92a68dc Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaSha2_256s-2.16.840.1.101.3.4.3.39_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_both_priv.der new file mode 100644 index 0000000..0c98c18 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_expandedkey_priv.der new file mode 100644 index 0000000..2657caa Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_seed_priv.der new file mode 100644 index 0000000..2657caa Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_sig.bin b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_sig.bin new file mode 100644 index 0000000..47b96d5 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_ta.der b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_ta.der new file mode 100644 index 0000000..69ddad0 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128f-2.16.840.1.101.3.4.3.42_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_both_priv.der new file mode 100644 index 0000000..f20d185 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_expandedkey_priv.der new file mode 100644 index 0000000..52b5dfa Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_seed_priv.der new file mode 100644 index 0000000..52b5dfa Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_sig.bin b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_sig.bin new file mode 100644 index 0000000..832cd82 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_ta.der b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_ta.der new file mode 100644 index 0000000..d509349 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake128s-2.16.840.1.101.3.4.3.41_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_both_priv.der new file mode 100644 index 0000000..8b49204 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_expandedkey_priv.der new file mode 100644 index 0000000..7c0ed45 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_seed_priv.der new file mode 100644 index 0000000..7c0ed45 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_sig.bin b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_sig.bin new file mode 100644 index 0000000..c229fa8 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_ta.der b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_ta.der new file mode 100644 index 0000000..c287518 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192f-2.16.840.1.101.3.4.3.44_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_both_priv.der new file mode 100644 index 0000000..848e9f1 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_expandedkey_priv.der new file mode 100644 index 0000000..06fa434 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_seed_priv.der new file mode 100644 index 0000000..06fa434 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_sig.bin b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_sig.bin new file mode 100644 index 0000000..c04e2e4 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_ta.der b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_ta.der new file mode 100644 index 0000000..e9c4e54 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake192s-2.16.840.1.101.3.4.3.43_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_both_priv.der new file mode 100644 index 0000000..5715793 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_expandedkey_priv.der new file mode 100644 index 0000000..7f2db6e Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_seed_priv.der new file mode 100644 index 0000000..7f2db6e Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_sig.bin b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_sig.bin new file mode 100644 index 0000000..0d9cecf Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_ta.der b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_ta.der new file mode 100644 index 0000000..9248bf9 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256f-2.16.840.1.101.3.4.3.46_ta.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_both_priv.der b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_both_priv.der new file mode 100644 index 0000000..45d6d41 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_both_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_expandedkey_priv.der b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_expandedkey_priv.der new file mode 100644 index 0000000..1d2f724 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_seed_priv.der b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_seed_priv.der new file mode 100644 index 0000000..1d2f724 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_seed_priv.der differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_sig.bin b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_sig.bin new file mode 100644 index 0000000..3a6566a Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_sig.bin differ diff --git a/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_ta.der b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_ta.der new file mode 100644 index 0000000..8acced8 Binary files /dev/null and b/artifacts/r5_certs/HashSlhDsaShake256s-2.16.840.1.101.3.4.3.45_ta.der differ diff --git a/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_both_priv.der b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_both_priv.der new file mode 100644 index 0000000..2196d35 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_expandedkey_priv.der b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_expandedkey_priv.der new file mode 100644 index 0000000..7db959b Binary files /dev/null and b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_seed_priv.der b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_seed_priv.der new file mode 100644 index 0000000..7db959b Binary files /dev/null and b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_sig.bin b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_sig.bin new file mode 100644 index 0000000..6f6d40b Binary files /dev/null and b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_ta.der b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_ta.der new file mode 100644 index 0000000..6b1f42e Binary files /dev/null and b/artifacts/r5_certs/MlDsa44-2.16.840.1.101.3.4.3.17_ta.der differ diff --git a/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_both_priv.der b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_both_priv.der new file mode 100644 index 0000000..758d0ca Binary files /dev/null and b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_expandedkey_priv.der b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_expandedkey_priv.der new file mode 100644 index 0000000..b51b121 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_seed_priv.der b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_seed_priv.der new file mode 100644 index 0000000..b51b121 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_sig.bin b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_sig.bin new file mode 100644 index 0000000..3ff4dc0 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_ta.der b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_ta.der new file mode 100644 index 0000000..ebf8313 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44EcdsaP256-1.3.6.1.5.5.7.6.40_ta.der differ diff --git a/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_both_priv.der b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_both_priv.der new file mode 100644 index 0000000..eec2a5e Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_expandedkey_priv.der b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_expandedkey_priv.der new file mode 100644 index 0000000..849e2c3 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_seed_priv.der b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_seed_priv.der new file mode 100644 index 0000000..849e2c3 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_sig.bin b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_sig.bin new file mode 100644 index 0000000..aebd6e7 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_ta.der b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_ta.der new file mode 100644 index 0000000..afd1276 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Ed25519-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_both_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_both_priv.der new file mode 100644 index 0000000..e11ec61 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_expandedkey_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_expandedkey_priv.der new file mode 100644 index 0000000..5090d59 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_seed_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_seed_priv.der new file mode 100644 index 0000000..5090d59 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_sig.bin b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_sig.bin new file mode 100644 index 0000000..2b655d0 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_ta.der b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_ta.der new file mode 100644 index 0000000..3a9220e Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pkcs15-1.3.6.1.5.5.7.6.38_ta.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_both_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_both_priv.der new file mode 100644 index 0000000..5082c26 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_expandedkey_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_expandedkey_priv.der new file mode 100644 index 0000000..6bb21ba Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_seed_priv.der b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_seed_priv.der new file mode 100644 index 0000000..6bb21ba Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_sig.bin b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_sig.bin new file mode 100644 index 0000000..f5ed419 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_ta.der b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_ta.der new file mode 100644 index 0000000..a121429 Binary files /dev/null and b/artifacts/r5_certs/MlDsa44Rsa2048Pss-1.3.6.1.5.5.7.6.37_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_both_priv.der b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_both_priv.der new file mode 100644 index 0000000..c86a453 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_expandedkey_priv.der new file mode 100644 index 0000000..72c5a65 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_seed_priv.der b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_seed_priv.der new file mode 100644 index 0000000..72c5a65 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_sig.bin b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_sig.bin new file mode 100644 index 0000000..ce35425 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_ta.der b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_ta.der new file mode 100644 index 0000000..d0c3dca Binary files /dev/null and b/artifacts/r5_certs/MlDsa65-2.16.840.1.101.3.4.3.18_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_both_priv.der b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_both_priv.der new file mode 100644 index 0000000..1375aea Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_expandedkey_priv.der new file mode 100644 index 0000000..24f0ed2 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_seed_priv.der b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_seed_priv.der new file mode 100644 index 0000000..24f0ed2 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_sig.bin b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_sig.bin new file mode 100644 index 0000000..2dc7db1 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_ta.der b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_ta.der new file mode 100644 index 0000000..063ecb4 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaBrainpoolP256r1-1.3.6.1.5.5.7.6.47_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_both_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_both_priv.der new file mode 100644 index 0000000..93a4092 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_expandedkey_priv.der new file mode 100644 index 0000000..962e9b5 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_seed_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_seed_priv.der new file mode 100644 index 0000000..962e9b5 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_sig.bin b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_sig.bin new file mode 100644 index 0000000..eee5430 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_ta.der b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_ta.der new file mode 100644 index 0000000..58bdbc2 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP256-1.3.6.1.5.5.7.6.45_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_both_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_both_priv.der new file mode 100644 index 0000000..42d46d9 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_expandedkey_priv.der new file mode 100644 index 0000000..5dab950 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_seed_priv.der b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_seed_priv.der new file mode 100644 index 0000000..5dab950 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_sig.bin b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_sig.bin new file mode 100644 index 0000000..305800b Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_ta.der b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_ta.der new file mode 100644 index 0000000..02ca77e Binary files /dev/null and b/artifacts/r5_certs/MlDsa65EcdsaP384-1.3.6.1.5.5.7.6.46_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_both_priv.der b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_both_priv.der new file mode 100644 index 0000000..79973fb Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_expandedkey_priv.der new file mode 100644 index 0000000..9100a6e Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_seed_priv.der b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_seed_priv.der new file mode 100644 index 0000000..9100a6e Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_sig.bin b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_sig.bin new file mode 100644 index 0000000..3e885af Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_ta.der b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_ta.der new file mode 100644 index 0000000..ba2ad26 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Ed25519-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_both_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_both_priv.der new file mode 100644 index 0000000..9fed3fc Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_expandedkey_priv.der new file mode 100644 index 0000000..1441d51 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_seed_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_seed_priv.der new file mode 100644 index 0000000..1441d51 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_sig.bin b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_sig.bin new file mode 100644 index 0000000..922e25b Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_ta.der b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_ta.der new file mode 100644 index 0000000..5707f1f Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pkcs15-1.3.6.1.5.5.7.6.42_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_both_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_both_priv.der new file mode 100644 index 0000000..e8aa125 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_expandedkey_priv.der new file mode 100644 index 0000000..510ad85 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_seed_priv.der b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_seed_priv.der new file mode 100644 index 0000000..510ad85 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_sig.bin b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_sig.bin new file mode 100644 index 0000000..bf55039 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_ta.der b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_ta.der new file mode 100644 index 0000000..7e302ae Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa3072Pss-1.3.6.1.5.5.7.6.41_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_both_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_both_priv.der new file mode 100644 index 0000000..ddfe106 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_expandedkey_priv.der new file mode 100644 index 0000000..f29cb61 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_seed_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_seed_priv.der new file mode 100644 index 0000000..f29cb61 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_sig.bin b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_sig.bin new file mode 100644 index 0000000..c236824 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_ta.der b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_ta.der new file mode 100644 index 0000000..6cd062a Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pkcs15-1.3.6.1.5.5.7.6.44_ta.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_both_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_both_priv.der new file mode 100644 index 0000000..472b5fe Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_expandedkey_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_expandedkey_priv.der new file mode 100644 index 0000000..d03d846 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_seed_priv.der b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_seed_priv.der new file mode 100644 index 0000000..d03d846 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_sig.bin b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_sig.bin new file mode 100644 index 0000000..810db63 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_ta.der b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_ta.der new file mode 100644 index 0000000..31febe8 Binary files /dev/null and b/artifacts/r5_certs/MlDsa65Rsa4096Pss-1.3.6.1.5.5.7.6.43_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_both_priv.der b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_both_priv.der new file mode 100644 index 0000000..fc767b3 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_expandedkey_priv.der new file mode 100644 index 0000000..f4dde62 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_seed_priv.der b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_seed_priv.der new file mode 100644 index 0000000..f4dde62 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_sig.bin b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_sig.bin new file mode 100644 index 0000000..da7e2de Binary files /dev/null and b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_ta.der b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_ta.der new file mode 100644 index 0000000..92d1078 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87-2.16.840.1.101.3.4.3.19_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_both_priv.der b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_both_priv.der new file mode 100644 index 0000000..0c7249a Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_expandedkey_priv.der new file mode 100644 index 0000000..64985bd Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_seed_priv.der b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_seed_priv.der new file mode 100644 index 0000000..64985bd Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_sig.bin b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_sig.bin new file mode 100644 index 0000000..38bd7b9 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_ta.der b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_ta.der new file mode 100644 index 0000000..499cb44 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaBrainpoolP384r1-1.3.6.1.5.5.7.6.50_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_both_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_both_priv.der new file mode 100644 index 0000000..116f111 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_expandedkey_priv.der new file mode 100644 index 0000000..7cb566d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_seed_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_seed_priv.der new file mode 100644 index 0000000..7cb566d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_sig.bin b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_sig.bin new file mode 100644 index 0000000..ac4b463 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_ta.der b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_ta.der new file mode 100644 index 0000000..c5f3031 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP384-1.3.6.1.5.5.7.6.49_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_both_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_both_priv.der new file mode 100644 index 0000000..5d2c205 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_expandedkey_priv.der new file mode 100644 index 0000000..aafe2e7 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_seed_priv.der b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_seed_priv.der new file mode 100644 index 0000000..aafe2e7 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_sig.bin b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_sig.bin new file mode 100644 index 0000000..acc15f4 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_ta.der b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_ta.der new file mode 100644 index 0000000..bf32cd5 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87EcdsaP521-1.3.6.1.5.5.7.6.54_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_both_priv.der b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_both_priv.der new file mode 100644 index 0000000..4f59e8d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_expandedkey_priv.der new file mode 100644 index 0000000..830d67a Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_seed_priv.der b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_seed_priv.der new file mode 100644 index 0000000..830d67a Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_sig.bin b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_sig.bin new file mode 100644 index 0000000..171b859 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_ta.der b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_ta.der new file mode 100644 index 0000000..9fd3bde Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Ed448-1.3.6.1.5.5.7.6.51_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_both_priv.der b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_both_priv.der new file mode 100644 index 0000000..8dfce10 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_expandedkey_priv.der new file mode 100644 index 0000000..6e8c8c6 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_seed_priv.der b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_seed_priv.der new file mode 100644 index 0000000..6e8c8c6 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_sig.bin b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_sig.bin new file mode 100644 index 0000000..c5ece45 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_ta.der b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_ta.der new file mode 100644 index 0000000..2152e92 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa3072Pss-1.3.6.1.5.5.7.6.52_ta.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_both_priv.der b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_both_priv.der new file mode 100644 index 0000000..25a545d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_both_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_expandedkey_priv.der b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_expandedkey_priv.der new file mode 100644 index 0000000..b93ad9d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_seed_priv.der b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_seed_priv.der new file mode 100644 index 0000000..b93ad9d Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_seed_priv.der differ diff --git a/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_sig.bin b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_sig.bin new file mode 100644 index 0000000..b2a8808 Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_sig.bin differ diff --git a/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_ta.der b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_ta.der new file mode 100644 index 0000000..bc667cb Binary files /dev/null and b/artifacts/r5_certs/MlDsa87Rsa4096Pss-1.3.6.1.5.5.7.6.53_ta.der differ diff --git a/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ciphertext.bin b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ciphertext.bin new file mode 100644 index 0000000..9b2f4b7 --- /dev/null +++ b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ciphertext.bin @@ -0,0 +1 @@ +�~3�#�� ��Ο���kez$ ���<���� \ No newline at end of file diff --git a/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ee.der b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ee.der new file mode 100644 index 0000000..d3728a7 Binary files /dev/null and b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ee.der differ diff --git a/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_priv.der b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_priv.der new file mode 100644 index 0000000..4e66b2c Binary files /dev/null and b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_priv.der differ diff --git a/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ss.bin b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ss.bin new file mode 100644 index 0000000..6a905a9 Binary files /dev/null and b/artifacts/r5_certs/MlKem1024-2.16.840.1.101.3.4.4.3_ss.bin differ diff --git a/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ciphertext.bin b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ciphertext.bin new file mode 100644 index 0000000..0ef7057 --- /dev/null +++ b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ciphertext.bin @@ -0,0 +1,2 @@ +ߍλ�K�B���_}V� +?�����ҁ�Ss��t \ No newline at end of file diff --git a/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ee.der b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ee.der new file mode 100644 index 0000000..1abc4e4 Binary files /dev/null and b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ee.der differ diff --git a/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_priv.der b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_priv.der new file mode 100644 index 0000000..88e474f Binary files /dev/null and b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_priv.der differ diff --git a/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ss.bin b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ss.bin new file mode 100644 index 0000000..a0bceec Binary files /dev/null and b/artifacts/r5_certs/MlKem512-2.16.840.1.101.3.4.4.1_ss.bin differ diff --git a/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ciphertext.bin b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ciphertext.bin new file mode 100644 index 0000000..67e75ce --- /dev/null +++ b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ciphertext.bin @@ -0,0 +1 @@ +.-?*&G%{������d�bL��@���8[y� \ No newline at end of file diff --git a/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ee.der b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ee.der new file mode 100644 index 0000000..6e74f4c Binary files /dev/null and b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ee.der differ diff --git a/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_priv.der b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_priv.der new file mode 100644 index 0000000..c5fe6f3 Binary files /dev/null and b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_priv.der differ diff --git a/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ss.bin b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ss.bin new file mode 100644 index 0000000..cd42bf2 Binary files /dev/null and b/artifacts/r5_certs/MlKem768-2.16.840.1.101.3.4.4.2_ss.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_both_priv.der new file mode 100644 index 0000000..a976cc5 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_expandedkey_priv.der new file mode 100644 index 0000000..c8b94c7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_seed_priv.der new file mode 100644 index 0000000..c8b94c7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_sig.bin b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_sig.bin new file mode 100644 index 0000000..d25763b Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_ta.der b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_ta.der new file mode 100644 index 0000000..0dc3fb1 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128f-2.16.840.1.101.3.4.3.21_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_both_priv.der new file mode 100644 index 0000000..29ad4fd Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_expandedkey_priv.der new file mode 100644 index 0000000..96c15f2 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_seed_priv.der new file mode 100644 index 0000000..96c15f2 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_sig.bin b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_sig.bin new file mode 100644 index 0000000..f525e99 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_ta.der b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_ta.der new file mode 100644 index 0000000..b353875 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_128s-2.16.840.1.101.3.4.3.20_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_both_priv.der new file mode 100644 index 0000000..6a7cb22 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_expandedkey_priv.der new file mode 100644 index 0000000..98fb947 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_seed_priv.der new file mode 100644 index 0000000..98fb947 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_sig.bin b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_sig.bin new file mode 100644 index 0000000..2cf5667 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_ta.der b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_ta.der new file mode 100644 index 0000000..bc05e44 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192f-2.16.840.1.101.3.4.3.23_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_both_priv.der new file mode 100644 index 0000000..c4cd646 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_expandedkey_priv.der new file mode 100644 index 0000000..4c133c2 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_seed_priv.der new file mode 100644 index 0000000..4c133c2 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_sig.bin b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_sig.bin new file mode 100644 index 0000000..df77cb1 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_ta.der b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_ta.der new file mode 100644 index 0000000..7db93df Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_192s-2.16.840.1.101.3.4.3.22_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_both_priv.der new file mode 100644 index 0000000..cb2c9c4 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_expandedkey_priv.der new file mode 100644 index 0000000..4468690 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_seed_priv.der new file mode 100644 index 0000000..4468690 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_sig.bin b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_sig.bin new file mode 100644 index 0000000..72fc264 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_ta.der b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_ta.der new file mode 100644 index 0000000..8ac2a9f Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256f-2.16.840.1.101.3.4.3.25_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_both_priv.der b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_both_priv.der new file mode 100644 index 0000000..783e692 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_expandedkey_priv.der new file mode 100644 index 0000000..c5b6417 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_seed_priv.der b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_seed_priv.der new file mode 100644 index 0000000..c5b6417 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_sig.bin b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_sig.bin new file mode 100644 index 0000000..57014b6 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_ta.der b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_ta.der new file mode 100644 index 0000000..16597b7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaSha2_256s-2.16.840.1.101.3.4.3.24_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_both_priv.der b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_both_priv.der new file mode 100644 index 0000000..c736541 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_expandedkey_priv.der new file mode 100644 index 0000000..8b2bbd7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_seed_priv.der b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_seed_priv.der new file mode 100644 index 0000000..8b2bbd7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_sig.bin b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_sig.bin new file mode 100644 index 0000000..91bf6a5 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_ta.der b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_ta.der new file mode 100644 index 0000000..0456ab2 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128f-2.16.840.1.101.3.4.3.27_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_both_priv.der b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_both_priv.der new file mode 100644 index 0000000..14b52cc Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_expandedkey_priv.der new file mode 100644 index 0000000..c8f5d6d Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_seed_priv.der b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_seed_priv.der new file mode 100644 index 0000000..c8f5d6d Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_sig.bin b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_sig.bin new file mode 100644 index 0000000..5f59eee Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_ta.der b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_ta.der new file mode 100644 index 0000000..19b051b Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake128s-2.16.840.1.101.3.4.3.26_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_both_priv.der b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_both_priv.der new file mode 100644 index 0000000..6faf488 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_expandedkey_priv.der new file mode 100644 index 0000000..75db5d6 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_seed_priv.der b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_seed_priv.der new file mode 100644 index 0000000..75db5d6 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_sig.bin b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_sig.bin new file mode 100644 index 0000000..126d838 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_ta.der b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_ta.der new file mode 100644 index 0000000..c26dd0d Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192f-2.16.840.1.101.3.4.3.29_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_both_priv.der b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_both_priv.der new file mode 100644 index 0000000..1a13e0e Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_expandedkey_priv.der new file mode 100644 index 0000000..04a5d06 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_seed_priv.der b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_seed_priv.der new file mode 100644 index 0000000..04a5d06 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_sig.bin b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_sig.bin new file mode 100644 index 0000000..3c329dd Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_ta.der b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_ta.der new file mode 100644 index 0000000..1fca4bb Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake192s-2.16.840.1.101.3.4.3.28_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_both_priv.der b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_both_priv.der new file mode 100644 index 0000000..b700966 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_expandedkey_priv.der new file mode 100644 index 0000000..99ed361 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_seed_priv.der b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_seed_priv.der new file mode 100644 index 0000000..99ed361 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_sig.bin b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_sig.bin new file mode 100644 index 0000000..2b7b60b Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_ta.der b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_ta.der new file mode 100644 index 0000000..e207ca7 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256f-2.16.840.1.101.3.4.3.31_ta.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_both_priv.der b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_both_priv.der new file mode 100644 index 0000000..fafb282 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_both_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_expandedkey_priv.der b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_expandedkey_priv.der new file mode 100644 index 0000000..9f7e97e Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_expandedkey_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_seed_priv.der b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_seed_priv.der new file mode 100644 index 0000000..9f7e97e Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_seed_priv.der differ diff --git a/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_sig.bin b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_sig.bin new file mode 100644 index 0000000..169abfb Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_sig.bin differ diff --git a/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_ta.der b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_ta.der new file mode 100644 index 0000000..043ec44 Binary files /dev/null and b/artifacts/r5_certs/SlhDsaShake256s-2.16.840.1.101.3.4.3.30_ta.der differ diff --git a/src/asn1/asn_util.rs b/src/asn1/asn_util.rs index e9d1bf5..0315588 100644 --- a/src/asn1/asn_util.rs +++ b/src/asn1/asn_util.rs @@ -9,6 +9,7 @@ use crate::{ }; // Change the alias to use `QuantCryptError`. +#[allow(dead_code)] type Result = std::result::Result; /// Convert an OID string to a DER encoded byte array @@ -25,6 +26,11 @@ type Result = std::result::Result; /// # Errors /// /// `QuantCryptError::InvalidOid` will be returned if the OID is invalid +/// +/// Retained as a general-purpose utility (and exercised by the unit test +/// below); the composite constructions now use fixed per-algorithm Labels +/// rather than DER-encoded OIDs as domain separators. +#[allow(dead_code)] pub fn oid_to_der(oid: &str) -> Result> { let oid = ObjectIdentifier::new_unwrap(oid) .to_der() @@ -116,26 +122,21 @@ mod tests { #[test] fn test_oid_to_der() { - // This tests the Domain separator encoding: - //https://lamps-wg.github.io/draft-composite-kem/draft-ietf-lamps-pq-composite-kem.html#name-algorithm-identifiers - - let oid_tests = vec![ - ("2.16.840.1.114027.80.5.2.21", "060B6086480186FA6B50050215"), - ("2.16.840.1.114027.80.5.2.22", "060B6086480186FA6B50050216"), - ("2.16.840.1.114027.80.5.2.23", "060B6086480186FA6B50050217"), - ("2.16.840.1.114027.80.5.2.24", "060B6086480186FA6B50050218"), - ("2.16.840.1.114027.80.5.2.25", "060B6086480186FA6B50050219"), - ("2.16.840.1.114027.80.5.2.26", "060B6086480186FA6B5005021A"), - ("2.16.840.1.114027.80.5.2.27", "060B6086480186FA6B5005021B"), - ("2.16.840.1.114027.80.5.2.28", "060B6086480186FA6B5005021C"), - ("2.16.840.1.114027.80.5.2.29", "060B6086480186FA6B5005021D"), - ("2.16.840.1.114027.80.8.1.1", "060B6086480186FA6B50080101"), + use der::Decode; + + // Round-trip a representative set of production composite OIDs + // (draft-ietf-lamps-pq-composite-sigs-19 / -kem-15). + let oids = vec![ + "1.3.6.1.5.5.7.6.37", // MLDSA44-RSA2048-PSS-SHA256 + "1.3.6.1.5.5.7.6.54", // MLDSA87-ECDSA-P521-SHA512 + "1.3.6.1.5.5.7.6.55", // MLKEM768-RSA2048 + "1.3.6.1.5.5.7.6.66", // MLKEM1024-ECDH-P521 ]; - for (oid, hex_string) in oid_tests { + for oid in oids { let der = oid_to_der(oid).unwrap(); - let expected_der = hex::decode(hex_string).unwrap(); - assert_eq!(expected_der, der); + let decoded = ObjectIdentifier::from_der(&der).unwrap(); + assert_eq!(decoded.to_string(), oid); } } } diff --git a/src/asn1/certificate.rs b/src/asn1/certificate.rs index 2714538..3f66557 100644 --- a/src/asn1/certificate.rs +++ b/src/asn1/certificate.rs @@ -24,7 +24,7 @@ type Result = std::result::Result; /// # Example /// ``` /// use quantcrypt::certificates::Certificate; -/// let cert_path = "test/data/MlDsa44EcdsaP256Sha256-2.16.840.1.114027.80.8.1.43_ta.der"; +/// let cert_path = "test/data/bc_artifacts_certs_r4/ml-dsa-44-2.16.840.1.101.3.4.3.17_ta.der"; /// let cert = Certificate::from_file(cert_path).unwrap(); /// assert!(cert.verify_self_signed().unwrap()); /// ``` @@ -541,10 +541,14 @@ mod tests { fn test_bc_cert_artifacts() { let base_folder_path = "test/data/bc_artifacts_certs_r4/"; - // Check all the certificates that start with MLDSA + // Verify the pure ML-DSA and SLH-DSA certificates. The R4 composite + // certificates (uppercase "MLDSA"/"HashMLDSA", old Entrust-arc OIDs + // 2.16.840.1.114027.80.8.1.x) use a superseded composite draft and are + // intentionally skipped now that the library tracks + // draft-ietf-lamps-pq-composite-sigs-19. Cross-provider composite + // interop should be validated against R5 artifacts. let files = std::fs::read_dir(base_folder_path).unwrap(); - let ml_dsa_composites_prefix = "MLDSA"; let ml_dsa_pure_prefix = "ml-dsa"; let slh_dsa_prefix = "slh-dsa"; for file in files { @@ -552,10 +556,7 @@ mod tests { let path = file.path(); let path = path.to_str().unwrap(); - if !path.contains(ml_dsa_composites_prefix) - && !path.contains(slh_dsa_prefix) - && !path.contains(ml_dsa_pure_prefix) - { + if !path.contains(slh_dsa_prefix) && !path.contains(ml_dsa_pure_prefix) { continue; } @@ -608,4 +609,263 @@ mod tests { println!("Verified: {}", path); } } + + /// Cross-provider interop gate for the draft-19 composite signatures. + /// + /// Loads the self-signed trust-anchor certificates produced by the IETF + /// Hackathon composite-signatures *reference implementation* (R5 artifacts, + /// production OID arc 1.3.6.1.5.5.7.6.37-.54) and verifies each signature. + /// A pass proves that our Prefix / Label / pre-hash construction is + /// byte-for-byte compatible with the reference implementation for every one + /// of the 18 composite ML-DSA algorithms (plus the pure ML-DSA anchors). + #[test] + fn test_r5_composite_sig_interop() { + let base = "test/data/r5_interop/composite-sigs-ref-impl/"; + let files = std::fs::read_dir(base).unwrap(); + let mut verified = 0usize; + for file in files { + let path = file.unwrap().path(); + let name = path.file_name().unwrap().to_str().unwrap(); + // Only self-signed trust anchors carry a verifiable signature here. + if !name.ends_with("_ta.der") { + continue; + } + let cert = crate::certificates::Certificate::from_file(path.to_str().unwrap()).unwrap(); + assert!( + cert.verify_self_signed().unwrap(), + "reference-impl cert failed to verify: {name}" + ); + verified += 1; + println!("Verified R5 ref-impl TA: {name}"); + } + // 18 composite algorithms + 3 pure ML-DSA anchors. + assert!( + verified >= 18, + "expected >=18 verified reference-impl anchors, got {verified}" + ); + } + + /// Cross-provider interop check for the draft-15 composite KEM public-key + /// encoding. Loads the composite KEM end-entity certificates from the IETF + /// Hackathon composite-KEM *reference implementation* (R5 artifacts, + /// production OID arc 1.3.6.1.5.5.7.6.55-.66), parses each `mlkemPK || + /// tradPK` public key, and performs an encapsulation. A pass proves our + /// composite public-key deserialization and encapsulation path are + /// compatible with the reference implementation's published keys. + #[test] + fn test_r5_composite_kem_interop() { + let base = "test/data/r5_interop/composite-kem-ref-impl/"; + let files = std::fs::read_dir(base).unwrap(); + let mut encapsulated = 0usize; + for file in files { + let path = file.unwrap().path(); + let name = path.file_name().unwrap().to_str().unwrap(); + if !name.ends_with("_ee.der") || !name.contains("1.3.6.1.5.5.7.6.") { + continue; + } + let cert = crate::certificates::Certificate::from_file(path.to_str().unwrap()).unwrap(); + let pk = cert.get_public_key().unwrap(); + pk.encap() + .unwrap_or_else(|e| panic!("encap failed for {name}: {e:?}")); + encapsulated += 1; + println!("Encapsulated to R5 ref-impl composite KEM: {name}"); + } + assert!( + encapsulated >= 12, + "expected >=12 composite KEM encapsulations, got {encapsulated}" + ); + } + + /// Cross-provider interop for draft-19 composite *private* keys. + /// + /// Loads each composite signature private key produced by the reference + /// implementation (PKCS#8 `mldsaSeed || tradSK`, production OID arc), signs a + /// message with it, and verifies the signature against the matching trust + /// anchor's public key. A pass proves our ML-DSA seed expansion and + /// traditional-key decoding reconstruct exactly the reference key pair. + #[test] + fn test_r5_composite_sig_privkey_interop() { + let base = "test/data/r5_interop/composite-sigs-ref-impl/"; + let msg = b"quantcrypt composite private-key interop test"; + let mut count = 0usize; + for file in std::fs::read_dir(base).unwrap() { + let path = file.unwrap().path(); + let name = path.file_name().unwrap().to_str().unwrap().to_string(); + if !name.ends_with("_priv.der") || !name.contains("1.3.6.1.5.5.7.6.") { + continue; + } + let prefix = name.strip_suffix("_priv.der").unwrap(); + let sk = crate::keys::PrivateKey::from_file(path.to_str().unwrap()) + .unwrap_or_else(|e| panic!("load sig priv {name}: {e:?}")); + let ta = crate::certificates::Certificate::from_file(&format!("{base}{prefix}_ta.der")) + .unwrap(); + let pk = ta.get_public_key().unwrap(); + let sig = sk + .sign(msg) + .unwrap_or_else(|e| panic!("sign with {name}: {e:?}")); + assert!( + pk.verify(msg, &sig).unwrap(), + "signature from ref-impl private key {name} failed to verify" + ); + count += 1; + } + assert!( + count >= 18, + "expected >=18 composite sig private-key interop, got {count}" + ); + } + + /// Cross-provider interop for draft-15 composite *private* keys, using the + /// reference implementation's full decapsulation vectors. + /// + /// For each composite KEM private key (PKCS#8 `mlkemSeed || tradSK`), loads + /// it, decapsulates the reference `_ciphertext.bin`, and asserts the derived + /// shared secret equals the reference `_ss.bin`. This validates, end-to-end + /// against the reference implementation, our ML-KEM seed expansion, the + /// traditional-key decoding, the tradPK recomputation, and the SHA3-256 KEM + /// combiner. + #[test] + fn test_r5_composite_kem_privkey_interop() { + let base = "test/data/r5_interop/composite-kem-ref-impl/"; + let mut count = 0usize; + for file in std::fs::read_dir(base).unwrap() { + let path = file.unwrap().path(); + let name = path.file_name().unwrap().to_str().unwrap().to_string(); + if !name.ends_with("_priv.der") || !name.contains("1.3.6.1.5.5.7.6.") { + continue; + } + let prefix = name.strip_suffix("_priv.der").unwrap(); + let ct = std::fs::read(format!("{base}{prefix}_ciphertext.bin")).unwrap(); + let expected_ss = std::fs::read(format!("{base}{prefix}_ss.bin")).unwrap(); + let sk = crate::keys::PrivateKey::from_file(path.to_str().unwrap()) + .unwrap_or_else(|e| panic!("load kem priv {name}: {e:?}")); + let ss = sk + .decap(&ct) + .unwrap_or_else(|e| panic!("decap with {name}: {e:?}")); + assert_eq!( + ss, expected_ss, + "decapsulated shared secret mismatch for {name}" + ); + count += 1; + } + assert!( + count >= 12, + "expected >=12 composite KEM decap vectors, got {count}" + ); + } + + /// Cross-provider interop for the draft-19/-15 composite algorithms against + /// GREEN R5 artifacts submitted by independent third parties (Bouncy Castle, + /// Entrust, Crypto4A, CryptoNext, leancrypto) — not our own submission and + /// not only the reference implementation. For each provider we verify every + /// composite signature self-signed cert (`*_ta.der`); load every composite + /// signature private key, sign, and verify the signature against that + /// provider's trust-anchor public key; and load every composite KEM private + /// key, decapsulate that provider's `*_ciphertext.bin`, and assert the + /// result equals its `*_ss.bin`. Any load/verify/decap failure fails the + /// test (no silent skipping). + #[test] + fn test_r5_cross_provider_interop() { + let base = "test/data/r5_interop/providers"; + // Minimum composite artifacts expected per provider (0 => provider dir + // may be absent; leancrypto only submitted 3 composite signatures). + let providers = [ + ("bc", 18, 12), + ("entrust", 18, 12), + ("crypto4a", 18, 12), + ("cryptonext", 18, 12), + ("leancrypto", 3, 0), + ]; + let mut total_sig = 0usize; + let mut total_kem = 0usize; + for (prov, min_sig, min_kem) in providers { + let dir = format!("{base}/{prov}"); + let files: Vec = match std::fs::read_dir(&dir) { + Ok(rd) => rd.filter_map(|e| e.ok()).map(|e| e.path()).collect(), + Err(_) => panic!("missing provider corpus: {dir}"), + }; + let find = |suffix: &str, oid: &str| -> Option { + files + .iter() + .find(|p| { + let n = p.file_name().unwrap().to_str().unwrap(); + n.ends_with(suffix) && n.contains(oid) + }) + .cloned() + }; + let msg = b"cross-provider composite interop"; + + // Signatures (.37-.54): verify TA, and sign+verify with the priv key. + let mut sig_ok = 0; + for oidn in 37..=54 { + let oid = format!("1.3.6.1.5.5.7.6.{oidn}_"); + let Some(ta_p) = find("_ta.der", &oid) else { + continue; + }; + let ta = crate::certificates::Certificate::from_file(ta_p.to_str().unwrap()) + .unwrap_or_else(|e| panic!("{prov} load TA .{oidn}: {e:?}")); + assert!( + ta.verify_self_signed().unwrap(), + "{prov}: TA .{oidn} failed self-verify" + ); + if let Some(priv_p) = find("_priv.der", &oid) { + let sk = crate::keys::PrivateKey::from_file(priv_p.to_str().unwrap()) + .unwrap_or_else(|e| panic!("{prov} load sig priv .{oidn}: {e:?}")); + let sig = sk + .sign(msg) + .unwrap_or_else(|e| panic!("{prov} sign .{oidn}: {e:?}")); + assert!( + ta.get_public_key().unwrap().verify(msg, &sig).unwrap(), + "{prov}: signature by priv .{oidn} did not verify against its TA" + ); + } + sig_ok += 1; + } + assert!( + sig_ok >= min_sig, + "{prov}: expected >={min_sig} composite sig certs, got {sig_ok}" + ); + total_sig += sig_ok; + + // KEM (.55-.66): decap the provider ciphertext, compare to its ss. + let mut kem_ok = 0; + for oidn in 55..=66 { + let oid = format!("1.3.6.1.5.5.7.6.{oidn}_"); + let (Some(priv_p), Some(ct_p), Some(ss_p)) = ( + find("_priv.der", &oid), + find("_ciphertext.bin", &oid), + find("_ss.bin", &oid), + ) else { + continue; + }; + let sk = crate::keys::PrivateKey::from_file(priv_p.to_str().unwrap()) + .unwrap_or_else(|e| panic!("{prov} load kem priv .{oidn}: {e:?}")); + let ct = std::fs::read(&ct_p).unwrap(); + let ss = sk + .decap(&ct) + .unwrap_or_else(|e| panic!("{prov} decap .{oidn}: {e:?}")); + assert_eq!( + ss, + std::fs::read(&ss_p).unwrap(), + "{prov}: KEM .{oidn} shared secret mismatch" + ); + kem_ok += 1; + } + assert!( + kem_ok >= min_kem, + "{prov}: expected >={min_kem} composite KEM vectors, got {kem_ok}" + ); + total_kem += kem_ok; + println!("{prov}: {sig_ok} sig + {kem_ok} kem composite artifacts verified"); + } + // 4 full providers x (18 sig + 12 kem) + leancrypto 3 sig = 75 sig, 48 kem. + assert!( + total_sig >= 75, + "expected >=75 cross-provider sig checks, got {total_sig}" + ); + assert!( + total_kem >= 48, + "expected >=48 cross-provider kem checks, got {total_kem}" + ); + } } diff --git a/src/asn1/composite_private_key.rs b/src/asn1/composite_private_key.rs index 4103f58..66b939f 100644 --- a/src/asn1/composite_private_key.rs +++ b/src/asn1/composite_private_key.rs @@ -1,205 +1,70 @@ -use der::asn1::OctetString; use der::zeroize::Zeroize; -use der::{Decode, Encode}; -use der_derive::Sequence; -use pkcs8::PrivateKeyInfo; use crate::QuantCryptError; -use super::asn_util::is_dsa_oid; - type Result = std::result::Result; -#[derive(Debug, Clone, Sequence)] -/// CompositeSignaturePrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey -/// CompositeKEMPrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey -struct CompositeKEMPrivateKey<'a> { - pq_sk: PrivateKeyInfo<'a>, - trad_sk: PrivateKeyInfo<'a>, -} - -#[derive(Debug, Clone, Sequence)] -/// CompositeSignaturePrivateKey ::= SEQUENCE SIZE (2) OF OctetString -struct CompositeSignaturePrivateKey { - pq_sk: OctetString, - trad_sk: OctetString, -} - -/// A private key for a composite DSA / KEM +/// A private key for a composite DSA / KEM. +/// +/// Per draft-ietf-lamps-pq-composite-sigs-19 §4.2 and +/// draft-ietf-lamps-pq-composite-kem-15 §4.2, the composite private key is the +/// raw concatenation of the post-quantum *seed* with the traditional private +/// key: `pqSeed || tradSK`. The post-quantum seed is 32 bytes for ML-DSA and 64 +/// bytes (`d || z`) for ML-KEM. The traditional private key is in the encoding +/// appropriate to its algorithm (raw for Ed/X, DER `ECPrivateKey` for ECDSA/ECDH, +/// DER `RSAPrivateKey` for RSA). This byte string is carried directly in the +/// `privateKey` OCTET STRING of the enclosing OneAsymmetricKey. #[derive(Zeroize)] pub struct CompositePrivateKey { - /// The private key for the post-quantum DSA / KEM - pq_sk_der: Vec, - /// The private key for the traditional DSA / KEM - trad_sk_der: Vec, + /// The post-quantum seed (32 bytes for ML-DSA, 64 bytes for ML-KEM) + pq_seed: Vec, + /// The traditional private key in its component-appropriate encoding + trad_sk: Vec, /// The OID for the composite DSA / KEM oid: String, } impl CompositePrivateKey { - /// Create a new composite KEM private key - /// - /// # Arguments - /// - /// * `oid` - The OID for the composite KEM - /// * `pq_sk` - The private key for the post-quantum KEM - /// * `trad_sk` - The private key for the traditional KEM - /// - /// # Returns - /// - /// A new composite KEM private key - pub fn new_kem( - oid: &str, - pq_sk: &PrivateKeyInfo<'_>, - trad_sk: &PrivateKeyInfo<'_>, - ) -> Result { - let pq_sk_der = pq_sk - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - let trad_sk_der = trad_sk - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(Self { - pq_sk_der, - trad_sk_der, - oid: oid.to_string(), - }) - } - - /// Create a new composite DSA private key - /// - /// # Arguments - /// - /// * `oid` - The OID for the composite DSA - /// * `pq_sk` - The private key for the post-quantum DSA - /// * `trad_sk` - The private key for the traditional DSA - /// - /// # Returns - /// - /// A new composite DSA private key - pub fn new_dsa(oid: &str, pq_sk: &OctetString, trad_sk: &OctetString) -> Result { - let pq_sk_der = pq_sk - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - let trad_sk_der = trad_sk - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(Self { - pq_sk_der, - trad_sk_der, + /// Create a new composite private key from the post-quantum seed and the + /// (already component-encoded) traditional private key. + pub fn new(oid: &str, pq_seed: &[u8], trad_sk: &[u8]) -> Self { + Self { + pq_seed: pq_seed.to_vec(), + trad_sk: trad_sk.to_vec(), oid: oid.to_string(), - }) + } } /// Get the OID for the composite DSA / KEM - /// - /// # Returns - /// - /// The OID for the composite DSA / KEM pub fn get_oid(&self) -> &str { &self.oid } - /// Get the private key for the post-quantum KEM - /// - /// # Returns - /// - /// The private key for the post-quantum KEM - pub fn get_kem_pq_sk(&self) -> Result> { - let res = PrivateKeyInfo::from_der(self.pq_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) - } - - /// Get the private key for the post-quantum DSA - /// - /// # Returns - /// - /// The private key for the post-quantum DSA - pub fn get_dsa_pq_sk(&self) -> Result { - let res = OctetString::from_der(self.pq_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) + /// Get the post-quantum seed. + pub fn get_pq_seed(&self) -> Vec { + self.pq_seed.clone() } - /// Get the private key for the traditional KEM - /// - /// # Returns - /// - /// The private key for the traditional KEM - pub fn get_kem_trad_sk(&self) -> Result> { - let res = PrivateKeyInfo::from_der(self.trad_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) + /// Get the traditional private key (component-appropriate encoding). + pub fn get_trad_sk(&self) -> Vec { + self.trad_sk.clone() } - /// Get the private key for the traditional DSA - /// - /// # Returns - /// - /// The private key for the traditional DSA - pub fn get_dsa_trad_sk(&self) -> Result { - let res = OctetString::from_der(self.trad_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) - } - - /// Create a new composite private key from a DER-encoded private key - /// - /// # Arguments - /// - /// * `oid` - The OID for the composite DSA / KEM - /// * `der` - The DER-encoded private key - /// - /// # Returns - /// - /// A new composite private key - pub fn from_der(oid: &str, der: &[u8]) -> Result { - // Check whether this is a DSA OID or a KEM OID - if is_dsa_oid(oid) { - let key_data = CompositeSignaturePrivateKey::from_der(der) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - let comp = CompositePrivateKey::new_dsa(oid, &key_data.pq_sk, &key_data.trad_sk) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(comp) - } else { - let key_data = CompositeKEMPrivateKey::from_der(der) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - let comp = CompositePrivateKey::new_kem(oid, &key_data.pq_sk, &key_data.trad_sk) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(comp) + /// Deserialize `pqSeed || tradSK`, splitting at the fixed post-quantum seed + /// length (`pq_seed_len` = 32 for ML-DSA, 64 for ML-KEM). + pub fn from_der(oid: &str, der: &[u8], pq_seed_len: usize) -> Result { + if der.len() < pq_seed_len { + return Err(QuantCryptError::InvalidPrivateKey); } + let (pq_seed, trad_sk) = der.split_at(pq_seed_len); + Ok(Self::new(oid, pq_seed, trad_sk)) } - /// Encode the composite private key as a DER-encoded private key - /// - /// # Returns - /// - /// The DER-encoded private key + /// Serialize as `pqSeed || tradSK`. pub fn to_der(&self) -> Result> { - // Check whether this is a DSA OID or a KEM OID - if is_dsa_oid(&self.oid) { - let key_data = CompositeSignaturePrivateKey { - pq_sk: OctetString::from_der(self.pq_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?, - trad_sk: OctetString::from_der(self.trad_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?, - }; - let res = key_data - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) - } else { - let key_data = CompositeKEMPrivateKey { - pq_sk: PrivateKeyInfo::from_der(self.pq_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?, - trad_sk: PrivateKeyInfo::from_der(self.trad_sk_der.as_slice()) - .map_err(|_| QuantCryptError::InvalidPrivateKey)?, - }; - let res = key_data - .to_der() - .map_err(|_| QuantCryptError::InvalidPrivateKey)?; - Ok(res) - } + let mut out = Vec::with_capacity(self.pq_seed.len() + self.trad_sk.len()); + out.extend_from_slice(&self.pq_seed); + out.extend_from_slice(&self.trad_sk); + Ok(out) } } diff --git a/src/asn1/composite_public_key.rs b/src/asn1/composite_public_key.rs index 8055ed0..1d75fd9 100644 --- a/src/asn1/composite_public_key.rs +++ b/src/asn1/composite_public_key.rs @@ -1,18 +1,13 @@ -use der::{asn1::BitString, Decode, Encode}; -use der_derive::Sequence; - use crate::QuantCryptError; type Result = std::result::Result; -/// CompositeSignaturePublicKey ::= SEQUENCE SIZE (2) OF BIT STRING -/// CompositeKEMPublicKey ::= SEQUENCE SIZE (2) OF BIT STRING -#[derive(Debug, Clone, Sequence)] -struct CompositeSigKemPublicKey { - pq_pk: BitString, - trad_pk: BitString, -} - +/// The composite public key serialization for both Composite ML-DSA +/// (draft-ietf-lamps-pq-composite-sigs-19 Section 4.1) and Composite ML-KEM +/// (draft-ietf-lamps-pq-composite-kem-15 Section 4.1) is the simple +/// concatenation of the post-quantum public key with the traditional public +/// key: `pqPK || tradPK`. On deserialization the fixed-length post-quantum +/// component is split off the front and the remainder is the traditional key. #[derive(Debug, Clone)] /// A public key for a composite DSA / KEM pub struct CompositePublicKey { @@ -80,43 +75,29 @@ impl CompositePublicKey { /// # Returns /// /// A new composite public key - pub fn from_der(oid: &str, der: &[u8]) -> Result { - // Parse as compressed public key - let comp_pk = CompositeSigKemPublicKey::from_der(der) - .map_err(|_| QuantCryptError::InvalidPublicKey)?; - - let pq_pk = if let Some(pq_pk) = comp_pk.pq_pk.as_bytes() { - pq_pk - } else { - return Err(QuantCryptError::InvalidPublicKey); - }; - - let trad_pk = if let Some(trad_pk) = comp_pk.trad_pk.as_bytes() { - trad_pk - } else { + /// # Arguments + /// + /// * `oid` - The OID for the composite DSA / KEM + /// * `der` - The serialized composite public key (`pqPK || tradPK`) + /// * `pq_len` - The fixed byte length of the post-quantum (ML-DSA / ML-KEM) + /// public key, used as the split point. + pub fn from_der(oid: &str, der: &[u8], pq_len: usize) -> Result { + if der.len() < pq_len { return Err(QuantCryptError::InvalidPublicKey); - }; - + } + let (pq_pk, trad_pk) = der.split_at(pq_len); Ok(CompositePublicKey::new(oid, pq_pk, trad_pk)) } - /// Encode the composite public key as a DER-encoded public key + /// Encode the composite public key as `pqPK || tradPK`. /// /// # Returns /// - /// The DER-encoded public key + /// The serialized composite public key pub fn to_der(&self) -> Result> { - let comp_sig_pk = CompositeSigKemPublicKey { - pq_pk: BitString::new(0, self.pq_pk.as_slice()) - .map_err(|_| QuantCryptError::InvalidPublicKey)?, - trad_pk: BitString::new(0, self.trad_pk.as_slice()) - .map_err(|_| QuantCryptError::InvalidPublicKey)?, - }; - - let comp_sig_pk = comp_sig_pk - .to_der() - .map_err(|_| QuantCryptError::InvalidPublicKey)?; - - Ok(comp_sig_pk.as_slice().to_vec()) + let mut out = Vec::with_capacity(self.pq_pk.len() + self.trad_pk.len()); + out.extend_from_slice(&self.pq_pk); + out.extend_from_slice(&self.trad_pk); + Ok(out) } } diff --git a/src/asn1/private_key.rs b/src/asn1/private_key.rs index 762a5c6..f0d3a18 100644 --- a/src/asn1/private_key.rs +++ b/src/asn1/private_key.rs @@ -374,32 +374,30 @@ mod test { #[test] fn test_composite_private_key() { - // let mut keygen = crate::dsa::api::key_generator::DsaKeyGenerator::new( - // crate::dsa::api::algorithm::DsaAlgorithm::MlDsa44EcdsaP256Sha256, - // ); - // let (pk, sk) = keygen.generate().unwrap(); - // sk.to_pem_file("test/data/mldsa44_ecdsa_p256_sha256_sk.pem").unwrap(); - let pem_bytes = include_bytes!("../../test/data/mldsa44_ecdsa_p256_sha256_sk.pem"); - let pem = std::str::from_utf8(pem_bytes).unwrap().trim(); - let pk = PrivateKey::from_pem(pem).unwrap(); + use crate::dsa::api::algorithm::DsaAlgorithm; + use crate::dsa::api::key_generator::DsaKeyGenerator; + + // Generate a fresh composite key (draft-19 MLDSA44-ECDSA-P256, OID + // 1.3.6.1.5.5.7.6.40) and exercise the PEM/DER round-trip. + let (_, pk) = DsaKeyGenerator::new(DsaAlgorithm::MlDsa44EcdsaP256) + .generate() + .unwrap(); assert!(pk.is_composite()); - assert_eq!( - pk.get_oid(), - PrehashDsaType::HashMlDsa44EcdsaP256Sha256.get_oid() - ); + assert_eq!(pk.get_oid(), PrehashDsaType::MlDsa44EcdsaP256.get_oid()); - let key_bytes = pk.get_key(); - let pk2 = CompositePrivateKey::from_der(&pk.oid, &key_bytes).unwrap(); + let pem = pk.to_pem().unwrap(); + let pk_parsed = PrivateKey::from_pem(pem.trim()).unwrap(); + assert_eq!(pk.oid, pk_parsed.oid); - assert_eq!(pk.oid, pk2.get_oid()); + let key_bytes = pk_parsed.get_key(); + // ML-DSA-44 seed length (the split point for the composite private key). + let pk2 = CompositePrivateKey::from_der(&pk_parsed.oid, key_bytes, 32).unwrap(); + assert_eq!(pk_parsed.oid, pk2.get_oid()); let pk2 = PrivateKey::from_composite(&pk2).unwrap(); let pem2 = pk2.to_pem().unwrap(); - assert_eq!(pem, pem2.trim()); - - let oid = PrehashDsaType::HashMlDsa44EcdsaP256Sha256.get_oid(); - assert_eq!(pk.oid, oid); + assert_eq!(pem.trim(), pem2.trim()); } #[test] @@ -469,20 +467,16 @@ mod test { #[test] fn test_sk_serialization_deserialization() { - // First write the private key to a file - // let mut dsa_key_gen = - // crate::dsas::DsaKeyGenerator::new(crate::dsas::DsaAlgorithm::MlDsa44EcdsaP256Sha256); - // let (pk, sk) = dsa_key_gen.generate().unwrap(); - // sk.to_pem_file("test/data/mldsa44_ecdsa_p256_sha256_sk.pem") - // .unwrap(); - - // pk.to_pem_file("test/data/mldsa44_ecdsa_p256_sha256_pk.pem").unwrap(); + use crate::dsa::api::algorithm::DsaAlgorithm; + use crate::dsa::api::key_generator::DsaKeyGenerator; - let pem_bytes = include_bytes!("../../test/data/mldsa44_ecdsa_p256_sha256_sk.pem"); - let pem = std::str::from_utf8(pem_bytes).unwrap().trim(); - let pk = PrivateKey::from_pem(pem).unwrap(); + // Generate a fresh composite private key and round-trip through DER/PEM. + let (_, sk) = DsaKeyGenerator::new(DsaAlgorithm::MlDsa44EcdsaP256) + .generate() + .unwrap(); + let pem = sk.to_pem().unwrap(); - let der = pk.to_der().unwrap(); + let der = sk.to_der().unwrap(); let pk2 = PrivateKey::from_der(&der).unwrap(); let pem2 = pk2.to_pem().unwrap(); assert_eq!(pem.trim(), pem2.trim()); diff --git a/src/asn1/public_key.rs b/src/asn1/public_key.rs index f43955f..484a099 100644 --- a/src/asn1/public_key.rs +++ b/src/asn1/public_key.rs @@ -371,27 +371,30 @@ mod test { #[test] fn test_composite_public_key() { - let pem_bytes = include_bytes!("../../test/data/mldsa44_ecdsa_p256_sha256_pk.pem"); - let pem = std::str::from_utf8(pem_bytes).unwrap().trim(); - let pk = PublicKey::from_pem(pem).unwrap(); + use crate::dsa::api::algorithm::DsaAlgorithm; + use crate::dsa::api::key_generator::DsaKeyGenerator; + + // Generate a fresh composite key (draft-19 MLDSA44-ECDSA-P256, OID + // 1.3.6.1.5.5.7.6.40) and exercise the PEM/DER round-trip. + let (pk, _) = DsaKeyGenerator::new(DsaAlgorithm::MlDsa44EcdsaP256) + .generate() + .unwrap(); assert!(pk.is_composite()); - assert_eq!( - pk.get_oid(), - PrehashDsaType::HashMlDsa44EcdsaP256Sha256.get_oid() - ); + assert_eq!(pk.get_oid(), PrehashDsaType::MlDsa44EcdsaP256.get_oid()); - let key_bytes = pk.get_key(); - let pk2 = CompositePublicKey::from_der(&pk.oid, &key_bytes).unwrap(); + let pem = pk.to_pem().unwrap(); + let pk_parsed = PublicKey::from_pem(pem.trim()).unwrap(); + assert_eq!(pk.oid, pk_parsed.oid); - assert_eq!(pk.oid, pk2.get_oid()); + let key_bytes = pk_parsed.get_key(); + // ML-DSA-44 public key length (the split point for the composite). + let pk2 = CompositePublicKey::from_der(&pk_parsed.oid, key_bytes, 1312).unwrap(); + assert_eq!(pk_parsed.oid, pk2.get_oid()); let pk2 = PublicKey::from_composite(&pk2).unwrap(); let pem2 = pk2.to_pem().unwrap(); - assert_eq!(pem, pem2.trim()); - - let oid = PrehashDsaType::HashMlDsa44EcdsaP256Sha256.get_oid(); - assert_eq!(pk.oid, oid); + assert_eq!(pem.trim(), pem2.trim()); } #[test] diff --git a/src/cms/cms_util.rs b/src/cms/cms_util.rs index 872e75e..32f5f25 100644 --- a/src/cms/cms_util.rs +++ b/src/cms/cms_util.rs @@ -280,7 +280,7 @@ mod tests { let ee = Certificate::from_der(ee_bytes).unwrap(); let result = ta.verify_child(&ee).unwrap(); - assert_eq!(result, true); + assert!(result); let enveloped = include_bytes!("../../test/data/cms/2.16.840.1.101.3.4.4.1_MlKem512_kemri_id-alg-hkdf-with-sha256_ukm.der"); diff --git a/src/cms/enveloped_data_builder.rs b/src/cms/enveloped_data_builder.rs index d7a4da2..ef55286 100644 --- a/src/cms/enveloped_data_builder.rs +++ b/src/cms/enveloped_data_builder.rs @@ -704,9 +704,9 @@ mod tests { #[test] fn gen_cms_artifacts() { - let ta_types = vec![DsaAlgorithm::MlDsa65, DsaAlgorithm::MlDsa87]; + let ta_types = [DsaAlgorithm::MlDsa65, DsaAlgorithm::MlDsa87]; - let kem_types = vec![ + let kem_types = [ vec![ KemAlgorithm::MlKem768, KemAlgorithm::MlKem768Rsa2048, @@ -893,8 +893,7 @@ mod tests { ta_cert.to_der_file(&ta_cert_path).unwrap(); let kem_types = &kem_types[i]; - for j in 0..kem_types.len() { - let kem_type = kem_types[j]; + for kem_type in kem_types.iter().copied() { let kem_oid = kem_type.get_oid(); let kem_friendly_name = kem_type.to_string(); @@ -1003,8 +1002,8 @@ mod tests { #[test] fn test_cw_cms_artifacts() { - let security_levels = vec!["512", "768", "1024"]; - let oids = vec!["1", "2", "3"]; // Last digit of OID + let security_levels = ["512", "768", "1024"]; + let oids = ["1", "2", "3"]; // Last digit of OID // Materials shared across all test combinations let expected_plaintext = @@ -1041,7 +1040,7 @@ mod tests { ); // Update base_filenames to contain the corresponding security level and oid - let base_filenames = vec![ + let base_filenames = [ format!( "2.16.840.1.101.3.4.4.{}_ML-KEM-{}_kemri_id-alg-hkdf-with-sha256.der", oid, security_level @@ -1088,18 +1087,15 @@ mod tests { let kemri_auth_ukm_path = &paths[3]; // Enveloped data - let enveloped_data = EnvelopedDataContent::from_file_for_kem_recipient( - &kemri_path, - &ee_cert, - &ee_sk, - ) - .unwrap(); + let enveloped_data = + EnvelopedDataContent::from_file_for_kem_recipient(kemri_path, &ee_cert, &ee_sk) + .unwrap(); let pt = enveloped_data.get_content(); assert_eq!(pt, expected_plaintext); // With ukm let enveloped_data_with_ukm = EnvelopedDataContent::from_file_for_kem_recipient( - &kemri_ukm_path, + kemri_ukm_path, &ee_cert, &ee_sk, ) @@ -1109,7 +1105,7 @@ mod tests { // Auth let auth_enveloped_data = AuthEnvelopedDataContent::from_file_for_kem_recipient( - &kemri_auth_path, + kemri_auth_path, &ee_cert, &ee_sk, ) @@ -1120,7 +1116,7 @@ mod tests { // Auth with ukm let auth_enveloped_data_with_ukm = AuthEnvelopedDataContent::from_file_for_kem_recipient( - &kemri_auth_ukm_path, + kemri_auth_ukm_path, &ee_cert, &ee_sk, ) diff --git a/src/dsa/api/algorithm.rs b/src/dsa/api/algorithm.rs index 2f69b31..228475c 100644 --- a/src/dsa/api/algorithm.rs +++ b/src/dsa/api/algorithm.rs @@ -16,37 +16,25 @@ pub enum DsaAlgorithm { HashMlDsa65, HashMlDsa87, - // Composite DSAs + // Composite ML-DSA (draft-ietf-lamps-pq-composite-sigs-19) MlDsa44Rsa2048Pss, MlDsa44Rsa2048Pkcs15, MlDsa44Ed25519, MlDsa44EcdsaP256, MlDsa65Rsa3072Pss, MlDsa65Rsa3072Pkcs15, + MlDsa65Rsa4096Pss, + MlDsa65Rsa4096Pkcs15, + MlDsa65EcdsaP256, MlDsa65EcdsaP384, MlDsa65EcdsaBrainpoolP256r1, MlDsa65Ed25519, MlDsa87EcdsaP384, MlDsa87EcdsaBrainpoolP384r1, MlDsa87Ed448, - MlDsa65Rsa4096Pss, - MlDsa65Rsa4096Pkcs15, - - // Composite DSAs Prehash - HashMlDsa44Rsa2048PssSha256, - HashMlDsa44Rsa2048Pkcs15Sha256, - HashMlDsa44Ed25519Sha512, - HashMlDsa44EcdsaP256Sha256, - HashMlDsa65Rsa3072PssSha512, - HashMlDsa65Rsa3072Pkcs15Sha512, - HashMlDsa65Rsa4096PssSha512, - HashMlDsa65Rsa4096Pkcs15Sha512, - HashMlDsa65EcdsaP384Sha512, - HashMlDsa65EcdsaBrainpoolP256r1Sha512, - HashMlDsa65Ed25519Sha512, - HashMlDsa87EcdsaP384Sha512, - HashMlDsa87EcdsaBrainpoolP384r1Sha512, - HashMlDsa87Ed448Sha512, + MlDsa87Rsa3072Pss, + MlDsa87Rsa4096Pss, + MlDsa87EcdsaP521, // Pure SLH-DSAs SlhDsaSha2_128s, @@ -101,13 +89,16 @@ impl DsaAlgorithm { DsaAlgorithm::HashMlDsa65 => Some(PrehashDsaType::HashMlDsa65), DsaAlgorithm::HashMlDsa87 => Some(PrehashDsaType::HashMlDsa87), - // Composite DSAs + // Composite ML-DSA (draft-19) DsaAlgorithm::MlDsa44Rsa2048Pss => Some(PrehashDsaType::MlDsa44Rsa2048Pss), DsaAlgorithm::MlDsa44Rsa2048Pkcs15 => Some(PrehashDsaType::MlDsa44Rsa2048Pkcs15), DsaAlgorithm::MlDsa44Ed25519 => Some(PrehashDsaType::MlDsa44Ed25519), DsaAlgorithm::MlDsa44EcdsaP256 => Some(PrehashDsaType::MlDsa44EcdsaP256), DsaAlgorithm::MlDsa65Rsa3072Pss => Some(PrehashDsaType::MlDsa65Rsa3072Pss), DsaAlgorithm::MlDsa65Rsa3072Pkcs15 => Some(PrehashDsaType::MlDsa65Rsa3072Pkcs15), + DsaAlgorithm::MlDsa65Rsa4096Pss => Some(PrehashDsaType::MlDsa65Rsa4096Pss), + DsaAlgorithm::MlDsa65Rsa4096Pkcs15 => Some(PrehashDsaType::MlDsa65Rsa4096Pkcs15), + DsaAlgorithm::MlDsa65EcdsaP256 => Some(PrehashDsaType::MlDsa65EcdsaP256), DsaAlgorithm::MlDsa65EcdsaP384 => Some(PrehashDsaType::MlDsa65EcdsaP384), DsaAlgorithm::MlDsa65EcdsaBrainpoolP256r1 => { Some(PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1) @@ -118,50 +109,9 @@ impl DsaAlgorithm { Some(PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1) } DsaAlgorithm::MlDsa87Ed448 => Some(PrehashDsaType::MlDsa87Ed448), - DsaAlgorithm::MlDsa65Rsa4096Pss => Some(PrehashDsaType::MlDsa65Rsa4096Pss), - DsaAlgorithm::MlDsa65Rsa4096Pkcs15 => Some(PrehashDsaType::MlDsa65Rsa4096Pkcs15), - - // Composite DSAs Prehash - DsaAlgorithm::HashMlDsa44Rsa2048PssSha256 => { - Some(PrehashDsaType::HashMlDsa44Rsa2048PssSha256) - } - DsaAlgorithm::HashMlDsa44Rsa2048Pkcs15Sha256 => { - Some(PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256) - } - DsaAlgorithm::HashMlDsa44Ed25519Sha512 => { - Some(PrehashDsaType::HashMlDsa44Ed25519Sha512) - } - DsaAlgorithm::HashMlDsa44EcdsaP256Sha256 => { - Some(PrehashDsaType::HashMlDsa44EcdsaP256Sha256) - } - DsaAlgorithm::HashMlDsa65Rsa3072PssSha512 => { - Some(PrehashDsaType::HashMlDsa65Rsa3072PssSha512) - } - DsaAlgorithm::HashMlDsa65Rsa3072Pkcs15Sha512 => { - Some(PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512) - } - DsaAlgorithm::HashMlDsa65Rsa4096PssSha512 => { - Some(PrehashDsaType::HashMlDsa65Rsa4096PssSha512) - } - DsaAlgorithm::HashMlDsa65Rsa4096Pkcs15Sha512 => { - Some(PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512) - } - DsaAlgorithm::HashMlDsa65EcdsaP384Sha512 => { - Some(PrehashDsaType::HashMlDsa65EcdsaP384Sha512) - } - DsaAlgorithm::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => { - Some(PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512) - } - DsaAlgorithm::HashMlDsa65Ed25519Sha512 => { - Some(PrehashDsaType::HashMlDsa65Ed25519Sha512) - } - DsaAlgorithm::HashMlDsa87EcdsaP384Sha512 => { - Some(PrehashDsaType::HashMlDsa87EcdsaP384Sha512) - } - DsaAlgorithm::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => { - Some(PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512) - } - DsaAlgorithm::HashMlDsa87Ed448Sha512 => Some(PrehashDsaType::HashMlDsa87Ed448Sha512), + DsaAlgorithm::MlDsa87Rsa3072Pss => Some(PrehashDsaType::MlDsa87Rsa3072Pss), + DsaAlgorithm::MlDsa87Rsa4096Pss => Some(PrehashDsaType::MlDsa87Rsa4096Pss), + DsaAlgorithm::MlDsa87EcdsaP521 => Some(PrehashDsaType::MlDsa87EcdsaP521), DsaAlgorithm::SlhDsaSha2_128s => Some(PrehashDsaType::SlhDsaSha2_128s), DsaAlgorithm::SlhDsaSha2_128f => Some(PrehashDsaType::SlhDsaSha2_128f), diff --git a/src/dsa/asn1/composite_dsa_primitives.rs b/src/dsa/asn1/composite_dsa_primitives.rs index 6147d72..5ec8b92 100644 --- a/src/dsa/asn1/composite_dsa_primitives.rs +++ b/src/dsa/asn1/composite_dsa_primitives.rs @@ -1,13 +1,21 @@ -use der::asn1::BitString; -use der_derive::Sequence; +use crate::QuantCryptError; -#[derive(Debug, Clone, PartialEq, Eq, Sequence)] -/// The composite signature value +type Result = std::result::Result; + +/// The composite signature value. +/// +/// Per draft-ietf-lamps-pq-composite-sigs-19 Section 4.3, the composite +/// signature is the simple concatenation of the fixed-length ML-DSA signature +/// with the traditional signature: `mldsaSig || tradSig`. On deserialization +/// the fixed-length ML-DSA signature is split off the front (its length is +/// determined by the ML-DSA parameter set of the composite algorithm) and the +/// remainder is the traditional signature. +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CompositeSignatureValue { - /// The ciphertext for the post-quantum KEM - pq_sig: BitString, - /// The ciphertext for the traditional KEM - trad_sig: BitString, + /// The signature for the post-quantum (ML-DSA) component + pq_sig: Vec, + /// The signature for the traditional component + trad_sig: Vec, } impl CompositeSignatureValue { @@ -16,28 +24,39 @@ impl CompositeSignatureValue { /// # Arguments /// /// * `pq_sig` - The signature for the post-quantum DSA - /// * `trad_ct` - The signature for the traditional DSA + /// * `trad_sig` - The signature for the traditional DSA pub fn new(pq_sig: &[u8], trad_sig: &[u8]) -> Self { - let pq_sig = BitString::new(0, pq_sig).unwrap(); - let trad_sig = BitString::new(0, trad_sig).unwrap(); - Self { pq_sig, trad_sig } + Self { + pq_sig: pq_sig.to_vec(), + trad_sig: trad_sig.to_vec(), + } } /// Get the signature for the post-quantum DSA - /// - /// # Returns - /// - /// The signature for the post-quantum DSA pub fn get_pq_sig(&self) -> Vec { - self.pq_sig.as_bytes().unwrap().to_vec() + self.pq_sig.clone() } /// Get the signature for the traditional DSA - /// - /// # Returns - /// - /// The signature for the traditional DSA pub fn get_trad_sig(&self) -> Vec { - self.trad_sig.as_bytes().unwrap().to_vec() + self.trad_sig.clone() + } + + /// Serialize as `mldsaSig || tradSig`. + pub fn to_der(&self) -> Result> { + let mut out = Vec::with_capacity(self.pq_sig.len() + self.trad_sig.len()); + out.extend_from_slice(&self.pq_sig); + out.extend_from_slice(&self.trad_sig); + Ok(out) + } + + /// Deserialize `mldsaSig || tradSig`, splitting at the fixed ML-DSA + /// signature length `pq_sig_len`. + pub fn from_der(der: &[u8], pq_sig_len: usize) -> Result { + if der.len() < pq_sig_len { + return Err(QuantCryptError::InvalidSignature); + } + let (pq_sig, trad_sig) = der.split_at(pq_sig_len); + Ok(Self::new(pq_sig, trad_sig)) } } diff --git a/src/dsa/common/config/hash_type.rs b/src/dsa/common/config/hash_type.rs index f900013..9c3dde8 100644 --- a/src/dsa/common/config/hash_type.rs +++ b/src/dsa/common/config/hash_type.rs @@ -28,37 +28,26 @@ impl HashTypeConfig for PrehashDsaType { PrehashDsaType::HashMlDsa65 => Some(HashType::Sha512), PrehashDsaType::HashMlDsa87 => Some(HashType::Sha512), - // Pure ML-DSA Composite Signature Algorithms - PrehashDsaType::MlDsa44Rsa2048Pss => None, - PrehashDsaType::MlDsa44Rsa2048Pkcs15 => None, - PrehashDsaType::MlDsa44Ed25519 => None, - PrehashDsaType::MlDsa44EcdsaP256 => None, - PrehashDsaType::MlDsa65Rsa3072Pss => None, - PrehashDsaType::MlDsa65Rsa3072Pkcs15 => None, - PrehashDsaType::MlDsa65Rsa4096Pss => None, - PrehashDsaType::MlDsa65Rsa4096Pkcs15 => None, - PrehashDsaType::MlDsa65EcdsaP384 => None, - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => None, - PrehashDsaType::MlDsa65Ed25519 => None, - PrehashDsaType::MlDsa87EcdsaP384 => None, - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => None, - PrehashDsaType::MlDsa87Ed448 => None, - - // Hash ML-DSA Composite Signature Algorithms - PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => Some(HashType::Sha256), - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => Some(HashType::Sha256), - PrehashDsaType::HashMlDsa44Ed25519Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => Some(HashType::Sha256), - PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa65Ed25519Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => Some(HashType::Sha512), - PrehashDsaType::HashMlDsa87Ed448Sha512 => Some(HashType::Sha512), + // Composite ML-DSA Signature Algorithms (draft-19). + // Every composite is pre-hashed; the PH per algorithm is fixed by the OID. + PrehashDsaType::MlDsa44Rsa2048Pss => Some(HashType::Sha256), + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => Some(HashType::Sha256), + PrehashDsaType::MlDsa44Ed25519 => Some(HashType::Sha512), + PrehashDsaType::MlDsa44EcdsaP256 => Some(HashType::Sha256), + PrehashDsaType::MlDsa65Rsa3072Pss => Some(HashType::Sha512), + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => Some(HashType::Sha512), + PrehashDsaType::MlDsa65Rsa4096Pss => Some(HashType::Sha512), + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => Some(HashType::Sha512), + PrehashDsaType::MlDsa65EcdsaP256 => Some(HashType::Sha512), + PrehashDsaType::MlDsa65EcdsaP384 => Some(HashType::Sha512), + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => Some(HashType::Sha512), + PrehashDsaType::MlDsa65Ed25519 => Some(HashType::Sha512), + PrehashDsaType::MlDsa87EcdsaP384 => Some(HashType::Sha512), + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => Some(HashType::Sha512), + PrehashDsaType::MlDsa87Ed448 => Some(HashType::Shake256_64), + PrehashDsaType::MlDsa87Rsa3072Pss => Some(HashType::Sha512), + PrehashDsaType::MlDsa87Rsa4096Pss => Some(HashType::Sha512), + PrehashDsaType::MlDsa87EcdsaP521 => Some(HashType::Sha512), PrehashDsaType::SlhDsaSha2_128s => None, PrehashDsaType::SlhDsaSha2_128f => None, diff --git a/src/dsa/common/config/label.rs b/src/dsa/common/config/label.rs new file mode 100644 index 0000000..db955f5 --- /dev/null +++ b/src/dsa/common/config/label.rs @@ -0,0 +1,43 @@ +use crate::dsa::common::prehash_dsa_type::PrehashDsaType; + +/// A trait to get the composite signature Label (domain separator) for a +/// Composite ML-DSA algorithm, as defined in +/// draft-ietf-lamps-pq-composite-sigs-19 Section 6 ("Signature Label Values"). +/// +/// The Label is a fixed per-algorithm ASCII string. It is used both as the +/// domain-separator component of the to-be-signed message +/// (`M' = Prefix || Label || len(ctx) || ctx || PH(M)`) and as the ML-DSA +/// context (`mldsa-ctx = Label`). +pub trait CompositeLabel { + /// Get the composite signature Label bytes, or `None` if the algorithm is + /// not a composite (pure ML-DSA / SLH-DSA have no Label). + fn get_label(&self) -> Option>; +} + +impl CompositeLabel for PrehashDsaType { + fn get_label(&self) -> Option> { + let label: &str = match self { + PrehashDsaType::MlDsa44Rsa2048Pss => "COMPSIG-MLDSA44-RSA2048-PSS-SHA256", + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => "COMPSIG-MLDSA44-RSA2048-PKCS15-SHA256", + PrehashDsaType::MlDsa44Ed25519 => "COMPSIG-MLDSA44-Ed25519-SHA512", + PrehashDsaType::MlDsa44EcdsaP256 => "COMPSIG-MLDSA44-ECDSA-P256-SHA256", + PrehashDsaType::MlDsa65Rsa3072Pss => "COMPSIG-MLDSA65-RSA3072-PSS-SHA512", + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => "COMPSIG-MLDSA65-RSA3072-PKCS15-SHA512", + PrehashDsaType::MlDsa65Rsa4096Pss => "COMPSIG-MLDSA65-RSA4096-PSS-SHA512", + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => "COMPSIG-MLDSA65-RSA4096-PKCS15-SHA512", + PrehashDsaType::MlDsa65EcdsaP256 => "COMPSIG-MLDSA65-ECDSA-P256-SHA512", + PrehashDsaType::MlDsa65EcdsaP384 => "COMPSIG-MLDSA65-ECDSA-P384-SHA512", + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => "COMPSIG-MLDSA65-ECDSA-BP256-SHA512", + PrehashDsaType::MlDsa65Ed25519 => "COMPSIG-MLDSA65-Ed25519-SHA512", + PrehashDsaType::MlDsa87EcdsaP384 => "COMPSIG-MLDSA87-ECDSA-P384-SHA512", + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => "COMPSIG-MLDSA87-ECDSA-BP384-SHA512", + PrehashDsaType::MlDsa87Ed448 => "COMPSIG-MLDSA87-Ed448-SHAKE256", + PrehashDsaType::MlDsa87Rsa3072Pss => "COMPSIG-MLDSA87-RSA3072-PSS-SHA512", + PrehashDsaType::MlDsa87Rsa4096Pss => "COMPSIG-MLDSA87-RSA4096-PSS-SHA512", + PrehashDsaType::MlDsa87EcdsaP521 => "COMPSIG-MLDSA87-ECDSA-P521-SHA512", + // Pure ML-DSA, HashML-DSA, and SLH-DSA are not composites. + _ => return None, + }; + Some(label.as_bytes().to_vec()) + } +} diff --git a/src/dsa/common/config/mod.rs b/src/dsa/common/config/mod.rs index 53c7e1d..32baafc 100644 --- a/src/dsa/common/config/mod.rs +++ b/src/dsa/common/config/mod.rs @@ -1,4 +1,5 @@ pub mod hash_type; +pub mod label; pub mod oids; pub mod pk_len; pub mod sig_len; diff --git a/src/dsa/common/config/oids.rs b/src/dsa/common/config/oids.rs index fcb9472..e7a9ce8 100644 --- a/src/dsa/common/config/oids.rs +++ b/src/dsa/common/config/oids.rs @@ -32,6 +32,8 @@ impl Oid for DsaType { DsaType::EcdsaBrainpoolP256r1SHA256 | DsaType::EcdsaP256SHA256 => "1.2.840.10045.4.3.2", // ECDSA with SHA384 DsaType::EcdsaP384SHA384 | DsaType::EcdsaBrainpoolP384r1SHA384 => "1.2.840.10045.4.3.3", + // ECDSA with SHA512 + DsaType::EcdsaP521SHA512 => "1.2.840.10045.4.3.4", DsaType::Ed25519 => "1.3.101.112", DsaType::Ed448 => "1.3.101.113", } @@ -56,37 +58,26 @@ impl Oid for PrehashDsaType { PrehashDsaType::HashMlDsa65 => "2.16.840.1.101.3.4.3.33", PrehashDsaType::HashMlDsa87 => "2.16.840.1.101.3.4.3.34", - // Pure ML-DSA Composite Signature Algorithms - PrehashDsaType::MlDsa44Rsa2048Pss => "2.16.840.1.114027.80.8.1.21", - PrehashDsaType::MlDsa44Rsa2048Pkcs15 => "2.16.840.1.114027.80.8.1.22", - PrehashDsaType::MlDsa44Ed25519 => "2.16.840.1.114027.80.8.1.23", - PrehashDsaType::MlDsa44EcdsaP256 => "2.16.840.1.114027.80.8.1.24", - PrehashDsaType::MlDsa65Rsa3072Pss => "2.16.840.1.114027.80.8.1.26", - PrehashDsaType::MlDsa65Rsa3072Pkcs15 => "2.16.840.1.114027.80.8.1.27", - PrehashDsaType::MlDsa65Rsa4096Pss => "2.16.840.1.114027.80.8.1.34", - PrehashDsaType::MlDsa65Rsa4096Pkcs15 => "2.16.840.1.114027.80.8.1.35", - PrehashDsaType::MlDsa65EcdsaP384 => "2.16.840.1.114027.80.8.1.28", - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => "2.16.840.1.114027.80.8.1.29", - PrehashDsaType::MlDsa65Ed25519 => "2.16.840.1.114027.80.8.1.30", - PrehashDsaType::MlDsa87EcdsaP384 => "2.16.840.1.114027.80.8.1.31", - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => "2.16.840.1.114027.80.8.1.32", - PrehashDsaType::MlDsa87Ed448 => "2.16.840.1.114027.80.8.1.33", - - // Hash ML-DSA Composite Signature Algorithms - PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => "2.16.840.1.114027.80.8.1.40", - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => "2.16.840.1.114027.80.8.1.41", - PrehashDsaType::HashMlDsa44Ed25519Sha512 => "2.16.840.1.114027.80.8.1.42", - PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => "2.16.840.1.114027.80.8.1.43", - PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => "2.16.840.1.114027.80.8.1.44", - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => "2.16.840.1.114027.80.8.1.45", - PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => "2.16.840.1.114027.80.8.1.46", - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => "2.16.840.1.114027.80.8.1.47", - PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => "2.16.840.1.114027.80.8.1.48", - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => "2.16.840.1.114027.80.8.1.49", - PrehashDsaType::HashMlDsa65Ed25519Sha512 => "2.16.840.1.114027.80.8.1.50", - PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => "2.16.840.1.114027.80.8.1.51", - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => "2.16.840.1.114027.80.8.1.52", - PrehashDsaType::HashMlDsa87Ed448Sha512 => "2.16.840.1.114027.80.8.1.53", + // Composite ML-DSA Signature Algorithms + // (draft-ietf-lamps-pq-composite-sigs-19, production IANA arc). + PrehashDsaType::MlDsa44Rsa2048Pss => "1.3.6.1.5.5.7.6.37", + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => "1.3.6.1.5.5.7.6.38", + PrehashDsaType::MlDsa44Ed25519 => "1.3.6.1.5.5.7.6.39", + PrehashDsaType::MlDsa44EcdsaP256 => "1.3.6.1.5.5.7.6.40", + PrehashDsaType::MlDsa65Rsa3072Pss => "1.3.6.1.5.5.7.6.41", + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => "1.3.6.1.5.5.7.6.42", + PrehashDsaType::MlDsa65Rsa4096Pss => "1.3.6.1.5.5.7.6.43", + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => "1.3.6.1.5.5.7.6.44", + PrehashDsaType::MlDsa65EcdsaP256 => "1.3.6.1.5.5.7.6.45", + PrehashDsaType::MlDsa65EcdsaP384 => "1.3.6.1.5.5.7.6.46", + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => "1.3.6.1.5.5.7.6.47", + PrehashDsaType::MlDsa65Ed25519 => "1.3.6.1.5.5.7.6.48", + PrehashDsaType::MlDsa87EcdsaP384 => "1.3.6.1.5.5.7.6.49", + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => "1.3.6.1.5.5.7.6.50", + PrehashDsaType::MlDsa87Ed448 => "1.3.6.1.5.5.7.6.51", + PrehashDsaType::MlDsa87Rsa3072Pss => "1.3.6.1.5.5.7.6.52", + PrehashDsaType::MlDsa87Rsa4096Pss => "1.3.6.1.5.5.7.6.53", + PrehashDsaType::MlDsa87EcdsaP521 => "1.3.6.1.5.5.7.6.54", PrehashDsaType::SlhDsaSha2_128s => "2.16.840.1.101.3.4.3.20", PrehashDsaType::SlhDsaSha2_128f => "2.16.840.1.101.3.4.3.21", diff --git a/src/dsa/common/config/pk_len.rs b/src/dsa/common/config/pk_len.rs index a697465..664af76 100644 --- a/src/dsa/common/config/pk_len.rs +++ b/src/dsa/common/config/pk_len.rs @@ -26,6 +26,7 @@ impl PKLen for DsaType { DsaType::EcdsaP384SHA384 => Some(97), DsaType::EcdsaBrainpoolP384r1SHA384 => Some(97), + DsaType::EcdsaP521SHA512 => Some(133), DsaType::Ed25519 => Some(32), DsaType::Ed448 => Some(57), } @@ -48,36 +49,28 @@ impl PKLen for PrehashDsaType { PrehashDsaType::HashMlDsa65 => Some(1952), PrehashDsaType::HashMlDsa87 => Some(2592), - // pq_pk + trad_pk + overhead of sequence of two bit strings - PrehashDsaType::MlDsa44Rsa2048Pss => Some(1312 + 270 + 14), // 1596 - PrehashDsaType::MlDsa44Rsa2048Pkcs15 => Some(1312 + 270 + 14), // 1596 - PrehashDsaType::MlDsa44Ed25519 => Some(1312 + 32 + 12), // 1356 - PrehashDsaType::MlDsa44EcdsaP256 => Some(1312 + 65 + 12), // 1389 - PrehashDsaType::MlDsa65Rsa3072Pss => Some(1952 + 398 + 14), // 2364 - PrehashDsaType::MlDsa65Rsa3072Pkcs15 => Some(1952 + 398 + 14), // 2364 - PrehashDsaType::MlDsa65Rsa4096Pss => Some(1952 + 526 + 14), // 2492 - PrehashDsaType::MlDsa65Rsa4096Pkcs15 => Some(1952 + 526 + 14), // 2492 - PrehashDsaType::MlDsa65EcdsaP384 => Some(1952 + 97 + 12), // 2061 - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => Some(1952 + 65 + 12), // 2029 - PrehashDsaType::MlDsa65Ed25519 => Some(1952 + 32 + 12), // 1996 - PrehashDsaType::MlDsa87EcdsaP384 => Some(2592 + 97 + 12), // 2701 - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => Some(2592 + 97 + 12), // 2701 - PrehashDsaType::MlDsa87Ed448 => Some(2592 + 57 + 12), // 2523 - - PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => Some(1312 + 270 + 14), // 1596 - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => Some(1312 + 270 + 14), // 1596 - PrehashDsaType::HashMlDsa44Ed25519Sha512 => Some(1312 + 32 + 12), // 1356 - PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => Some(1312 + 65 + 12), // 1389 - PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => Some(1952 + 398 + 14), // 2364 - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => Some(1952 + 398 + 14), // 2364 - PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => Some(1952 + 526 + 14), // 2492 - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => Some(1952 + 526 + 14), // 2492 - PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => Some(1952 + 97 + 12), // 2061 - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => Some(1952 + 65 + 12), // 2029 - PrehashDsaType::HashMlDsa65Ed25519Sha512 => Some(1952 + 32 + 12), // 1996 - PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => Some(2592 + 97 + 12), // 2701 - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => Some(2592 + 97 + 12), // 2701 - PrehashDsaType::HashMlDsa87Ed448Sha512 => Some(2592 + 57 + 12), // 2523 + // draft-19 composite public key = mldsaPK || tradPK (raw + // concatenation, no ASN.1 wrapper). ECDSA/EdDSA traditional public + // keys are fixed-size points, so the total is exact. RSA public keys + // are DER-encoded and vary slightly in length, so those are `None`. + PrehashDsaType::MlDsa44Rsa2048Pss => None, + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => None, + PrehashDsaType::MlDsa44Ed25519 => Some(1312 + 32), // 1344 + PrehashDsaType::MlDsa44EcdsaP256 => Some(1312 + 65), // 1377 + PrehashDsaType::MlDsa65Rsa3072Pss => None, + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => None, + PrehashDsaType::MlDsa65Rsa4096Pss => None, + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => None, + PrehashDsaType::MlDsa65EcdsaP256 => Some(1952 + 65), // 2017 + PrehashDsaType::MlDsa65EcdsaP384 => Some(1952 + 97), // 2049 + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => Some(1952 + 65), // 2017 + PrehashDsaType::MlDsa65Ed25519 => Some(1952 + 32), // 1984 + PrehashDsaType::MlDsa87EcdsaP384 => Some(2592 + 97), // 2689 + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => Some(2592 + 97), // 2689 + PrehashDsaType::MlDsa87Ed448 => Some(2592 + 57), // 2649 + PrehashDsaType::MlDsa87Rsa3072Pss => None, + PrehashDsaType::MlDsa87Rsa4096Pss => None, + PrehashDsaType::MlDsa87EcdsaP521 => Some(2592 + 133), // 2725 // Pure SLH-DSA, aligned with fips205 implementation PrehashDsaType::SlhDsaSha2_128s => Some(32), diff --git a/src/dsa/common/config/sig_len.rs b/src/dsa/common/config/sig_len.rs index 45cb683..43e6d04 100644 --- a/src/dsa/common/config/sig_len.rs +++ b/src/dsa/common/config/sig_len.rs @@ -26,6 +26,7 @@ impl SigLen for DsaType { DsaType::EcdsaBrainpoolP256r1SHA256 => None, DsaType::EcdsaP384SHA384 => None, DsaType::EcdsaBrainpoolP384r1SHA384 => None, + DsaType::EcdsaP521SHA512 => None, DsaType::Ed25519 => Some(64), DsaType::Ed448 => Some(114), @@ -49,36 +50,28 @@ impl SigLen for PrehashDsaType { PrehashDsaType::HashMlDsa65 => Some(3309), PrehashDsaType::HashMlDsa87 => Some(4627), - // pq_pk + trad_pk + overhead - PrehashDsaType::MlDsa44Rsa2048Pss => Some(2420 + 256 + 14), // 2690 - PrehashDsaType::MlDsa44Rsa2048Pkcs15 => Some(2420 + 256 + 14), // 2690 - PrehashDsaType::MlDsa44Ed25519 => Some(2420 + 64 + 12), // 2496 - PrehashDsaType::MlDsa44EcdsaP256 => None, // None - PrehashDsaType::MlDsa65Rsa3072Pss => Some(3309 + 384 + 14), // 3707 - PrehashDsaType::MlDsa65Rsa3072Pkcs15 => Some(3309 + 384 + 14), // 3707 - PrehashDsaType::MlDsa65Rsa4096Pss => Some(3309 + 512 + 14), // 3835 - PrehashDsaType::MlDsa65Rsa4096Pkcs15 => Some(3309 + 512 + 14), // 3835 - PrehashDsaType::MlDsa65EcdsaP384 => None, // None - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => None, // None - PrehashDsaType::MlDsa65Ed25519 => Some(3309 + 64 + 12), // 3385 - PrehashDsaType::MlDsa87EcdsaP384 => None, // None - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => None, // None - PrehashDsaType::MlDsa87Ed448 => Some(4627 + 114 + 12), // 4753 - - PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => Some(2420 + 256 + 14), // 2690 - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => Some(2420 + 256 + 14), // 2690 - PrehashDsaType::HashMlDsa44Ed25519Sha512 => Some(2420 + 64 + 12), // 2496 - PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => None, // None - PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => Some(3309 + 384 + 14), // 3707 - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => Some(3309 + 384 + 14), // 3707 - PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => Some(3309 + 512 + 14), // 3835 - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => Some(3309 + 512 + 14), // 3835 - PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => None, // None - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => None, // None - PrehashDsaType::HashMlDsa65Ed25519Sha512 => Some(3309 + 64 + 12), // 3385 - PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => None, // None - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => None, // None - PrehashDsaType::HashMlDsa87Ed448Sha512 => Some(4627 + 114 + 12), // 4753 + // draft-19 composite signature = mldsaSig || tradSig (raw + // concatenation, no ASN.1 wrapper). RSA (fixed modulus size) and + // EdDSA (fixed) totals are exact; ECDSA signatures are DER-encoded + // and variable length, so those composites are `None`. + PrehashDsaType::MlDsa44Rsa2048Pss => Some(2420 + 256), // 2676 + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => Some(2420 + 256), // 2676 + PrehashDsaType::MlDsa44Ed25519 => Some(2420 + 64), // 2484 + PrehashDsaType::MlDsa44EcdsaP256 => None, + PrehashDsaType::MlDsa65Rsa3072Pss => Some(3309 + 384), // 3693 + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => Some(3309 + 384), // 3693 + PrehashDsaType::MlDsa65Rsa4096Pss => Some(3309 + 512), // 3821 + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => Some(3309 + 512), // 3821 + PrehashDsaType::MlDsa65EcdsaP256 => None, + PrehashDsaType::MlDsa65EcdsaP384 => None, + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => None, + PrehashDsaType::MlDsa65Ed25519 => Some(3309 + 64), // 3373 + PrehashDsaType::MlDsa87EcdsaP384 => None, + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => None, + PrehashDsaType::MlDsa87Ed448 => Some(4627 + 114), // 4741 + PrehashDsaType::MlDsa87Rsa3072Pss => Some(4627 + 384), // 5011 + PrehashDsaType::MlDsa87Rsa4096Pss => Some(4627 + 512), // 5139 + PrehashDsaType::MlDsa87EcdsaP521 => None, // Pure SLH-DSA, aligned with fips205 implementation PrehashDsaType::SlhDsaSha2_128s => Some(7856), diff --git a/src/dsa/common/config/sk_len.rs b/src/dsa/common/config/sk_len.rs index f6c7f93..c512d8c 100644 --- a/src/dsa/common/config/sk_len.rs +++ b/src/dsa/common/config/sk_len.rs @@ -26,6 +26,7 @@ impl SKLen for DsaType { DsaType::EcdsaBrainpoolP256r1SHA256 => Some(32), DsaType::EcdsaP384SHA384 => Some(48), DsaType::EcdsaBrainpoolP384r1SHA384 => Some(48), + DsaType::EcdsaP521SHA512 => Some(66), DsaType::Ed25519 => Some(32), DsaType::Ed448 => Some(57), @@ -50,35 +51,28 @@ impl SKLen for PrehashDsaType { PrehashDsaType::HashMlDsa87 => Some(4896), // pq_sk + trad_sk + overhead of sequence of two octet strings - PrehashDsaType::MlDsa44Rsa2048Pss => None, // None - PrehashDsaType::MlDsa44Rsa2048Pkcs15 => None, // None - PrehashDsaType::MlDsa44Ed25519 => Some(2560 + 32 + 10), // 2602 - PrehashDsaType::MlDsa44EcdsaP256 => Some(2560 + 32 + 10), // 2602 - PrehashDsaType::MlDsa65Rsa3072Pss => None, // None - PrehashDsaType::MlDsa65Rsa3072Pkcs15 => None, // None - PrehashDsaType::MlDsa65Rsa4096Pss => None, // None - PrehashDsaType::MlDsa65Rsa4096Pkcs15 => None, // None - PrehashDsaType::MlDsa65EcdsaP384 => Some(4032 + 48 + 10), // 4090 - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => Some(4032 + 32 + 10), // 4074 - PrehashDsaType::MlDsa65Ed25519 => Some(4032 + 32 + 10), // 4074 - PrehashDsaType::MlDsa87EcdsaP384 => Some(4896 + 48 + 10), // 4954 - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => Some(4896 + 48 + 10), // 4954 - PrehashDsaType::MlDsa87Ed448 => Some(4896 + 57 + 10), // 4963 - - PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => None, // None - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => None, // None - PrehashDsaType::HashMlDsa44Ed25519Sha512 => Some(2560 + 32 + 10), // 2602 - PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => Some(2560 + 32 + 10), // 2602 - PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => None, // None - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => None, // None - PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => None, // None - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => None, // None - PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => Some(4032 + 48 + 10), // 4090 - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => Some(4032 + 32 + 10), // 4074 - PrehashDsaType::HashMlDsa65Ed25519Sha512 => Some(4032 + 32 + 10), // 4074 - PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => Some(4896 + 48 + 10), // 4954 - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => Some(4896 + 48 + 10), // 4954 - PrehashDsaType::HashMlDsa87Ed448Sha512 => Some(4896 + 57 + 10), // 4963 + // draft-19 composite private key = mldsaSeed(32) || tradSK. The + // traditional part is a DER ECPrivateKey / RSAPrivateKey (variable) + // or a raw Ed key, so the composite secret-key length is not a fixed + // value that the test harness can assert on. + PrehashDsaType::MlDsa44Rsa2048Pss => None, + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => None, + PrehashDsaType::MlDsa44Ed25519 => None, + PrehashDsaType::MlDsa44EcdsaP256 => None, + PrehashDsaType::MlDsa65Rsa3072Pss => None, + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => None, + PrehashDsaType::MlDsa65Rsa4096Pss => None, + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => None, + PrehashDsaType::MlDsa65EcdsaP256 => None, + PrehashDsaType::MlDsa65EcdsaP384 => None, + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => None, + PrehashDsaType::MlDsa65Ed25519 => None, + PrehashDsaType::MlDsa87EcdsaP384 => None, + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => None, + PrehashDsaType::MlDsa87Ed448 => None, + PrehashDsaType::MlDsa87Rsa3072Pss => None, + PrehashDsaType::MlDsa87Rsa4096Pss => None, + PrehashDsaType::MlDsa87EcdsaP521 => None, // Pure SLH-DSA, aligned with fips205 implementation PrehashDsaType::SlhDsaSha2_128s => Some(32 * 2), diff --git a/src/dsa/common/dsa_type.rs b/src/dsa/common/dsa_type.rs index 39436b0..4a86dbc 100644 --- a/src/dsa/common/dsa_type.rs +++ b/src/dsa/common/dsa_type.rs @@ -20,6 +20,7 @@ pub enum DsaType { Ed25519, Ed448, EcdsaBrainpoolP384r1SHA384, + EcdsaP521SHA512, } impl DsaType { diff --git a/src/dsa/common/prehash_dsa_type.rs b/src/dsa/common/prehash_dsa_type.rs index 9df9b7d..f6c9846 100644 --- a/src/dsa/common/prehash_dsa_type.rs +++ b/src/dsa/common/prehash_dsa_type.rs @@ -15,7 +15,8 @@ pub enum PrehashDsaType { HashMlDsa65, HashMlDsa87, - // Pure ML-DSA Composite Signature Algorithms + // Composite ML-DSA Signature Algorithms (draft-ietf-lamps-pq-composite-sigs-19). + // Single consolidated, always-pre-hashed set of 18 algorithms. MlDsa44Rsa2048Pss, MlDsa44Rsa2048Pkcs15, MlDsa44Ed25519, @@ -24,28 +25,16 @@ pub enum PrehashDsaType { MlDsa65Rsa3072Pkcs15, MlDsa65Rsa4096Pss, MlDsa65Rsa4096Pkcs15, + MlDsa65EcdsaP256, MlDsa65EcdsaP384, MlDsa65EcdsaBrainpoolP256r1, MlDsa65Ed25519, MlDsa87EcdsaP384, MlDsa87EcdsaBrainpoolP384r1, MlDsa87Ed448, - - // Hash ML-DSA Composite Signature Algorithms - HashMlDsa44Rsa2048PssSha256, - HashMlDsa44Rsa2048Pkcs15Sha256, - HashMlDsa44Ed25519Sha512, - HashMlDsa44EcdsaP256Sha256, - HashMlDsa65Rsa3072PssSha512, - HashMlDsa65Rsa3072Pkcs15Sha512, - HashMlDsa65Rsa4096PssSha512, - HashMlDsa65Rsa4096Pkcs15Sha512, - HashMlDsa65EcdsaP384Sha512, - HashMlDsa65EcdsaBrainpoolP256r1Sha512, - HashMlDsa65Ed25519Sha512, - HashMlDsa87EcdsaP384Sha512, - HashMlDsa87EcdsaBrainpoolP384r1Sha512, - HashMlDsa87Ed448Sha512, + MlDsa87Rsa3072Pss, + MlDsa87Rsa4096Pss, + MlDsa87EcdsaP521, // Pure SLH-DSA SlhDsaSha2_128s, diff --git a/src/dsa/composite_dsa.rs b/src/dsa/composite_dsa.rs index ee09824..919d075 100644 --- a/src/dsa/composite_dsa.rs +++ b/src/dsa/composite_dsa.rs @@ -1,16 +1,17 @@ -use crate::asn1::asn_util::oid_to_der; use crate::asn1::composite_private_key::CompositePrivateKey; use crate::asn1::composite_public_key::CompositePublicKey; use crate::dsa::asn1::composite_dsa_primitives::CompositeSignatureValue; +use crate::dsa::common::config::label::CompositeLabel; use crate::dsa::common::prehash_dsa_info::PrehashDsaInfo; use crate::dsa::dsa_manager::{DsaManager, PrehashDsaManager}; use crate::hash::common::hash_trait::Hash; use crate::hash::hash_manager::HashManager; +use crate::utils::openssl_utils::{ec_private_key_der_to_scalar, ec_scalar_to_ec_private_key_der}; use crate::QuantCryptError; -use der::asn1::OctetString; -use der::{Decode, Encode}; +use openssl::nid::Nid; +use rand_core::SeedableRng; use super::common::dsa_trait::Dsa; use super::common::{ @@ -19,6 +20,25 @@ use super::common::{ type Result = std::result::Result; +/// The fixed byte length of the ML-DSA seed stored in a composite private key +/// (draft-19 §4.2). +const ML_DSA_SEED_LEN: usize = 32; + +/// Map a traditional signature `DsaType` to the OpenSSL curve `Nid` when it is a +/// prime/Brainpool curve whose composite private key must carry a DER +/// `ECPrivateKey`. Returns `None` for RSA and Edwards curves (which are stored +/// raw / in their own encoding). +fn trad_ec_nid(dsa_type: &DsaType) -> Option { + match dsa_type { + DsaType::EcdsaP256SHA256 => Some(Nid::X9_62_PRIME256V1), + DsaType::EcdsaP384SHA384 => Some(Nid::SECP384R1), + DsaType::EcdsaP521SHA512 => Some(Nid::SECP521R1), + DsaType::EcdsaBrainpoolP256r1SHA256 => Some(Nid::BRAINPOOL_P256R1), + DsaType::EcdsaBrainpoolP384r1SHA384 => Some(Nid::BRAINPOOL_P384R1), + _ => None, + } +} + /// A DSA manager for the composite DSA method #[derive(Clone)] pub struct CompositeDsaManager { @@ -47,22 +67,43 @@ impl CompositeDsaManager { // The context is less than 255 bytes so represent its length in a single byte let ctx_len = ctx.len() as u8; - let mut tbs_message = oid_to_der(&self.dsa_info.oid)?; - tbs_message.extend_from_slice(&[ctx_len]); + // draft-ietf-lamps-pq-composite-sigs-19 Section 2.2: + // M' = Prefix || Label || len(ctx) || ctx || PH(M) + // Prefix is the ASCII string "CompositeAlgorithmSignatures2025". + const PREFIX: &[u8] = b"CompositeAlgorithmSignatures2025"; + + let label = self + .dsa_info + .dsa_type + .get_label() + .ok_or(QuantCryptError::NotImplemented)?; + + // Every composite algorithm is pre-hashed; PH is fixed per algorithm. + let hash_type = self + .dsa_info + .hash_type + .clone() + .ok_or(QuantCryptError::NotImplemented)?; + let hasher = HashManager::new(hash_type)?; + let ph = hasher.hash(msg)?; + + let mut tbs_message = Vec::new(); + tbs_message.extend_from_slice(PREFIX); + tbs_message.extend_from_slice(&label); + tbs_message.push(ctx_len); tbs_message.extend_from_slice(ctx); + tbs_message.extend_from_slice(&ph); - if let Some(hash_type) = self.dsa_info.hash_type.clone() { - let hasher = HashManager::new(hash_type)?; - let hash = hasher.hash(msg)?; - let hash_oid = hasher.get_hash_info().oid; - let hash_oid = oid_to_der(&hash_oid)?; - tbs_message.extend_from_slice(&hash_oid); - tbs_message.extend_from_slice(&hash); - } else { - tbs_message.extend_from_slice(msg); - } - let msg = tbs_message; - Ok(msg) + Ok(tbs_message) + } + + /// Get the composite signature Label used as the ML-DSA context and as the + /// domain separator in the to-be-signed message. + fn get_label(&self) -> Result> { + self.dsa_info + .dsa_type + .get_label() + .ok_or(QuantCryptError::NotImplemented) } /// Generate a composite DSA keypair from constituent keys @@ -78,28 +119,49 @@ impl CompositeDsaManager { /// /// A tuple containing the composite public key and secret key. It is CompositeKEMPublicKey, CompositeKEMPrivateKey /// objects in ASN.1 format converted to DER - fn key_gen_composite( + /// The traditional signature `DsaType` backing this composite. + fn trad_dsa_type(&self) -> DsaType { + self.trad_dsa.get_dsa_info().dsa_type + } + + /// Encode a raw traditional secret key into the encoding required by the + /// composite private key: DER `ECPrivateKey` for prime/Brainpool curves, + /// otherwise the key as-is (raw Ed25519/Ed448, DER `RSAPrivateKey`). + fn encode_trad_sk(&self, raw: &[u8]) -> Result> { + if let Some(nid) = trad_ec_nid(&self.trad_dsa_type()) { + ec_scalar_to_ec_private_key_der(nid, raw) + .map_err(|_| QuantCryptError::KeyPairGenerationFailed) + } else { + Ok(raw.to_vec()) + } + } + + /// Inverse of [`Self::encode_trad_sk`]: recover the raw traditional secret + /// key our component signer expects. + fn decode_trad_sk(&self, encoded: &[u8]) -> Result> { + if trad_ec_nid(&self.trad_dsa_type()).is_some() { + ec_private_key_der_to_scalar(encoded).map_err(|_| QuantCryptError::InvalidPrivateKey) + } else { + Ok(encoded.to_vec()) + } + } + + /// Assemble the composite public and private key encodings from the + /// traditional key pair and the ML-DSA seed. + fn assemble_keys( &self, t_pk: &[u8], - t_sk: &[u8], + t_sk_raw: &[u8], pq_pk: &[u8], - pq_sk: &[u8], + pq_seed: &[u8], ) -> Result<(Vec, Vec)> { - // Create the composite public key let c_pk = CompositePublicKey::new(&self.dsa_info.oid, pq_pk, t_pk); let pk = c_pk .to_der() .map_err(|_| QuantCryptError::KeyPairGenerationFailed)?; - // Create the OctetString objects for the secret keys - let pq_sk_der = - OctetString::new(pq_sk).map_err(|_| QuantCryptError::KeyPairGenerationFailed)?; - - let t_sk_der = - OctetString::new(t_sk).map_err(|_| QuantCryptError::KeyPairGenerationFailed)?; - - // Create the composite secret key - let c_sk = CompositePrivateKey::new_dsa(&self.dsa_info.oid, &pq_sk_der, &t_sk_der)?; + let t_sk_enc = self.encode_trad_sk(t_sk_raw)?; + let c_sk = CompositePrivateKey::new(&self.dsa_info.oid, pq_seed, &t_sk_enc); let sk = c_sk.to_der()?; Ok((pk, sk)) @@ -114,87 +176,96 @@ impl PrehashDsa for CompositeDsaManager { let dsa_info = PrehashDsaInfo::new(dsa_type.clone()); let result = match dsa_type { - PrehashDsaType::MlDsa44Rsa2048Pss | PrehashDsaType::HashMlDsa44Rsa2048PssSha256 => { - Self { - dsa_info, - trad_dsa: Box::new(DsaManager::new(DsaType::Rsa2048PssSha256)?), - pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa44)?), - } - } - PrehashDsaType::MlDsa44Rsa2048Pkcs15 - | PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256 => Self { + PrehashDsaType::MlDsa44Rsa2048Pss => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::Rsa2048PssSha256)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa44)?), + }, + PrehashDsaType::MlDsa44Rsa2048Pkcs15 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Rsa2048Pkcs15Sha256)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa44)?), }, - PrehashDsaType::MlDsa44Ed25519 | PrehashDsaType::HashMlDsa44Ed25519Sha512 => Self { + PrehashDsaType::MlDsa44Ed25519 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Ed25519)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa44)?), }, - PrehashDsaType::MlDsa44EcdsaP256 | PrehashDsaType::HashMlDsa44EcdsaP256Sha256 => Self { + PrehashDsaType::MlDsa44EcdsaP256 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaP256SHA256)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa44)?), }, - PrehashDsaType::MlDsa65Rsa3072Pss | PrehashDsaType::HashMlDsa65Rsa3072PssSha512 => { - Self { - dsa_info, - trad_dsa: Box::new(DsaManager::new(DsaType::Rsa3072PssSha256)?), - pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), - } - } - PrehashDsaType::MlDsa65Rsa3072Pkcs15 - | PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512 => Self { + PrehashDsaType::MlDsa65Rsa3072Pss => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::Rsa3072PssSha256)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), + }, + PrehashDsaType::MlDsa65Rsa3072Pkcs15 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Rsa3072Pkcs15Sha256)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), }, - PrehashDsaType::MlDsa65Rsa4096Pss | PrehashDsaType::HashMlDsa65Rsa4096PssSha512 => { - Self { - dsa_info, - trad_dsa: Box::new(DsaManager::new(DsaType::Rsa4096PssSha384)?), - pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), - } - } - PrehashDsaType::MlDsa65Rsa4096Pkcs15 - | PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512 => Self { + PrehashDsaType::MlDsa65Rsa4096Pss => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::Rsa4096PssSha384)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), + }, + PrehashDsaType::MlDsa65Rsa4096Pkcs15 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Rsa4096Pkcs15Sha384)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), }, - PrehashDsaType::MlDsa65EcdsaP384 | PrehashDsaType::HashMlDsa65EcdsaP384Sha512 => Self { + PrehashDsaType::MlDsa65EcdsaP256 => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaP256SHA256)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), + }, + PrehashDsaType::MlDsa65EcdsaP384 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaP384SHA384)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), }, - PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 - | PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512 => Self { + PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaBrainpoolP256r1SHA256)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), }, - PrehashDsaType::MlDsa65Ed25519 | PrehashDsaType::HashMlDsa65Ed25519Sha512 => Self { + PrehashDsaType::MlDsa65Ed25519 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Ed25519)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa65)?), }, - PrehashDsaType::MlDsa87EcdsaP384 | PrehashDsaType::HashMlDsa87EcdsaP384Sha512 => Self { + PrehashDsaType::MlDsa87EcdsaP384 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaP384SHA384)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), }, - PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 - | PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512 => Self { + PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaBrainpoolP384r1SHA384)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), }, - PrehashDsaType::MlDsa87Ed448 | PrehashDsaType::HashMlDsa87Ed448Sha512 => Self { + PrehashDsaType::MlDsa87Ed448 => Self { dsa_info, trad_dsa: Box::new(DsaManager::new(DsaType::Ed448)?), pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), }, + PrehashDsaType::MlDsa87Rsa3072Pss => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::Rsa3072PssSha256)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), + }, + PrehashDsaType::MlDsa87Rsa4096Pss => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::Rsa4096PssSha384)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), + }, + PrehashDsaType::MlDsa87EcdsaP521 => Self { + dsa_info, + trad_dsa: Box::new(DsaManager::new(DsaType::EcdsaP521SHA512)?), + pq_dsa: Box::new(PrehashDsaManager::new(PrehashDsaType::MlDsa87)?), + }, _ => { return Err(QuantCryptError::NotImplemented); } @@ -203,18 +274,20 @@ impl PrehashDsa for CompositeDsaManager { } fn key_gen(&mut self) -> Result<(Vec, Vec)> { - let (t_pk, t_sk) = self.trad_dsa.key_gen()?; - let (pq_pk, pq_sk) = self.pq_dsa.key_gen()?; - self.key_gen_composite(&t_pk, &t_sk, &pq_pk, &pq_sk) + let mut rng = rand_chacha::ChaCha20Rng::from_entropy(); + self.key_gen_with_rng(&mut rng) } fn key_gen_with_rng( &mut self, rng: &mut impl rand_core::CryptoRngCore, ) -> Result<(Vec, Vec)> { - let (t_pk, t_sk) = self.trad_dsa.key_gen_with_rng(rng)?; - let (pq_pk, pq_sk) = self.pq_dsa.key_gen_with_rng(rng)?; - self.key_gen_composite(&t_pk, &t_sk, &pq_pk, &pq_sk) + let (t_pk, t_sk_raw) = self.trad_dsa.key_gen_with_rng(rng)?; + // draft-19: the composite private key stores the 32-byte ML-DSA seed. + let mut pq_seed = [0u8; ML_DSA_SEED_LEN]; + rng.fill_bytes(&mut pq_seed); + let (pq_pk, _) = self.pq_dsa.key_gen_from_seed(&pq_seed)?; + self.assemble_keys(&t_pk, &t_sk_raw, &pq_pk, &pq_seed) } fn sign_with_ctx(&self, sk: &[u8], msg: &[u8], ctx: Option<&[u8]>) -> Result> { @@ -226,23 +299,23 @@ impl PrehashDsa for CompositeDsaManager { let msg = self.get_tbs_message(msg, ctx)?; - let c_key = CompositePrivateKey::from_der(&self.dsa_info.oid, sk)?; + let c_key = CompositePrivateKey::from_der(&self.dsa_info.oid, sk, ML_DSA_SEED_LEN)?; - let sk_trad_os: OctetString = c_key.get_dsa_trad_sk()?; - let sk_pq_os = c_key.get_dsa_pq_sk()?; + let pq_seed = c_key.get_pq_seed(); + let sk_trad = self.decode_trad_sk(&c_key.get_trad_sk())?; - let sk_trad = sk_trad_os.as_bytes(); - let sk_pq = sk_pq_os.as_bytes(); + // Re-derive the expanded ML-DSA signing key from the stored 32-byte seed. + let (_, sk_pq) = self.pq_dsa.key_gen_from_seed(&pq_seed)?; - let trad_sig = self.trad_dsa.sign(sk_trad, &msg)?; + let trad_sig = self.trad_dsa.sign(&sk_trad, &msg)?; - // For the PQ algorithm, use the domain as the context - let domain = oid_to_der(&self.dsa_info.oid)?; - let pq_sig = self.pq_dsa.sign_with_ctx(sk_pq, &msg, Some(&domain))?; + // For the PQ algorithm, the composite Label is used as the ML-DSA context. + let label = self.get_label()?; + let pq_sig = self.pq_dsa.sign_with_ctx(&sk_pq, &msg, Some(&label))?; let c_sig = CompositeSignatureValue::new(&pq_sig, &trad_sig); - Ok(c_sig.to_der().unwrap()) + c_sig.to_der() } fn verify_with_ctx( @@ -260,23 +333,33 @@ impl PrehashDsa for CompositeDsaManager { let msg = self.get_tbs_message(msg, ctx)?; - let c_key = CompositePublicKey::from_der(&self.dsa_info.oid, pk)?; + let pq_pk_len = self + .pq_dsa + .get_dsa_info() + .pk_byte_len + .ok_or(QuantCryptError::InvalidPublicKey)?; + let c_key = CompositePublicKey::from_der(&self.dsa_info.oid, pk, pq_pk_len)?; let trad_pk = c_key.get_trad_pk(); let pq_pk = c_key.get_pq_pk(); - let c_sig = CompositeSignatureValue::from_der(signature) + let pq_sig_len = self + .pq_dsa + .get_dsa_info() + .sig_byte_len + .ok_or(QuantCryptError::InvalidSignature)?; + let c_sig = CompositeSignatureValue::from_der(signature, pq_sig_len) .map_err(|_| QuantCryptError::InvalidSignature)?; let t_sig = c_sig.get_trad_sig(); let pq_sig = c_sig.get_pq_sig(); let is_verified_trad = self.trad_dsa.verify(&trad_pk, &msg, &t_sig)?; - // For the PQ algorithm, use the domain as the context - let domain = oid_to_der(&self.dsa_info.oid)?; + // For the PQ algorithm, the composite Label is used as the ML-DSA context. + let label = self.get_label()?; let is_verified_pq = self .pq_dsa - .verify_with_ctx(&pq_pk, &msg, &pq_sig, Some(&domain))?; + .verify_with_ctx(&pq_pk, &msg, &pq_sig, Some(&label))?; Ok(is_verified_pq && is_verified_trad) } @@ -287,23 +370,17 @@ impl PrehashDsa for CompositeDsaManager { fn get_public_key(&self, sk: &[u8]) -> Result> { // Decompose the composite secret key - let c_key = CompositePrivateKey::from_der(&self.dsa_info.oid, sk)?; + let c_key = CompositePrivateKey::from_der(&self.dsa_info.oid, sk, ML_DSA_SEED_LEN)?; - let sk_trad_os = c_key.get_dsa_trad_sk()?; - let sk_pq_os = c_key.get_dsa_pq_sk()?; + let pq_seed = c_key.get_pq_seed(); + let sk_trad = self.decode_trad_sk(&c_key.get_trad_sk())?; - let sk_trad = sk_trad_os.as_bytes(); - let sk_pq = sk_pq_os.as_bytes(); - - let pk_trad = self.trad_dsa.get_public_key(sk_trad)?; - let pk_pq = self.pq_dsa.get_public_key(sk_pq)?; + let pk_trad = self.trad_dsa.get_public_key(&sk_trad)?; + let (pk_pq, _) = self.pq_dsa.key_gen_from_seed(&pq_seed)?; let c_pk = CompositePublicKey::new(&self.dsa_info.oid, &pk_pq, &pk_trad); - let pk = c_pk - .to_der() - .map_err(|_| QuantCryptError::KeyPairGenerationFailed)?; - - Ok(pk) + c_pk.to_der() + .map_err(|_| QuantCryptError::KeyPairGenerationFailed) } } @@ -396,87 +473,28 @@ mod tests { test_prehash_dsa!(dsa); } - ///////////////// Test the pre-hash versions of the above algorithms ////////////////////// - #[test] - fn test_mldsa_44_rsa_2048_pss_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa44Rsa2048PssSha256); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_44_rsa_2048_pkcs15_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_44_ed25519_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa44Ed25519Sha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_44_ecdsa_p256_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa44EcdsaP256Sha256); - test_prehash_dsa!(dsa); - } - #[test] - fn test_mldsa_65_rsa_3072_pss_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65Rsa3072PssSha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_65_rsa_3072_pkcs15_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_65_rsa_4096_pss_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65Rsa4096PssSha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_65_rsa_4096_pkcs15_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_65_ecdsa_p384_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65EcdsaP384Sha512); - test_prehash_dsa!(dsa); - } - - #[test] - fn test_mldsa_65_ecdsa_brainpool_p256r1_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512); - test_prehash_dsa!(dsa); - } - + // New composite variants added in draft-19. #[test] - fn test_mldsa_65_ed25519_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa65Ed25519Sha512); + fn test_mldsa_65_ecdsa_p256() { + let dsa = CompositeDsaManager::new(PrehashDsaType::MlDsa65EcdsaP256); test_prehash_dsa!(dsa); } #[test] - fn test_mldsa_87_ecdsa_p384_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa87EcdsaP384Sha512); + fn test_mldsa_87_rsa_3072_pss() { + let dsa = CompositeDsaManager::new(PrehashDsaType::MlDsa87Rsa3072Pss); test_prehash_dsa!(dsa); } #[test] - fn test_mldsa_87_ecdsa_brainpool_p384r1_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512); + fn test_mldsa_87_rsa_4096_pss() { + let dsa = CompositeDsaManager::new(PrehashDsaType::MlDsa87Rsa4096Pss); test_prehash_dsa!(dsa); } #[test] - fn test_mldsa_87_ed448_ph() { - let dsa = CompositeDsaManager::new(PrehashDsaType::HashMlDsa87Ed448Sha512); + fn test_mldsa_87_ecdsa_p521() { + let dsa = CompositeDsaManager::new(PrehashDsaType::MlDsa87EcdsaP521); test_prehash_dsa!(dsa); } } diff --git a/src/dsa/dsa_manager.rs b/src/dsa/dsa_manager.rs index f170298..fd8ae08 100644 --- a/src/dsa/dsa_manager.rs +++ b/src/dsa/dsa_manager.rs @@ -32,44 +32,35 @@ const RSA_DSA_TYPES: [DsaType; 6] = [ DsaType::Rsa4096PssSha384, ]; -const EC_DSA_TYPES: [DsaType; 6] = [ +const EC_DSA_TYPES: [DsaType; 7] = [ DsaType::EcdsaP256SHA256, DsaType::EcdsaBrainpoolP256r1SHA256, DsaType::EcdsaBrainpoolP384r1SHA384, DsaType::EcdsaP384SHA384, + DsaType::EcdsaP521SHA512, DsaType::Ed25519, DsaType::Ed448, ]; -const COMPOSITE_DSA_TYPES: [PrehashDsaType; 28] = [ +const COMPOSITE_DSA_TYPES: [PrehashDsaType; 18] = [ PrehashDsaType::MlDsa44Rsa2048Pss, PrehashDsaType::MlDsa44Rsa2048Pkcs15, PrehashDsaType::MlDsa44Ed25519, PrehashDsaType::MlDsa44EcdsaP256, PrehashDsaType::MlDsa65Rsa3072Pss, PrehashDsaType::MlDsa65Rsa3072Pkcs15, + PrehashDsaType::MlDsa65Rsa4096Pss, + PrehashDsaType::MlDsa65Rsa4096Pkcs15, + PrehashDsaType::MlDsa65EcdsaP256, PrehashDsaType::MlDsa65EcdsaP384, PrehashDsaType::MlDsa65EcdsaBrainpoolP256r1, PrehashDsaType::MlDsa65Ed25519, PrehashDsaType::MlDsa87EcdsaP384, PrehashDsaType::MlDsa87EcdsaBrainpoolP384r1, PrehashDsaType::MlDsa87Ed448, - PrehashDsaType::MlDsa65Rsa4096Pss, - PrehashDsaType::MlDsa65Rsa4096Pkcs15, - PrehashDsaType::HashMlDsa44Rsa2048PssSha256, - PrehashDsaType::HashMlDsa44Rsa2048Pkcs15Sha256, - PrehashDsaType::HashMlDsa44Ed25519Sha512, - PrehashDsaType::HashMlDsa44EcdsaP256Sha256, - PrehashDsaType::HashMlDsa65Rsa3072PssSha512, - PrehashDsaType::HashMlDsa65Rsa3072Pkcs15Sha512, - PrehashDsaType::HashMlDsa65EcdsaP384Sha512, - PrehashDsaType::HashMlDsa65EcdsaBrainpoolP256r1Sha512, - PrehashDsaType::HashMlDsa65Ed25519Sha512, - PrehashDsaType::HashMlDsa87EcdsaP384Sha512, - PrehashDsaType::HashMlDsa87EcdsaBrainpoolP384r1Sha512, - PrehashDsaType::HashMlDsa87Ed448Sha512, - PrehashDsaType::HashMlDsa65Rsa4096PssSha512, - PrehashDsaType::HashMlDsa65Rsa4096Pkcs15Sha512, + PrehashDsaType::MlDsa87Rsa3072Pss, + PrehashDsaType::MlDsa87Rsa4096Pss, + PrehashDsaType::MlDsa87EcdsaP521, ]; const SLH_DSA_TYPES: [PrehashDsaType; 24] = [ @@ -258,6 +249,18 @@ impl PrehashDsa for PrehashDsaManager { } } +impl PrehashDsaManager { + /// Deterministically derive an ML-DSA key pair from a seed. Only ML-DSA + /// managers support this (used by composite signatures to store the 32-byte + /// ML-DSA seed); other variants return `NotImplemented`. + pub fn key_gen_from_seed(&self, seed: &[u8]) -> Result<(Vec, Vec)> { + match self { + PrehashDsaManager::Ml(ml) => ml.key_gen_from_seed(seed), + _ => Err(QuantCryptError::NotImplemented), + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/dsa/ec_dsa.rs b/src/dsa/ec_dsa.rs index aabe48d..66c0cd9 100644 --- a/src/dsa/ec_dsa.rs +++ b/src/dsa/ec_dsa.rs @@ -53,6 +53,7 @@ impl Dsa for EcDsaManager { None, Some(MessageDigest::sha384()), ), + DsaType::EcdsaP521SHA512 => (Some(Nid::SECP521R1), None, Some(MessageDigest::sha512())), _ => { return Err(QuantCryptError::NotImplemented); } @@ -175,6 +176,12 @@ mod tests { test_dsa!(dsa); } + #[test] + fn test_ecdsa_p521_sha512() { + let dsa = EcDsaManager::new(DsaType::EcdsaP521SHA512); + test_dsa!(dsa); + } + #[test] fn test_ed25519() { let dsa = EcDsaManager::new(DsaType::Ed25519); diff --git a/src/dsa/ml_dsa.rs b/src/dsa/ml_dsa.rs index 39efce7..268d6e9 100644 --- a/src/dsa/ml_dsa.rs +++ b/src/dsa/ml_dsa.rs @@ -10,7 +10,7 @@ use rand_core::SeedableRng; use fips204::ml_dsa_44; use fips204::ml_dsa_65; use fips204::ml_dsa_87; -use fips204::traits::{SerDes, Signer, Verifier}; +use fips204::traits::{KeyGen, SerDes, Signer, Verifier}; use fips204::Ph; type Result = std::result::Result; @@ -101,6 +101,38 @@ pub struct MlDsaManager { pub dsa_info: PrehashDsaInfo, } +impl MlDsaManager { + /// Deterministically derive an ML-DSA key pair from a 32-byte seed (xi), + /// per FIPS 204. Returns `(public_key_bytes, expanded_secret_key_bytes)`. + /// + /// Composite ML-DSA (draft-19) stores this 32-byte seed as the post-quantum + /// component of the private key; the expanded signing key is re-derived from + /// it on demand. + pub fn key_gen_from_seed(&self, seed: &[u8]) -> Result<(Vec, Vec)> { + if seed.len() != 32 { + return Err(QuantCryptError::InvalidPrivateKey); + } + let mut xi = [0u8; 32]; + xi.copy_from_slice(seed); + let (pk, sk) = match self.dsa_info.dsa_type { + PrehashDsaType::MlDsa44 | PrehashDsaType::HashMlDsa44 => { + let (pk, sk) = ml_dsa_44::KG::keygen_from_seed(&xi); + (pk.into_bytes().to_vec(), sk.into_bytes().to_vec()) + } + PrehashDsaType::MlDsa65 | PrehashDsaType::HashMlDsa65 => { + let (pk, sk) = ml_dsa_65::KG::keygen_from_seed(&xi); + (pk.into_bytes().to_vec(), sk.into_bytes().to_vec()) + } + PrehashDsaType::MlDsa87 | PrehashDsaType::HashMlDsa87 => { + let (pk, sk) = ml_dsa_87::KG::keygen_from_seed(&xi); + (pk.into_bytes().to_vec(), sk.into_bytes().to_vec()) + } + _ => return Err(QuantCryptError::NotImplemented), + }; + Ok((pk, sk)) + } +} + impl PrehashDsa for MlDsaManager { /// Create a new DSA instance /// diff --git a/src/dsa/slh_dsa.rs b/src/dsa/slh_dsa.rs index 16f11e6..f4aeea0 100644 --- a/src/dsa/slh_dsa.rs +++ b/src/dsa/slh_dsa.rs @@ -46,6 +46,9 @@ macro_rules! sign_slh { HashType::Sha512 => Ph::SHA512, HashType::Shake128 => Ph::SHAKE128, HashType::Shake256 => Ph::SHAKE256, + // SHAKE256/64 is only used by the composite ML-DSA pre-hash, + // never by SLH-DSA. + HashType::Shake256_64 => return Err(QuantCryptError::NotImplemented), }; // Try signing the message with prehashing sk.try_hash_sign($msg, $ctx, &ph, true) @@ -87,6 +90,9 @@ macro_rules! verify_slh { HashType::Sha512 => Ph::SHA512, HashType::Shake128 => Ph::SHAKE128, HashType::Shake256 => Ph::SHAKE256, + // SHAKE256/64 is only used by the composite ML-DSA pre-hash, + // never by SLH-DSA. + HashType::Shake256_64 => return Err(QuantCryptError::NotImplemented), }; Ok(pk.hash_verify($msg, &sig_buf, $ctx, &ph)) diff --git a/src/hash/common/config/oids.rs b/src/hash/common/config/oids.rs index a0e811d..823a944 100644 --- a/src/hash/common/config/oids.rs +++ b/src/hash/common/config/oids.rs @@ -22,6 +22,8 @@ impl Oid for HashType { HashType::Sha512 => "2.16.840.1.101.3.4.2.3", HashType::Shake128 => "2.16.840.1.101.3.4.2.11", HashType::Shake256 => "2.16.840.1.101.3.4.2.12", + // SHAKE256/64 shares the id-shake256 OID (2.16.840.1.101.3.4.2.12) + HashType::Shake256_64 => "2.16.840.1.101.3.4.2.12", } .to_string() } diff --git a/src/hash/common/hash_type.rs b/src/hash/common/hash_type.rs index de0b4d4..ededb3e 100644 --- a/src/hash/common/hash_type.rs +++ b/src/hash/common/hash_type.rs @@ -11,4 +11,7 @@ pub enum HashType { Shake128, /// Shake 256 Shake256, + /// Shake 256 with a 64-byte (512-bit) XOF output (SHAKE256/64), + /// used as the pre-hash for the MLDSA87-Ed448 composite (draft-19). + Shake256_64, } diff --git a/src/hash/hash_manager.rs b/src/hash/hash_manager.rs index ddc4f3d..dae0582 100644 --- a/src/hash/hash_manager.rs +++ b/src/hash/hash_manager.rs @@ -21,9 +21,11 @@ impl Hash for HashManager { Self: Sized, { match hash_type { - HashType::Sha256 | HashType::Sha512 | HashType::Shake128 | HashType::Shake256 => { - Ok(HashManager::Sha(ShaHash::new(hash_type)?)) - } + HashType::Sha256 + | HashType::Sha512 + | HashType::Shake128 + | HashType::Shake256 + | HashType::Shake256_64 => Ok(HashManager::Sha(ShaHash::new(hash_type)?)), } } diff --git a/src/hash/sha_hash.rs b/src/hash/sha_hash.rs index 0f9c0dc..d791580 100644 --- a/src/hash/sha_hash.rs +++ b/src/hash/sha_hash.rs @@ -24,6 +24,7 @@ impl Hash for ShaHash { HashType::Sha512 => MessageDigest::sha512(), HashType::Shake128 => MessageDigest::shake_128(), HashType::Shake256 => MessageDigest::shake_256(), + HashType::Shake256_64 => MessageDigest::shake_256(), }; Ok(ShaHash { hash_type, digest }) @@ -38,6 +39,15 @@ impl Hash for ShaHash { hasher .update(message) .map_err(|_| QuantCryptError::Unknown)?; + // SHAKE256/64 needs a 64-byte XOF output; the default finish() would + // return the digest's default length (32 bytes for SHAKE256). + if matches!(self.hash_type, HashType::Shake256_64) { + let mut buf = [0u8; 64]; + hasher + .finish_xof(&mut buf) + .map_err(|_| QuantCryptError::Unknown)?; + return Ok(buf.to_vec()); + } let msg = hasher.finish().map_err(|_| QuantCryptError::Unknown)?; Ok(msg.to_vec()) } diff --git a/src/kem/api/algorithm.rs b/src/kem/api/algorithm.rs index c8ae035..f22b72e 100644 --- a/src/kem/api/algorithm.rs +++ b/src/kem/api/algorithm.rs @@ -14,11 +14,14 @@ pub enum KemAlgorithm { MlKem768Rsa3072, MlKem768Rsa4096, MlKem768X25519, + MlKem768P256, MlKem768P384, MlKem768BrainpoolP256r1, + MlKem1024Rsa3072, MlKem1024P384, MlKem1024BrainpoolP384r1, MlKem1024X448, + MlKem1024P521, } impl KemAlgorithm { @@ -39,11 +42,14 @@ impl KemAlgorithm { KemAlgorithm::MlKem768Rsa3072 => KemType::MlKem768Rsa3072, KemAlgorithm::MlKem768Rsa4096 => KemType::MlKem768Rsa4096, KemAlgorithm::MlKem768X25519 => KemType::MlKem768X25519, + KemAlgorithm::MlKem768P256 => KemType::MlKem768P256, KemAlgorithm::MlKem768P384 => KemType::MlKem768P384, KemAlgorithm::MlKem768BrainpoolP256r1 => KemType::MlKem768BrainpoolP256r1, + KemAlgorithm::MlKem1024Rsa3072 => KemType::MlKem1024Rsa3072, KemAlgorithm::MlKem1024P384 => KemType::MlKem1024P384, KemAlgorithm::MlKem1024BrainpoolP384r1 => KemType::MlKem1024BrainpoolP384r1, KemAlgorithm::MlKem1024X448 => KemType::MlKem1024X448, + KemAlgorithm::MlKem1024P521 => KemType::MlKem1024P521, } } diff --git a/src/kem/asn1/composite_kem_primitives.rs b/src/kem/asn1/composite_kem_primitives.rs index fc02034..e216a01 100644 --- a/src/kem/asn1/composite_kem_primitives.rs +++ b/src/kem/asn1/composite_kem_primitives.rs @@ -1,13 +1,21 @@ -use der::asn1::OctetString; -use der_derive::Sequence; +use crate::QuantCryptError; -#[derive(Debug, Clone, PartialEq, Eq, Sequence)] -/// The composite ciphertext value +type Result = std::result::Result; + +/// The composite ciphertext value. +/// +/// Per draft-ietf-lamps-pq-composite-kem-15 Section 4.3, the composite +/// ciphertext is the simple concatenation of the fixed-length ML-KEM ciphertext +/// with the traditional ciphertext: `mlkemCT || tradCT`. On deserialization the +/// fixed-length ML-KEM ciphertext is split off the front (its length is +/// determined by the ML-KEM parameter set of the composite algorithm) and the +/// remainder is the traditional ciphertext. +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CompositeCiphertextValue { /// The ciphertext for the post-quantum KEM - pq_ct: OctetString, + pq_ct: Vec, /// The ciphertext for the traditional KEM - trad_ct: OctetString, + trad_ct: Vec, } impl CompositeCiphertextValue { @@ -18,50 +26,58 @@ impl CompositeCiphertextValue { /// * `pq_ct` - The ciphertext for the post-quantum KEM /// * `trad_ct` - The ciphertext for the traditional KEM pub fn new(pq_ct: &[u8], trad_ct: &[u8]) -> Self { - let pq_ct = OctetString::new(pq_ct).unwrap(); - let trad_ct = OctetString::new(trad_ct).unwrap(); - Self { pq_ct, trad_ct } + Self { + pq_ct: pq_ct.to_vec(), + trad_ct: trad_ct.to_vec(), + } } /// Get the ciphertext for the post-quantum KEM - /// - /// # Returns - /// - /// The ciphertext for the post-quantum KEM pub fn get_pq_ct(&self) -> Vec { - self.pq_ct.as_bytes().to_vec() + self.pq_ct.clone() } /// Get the ciphertext for the traditional KEM - /// - /// # Returns - /// - /// The ciphertext for the traditional KEM pub fn get_trad_ct(&self) -> Vec { - self.trad_ct.as_bytes().to_vec() + self.trad_ct.clone() + } + + /// Serialize as `mlkemCT || tradCT`. + pub fn to_der(&self) -> Result> { + let mut out = Vec::with_capacity(self.pq_ct.len() + self.trad_ct.len()); + out.extend_from_slice(&self.pq_ct); + out.extend_from_slice(&self.trad_ct); + Ok(out) + } + + /// Deserialize `mlkemCT || tradCT`, splitting at the fixed ML-KEM ciphertext + /// length `pq_ct_len`. + pub fn from_der(der: &[u8], pq_ct_len: usize) -> Result { + if der.len() < pq_ct_len { + return Err(QuantCryptError::InvalidCiphertext); + } + let (pq_ct, trad_ct) = der.split_at(pq_ct_len); + Ok(Self::new(pq_ct, trad_ct)) } } #[cfg(test)] mod tests { use super::*; - use der::{Decode, Encode}; #[test] fn test_composite_ciphertext_value() { - let trad_bytes: Vec = vec![0, 1, 2]; let pq_bytes: Vec = vec![4, 5, 6]; + let trad_bytes: Vec = vec![0, 1, 2]; let composite_ciphertext_value = CompositeCiphertextValue::new(&pq_bytes, &trad_bytes); - // Encode the composite KEM public key let encoded = composite_ciphertext_value.to_der().unwrap(); + // Raw concatenation: mlkemCT || tradCT. + assert_eq!(encoded, vec![4, 5, 6, 0, 1, 2]); - // Write the encoded bytes to a file - //std::fs::write("composite_ciphertext_value.der", &encoded).unwrap(); - - // Check that the encoded bytes are correct - let decoded = CompositeCiphertextValue::from_der(&encoded).unwrap(); + // Split at the ML-KEM (pq) ciphertext length. + let decoded = CompositeCiphertextValue::from_der(&encoded, pq_bytes.len()).unwrap(); assert_eq!(decoded.get_trad_ct(), trad_bytes); assert_eq!(decoded.get_pq_ct(), pq_bytes); } diff --git a/src/kem/common/config/ct_len.rs b/src/kem/common/config/ct_len.rs index a81c4c4..e69bf24 100644 --- a/src/kem/common/config/ct_len.rs +++ b/src/kem/common/config/ct_len.rs @@ -18,6 +18,7 @@ impl CTLen for KemType { KemType::X25519 => Some(32), KemType::BrainpoolP256r1 => Some(65), KemType::BrainpoolP384r1 => Some(97), + KemType::P521 => Some(133), KemType::X448 => Some(56), // RSA is dependent on the key size KemType::RsaOAEP2048 => Some(256), @@ -28,16 +29,24 @@ impl CTLen for KemType { KemType::MlKem768 => Some(1088), KemType::MlKem1024 => Some(1568), - // KEM CT + Trad CT + ASN.1 overhead - KemType::MlKem768BrainpoolP256r1 => Some(1088 + 65 + 10), - KemType::MlKem768X25519 => Some(1088 + 32 + 10), - KemType::MlKem1024P384 => Some(1568 + 97 + 10), - KemType::MlKem1024BrainpoolP384r1 => Some(1568 + 97 + 10), - KemType::MlKem1024X448 => Some(1568 + 56 + 10), - KemType::MlKem768Rsa2048 => Some(1088 + 256 + 12), - KemType::MlKem768Rsa3072 => Some(1088 + 384 + 12), - KemType::MlKem768Rsa4096 => Some(1088 + 512 + 12), - KemType::MlKem768P384 => Some(1088 + 97 + 10), + // draft-15 composite ciphertext = mlkemCT || tradCT (raw + // concatenation, no ASN.1 wrapper). Both ML-KEM ciphertexts and the + // traditional ciphertexts (ECDH ephemeral point or RSA-OAEP block of + // modulus size) are fixed length, so the totals are exact. + KemType::MlKem768BrainpoolP256r1 => Some(1088 + 65), + KemType::MlKem768X25519 => Some(1088 + 32), + KemType::MlKem1024P384 => Some(1568 + 97), + KemType::MlKem1024BrainpoolP384r1 => Some(1568 + 97), + KemType::MlKem1024X448 => Some(1568 + 56), + KemType::MlKem768Rsa2048 => Some(1088 + 256), + KemType::MlKem768Rsa3072 => Some(1088 + 384), + KemType::MlKem768Rsa4096 => Some(1088 + 512), + KemType::MlKem768P384 => Some(1088 + 97), + KemType::MlKem768P256 => Some(1088 + 65), + KemType::MlKem1024Rsa3072 => Some(1568 + 384), + // P-521 ciphertext (ephemeral point) is 133 bytes -> 2-byte DER + // length, +11 framing (one more than the shorter curves' +10). + KemType::MlKem1024P521 => Some(1568 + 133), KemType::XWing => Some(1120), } } diff --git a/src/kem/common/config/label.rs b/src/kem/common/config/label.rs new file mode 100644 index 0000000..cc766c4 --- /dev/null +++ b/src/kem/common/config/label.rs @@ -0,0 +1,38 @@ +use crate::kem::common::kem_type::KemType; + +/// A trait to get the KEM Combiner Label for a Composite ML-KEM algorithm, as +/// defined in draft-ietf-lamps-pq-composite-kem-15 Section 7 ("KEM Combiner +/// Labels"). +/// +/// The Label is a fixed per-algorithm octet string mixed into the SHA3-256 KEM +/// combiner (`ss = SHA3-256(mlkemSS || tradSS || tradCT || tradPK || Label)`) +/// to bind the derived shared secret to the specific composite algorithm. +pub trait CompositeLabel { + /// Get the KEM Combiner Label bytes, or `None` if the algorithm is not a + /// composite (pure ML-KEM / traditional KEMs have no Label). + fn get_label(&self) -> Option>; +} + +impl CompositeLabel for KemType { + fn get_label(&self) -> Option> { + let label: &[u8] = match self { + KemType::MlKem768Rsa2048 => b"MLKEM768-RSAOAEP2048", + KemType::MlKem768Rsa3072 => b"MLKEM768-RSAOAEP3072", + KemType::MlKem768Rsa4096 => b"MLKEM768-RSAOAEP4096", + // id-MLKEM768-X25519 uses the non-alphanumeric label "\.//^\", + // provided in the draft only in hex to avoid transcription errors. + KemType::MlKem768X25519 => &[0x5c, 0x2e, 0x2f, 0x2f, 0x5e, 0x5c], + KemType::MlKem768P256 => b"MLKEM768-P256", + KemType::MlKem768P384 => b"MLKEM768-P384", + KemType::MlKem768BrainpoolP256r1 => b"MLKEM768-BP256", + KemType::MlKem1024Rsa3072 => b"MLKEM1024-RSAOAEP3072", + KemType::MlKem1024P384 => b"MLKEM1024-P384", + KemType::MlKem1024BrainpoolP384r1 => b"MLKEM1024-BP384", + KemType::MlKem1024X448 => b"MLKEM1024-X448", + KemType::MlKem1024P521 => b"MLKEM1024-P521", + // Pure ML-KEM, traditional KEMs, and X-Wing are not composites. + _ => return None, + }; + Some(label.to_vec()) + } +} diff --git a/src/kem/common/config/mod.rs b/src/kem/common/config/mod.rs index 0b6ee5e..d980c49 100644 --- a/src/kem/common/config/mod.rs +++ b/src/kem/common/config/mod.rs @@ -1,4 +1,5 @@ pub mod ct_len; +pub mod label; pub mod oids; pub mod pk_len; pub mod sk_len; diff --git a/src/kem/common/config/oids.rs b/src/kem/common/config/oids.rs index 9c688f8..b42d414 100644 --- a/src/kem/common/config/oids.rs +++ b/src/kem/common/config/oids.rs @@ -18,19 +18,24 @@ impl Oid for KemType { /// The OID for the KEM fn get_oid(&self) -> String { match self { - KemType::MlKem768Rsa2048 => "2.16.840.1.114027.80.5.2.21", - KemType::MlKem768Rsa3072 => "2.16.840.1.114027.80.5.2.22", - KemType::MlKem768Rsa4096 => "2.16.840.1.114027.80.5.2.23", - KemType::MlKem768X25519 => "2.16.840.1.114027.80.5.2.24", - KemType::MlKem768P384 => "2.16.840.1.114027.80.5.2.25", - KemType::MlKem768BrainpoolP256r1 => "2.16.840.1.114027.80.5.2.26", - KemType::MlKem1024P384 => "2.16.840.1.114027.80.5.2.27", - KemType::MlKem1024BrainpoolP384r1 => "2.16.840.1.114027.80.5.2.28", - KemType::MlKem1024X448 => "2.16.840.1.114027.80.5.2.29", + // Composite ML-KEM (draft-ietf-lamps-pq-composite-kem-15, production IANA arc) + KemType::MlKem768Rsa2048 => "1.3.6.1.5.5.7.6.55", + KemType::MlKem768Rsa3072 => "1.3.6.1.5.5.7.6.56", + KemType::MlKem768Rsa4096 => "1.3.6.1.5.5.7.6.57", + KemType::MlKem768X25519 => "1.3.6.1.5.5.7.6.58", + KemType::MlKem768P256 => "1.3.6.1.5.5.7.6.59", + KemType::MlKem768P384 => "1.3.6.1.5.5.7.6.60", + KemType::MlKem768BrainpoolP256r1 => "1.3.6.1.5.5.7.6.61", + KemType::MlKem1024Rsa3072 => "1.3.6.1.5.5.7.6.62", + KemType::MlKem1024P384 => "1.3.6.1.5.5.7.6.63", + KemType::MlKem1024BrainpoolP384r1 => "1.3.6.1.5.5.7.6.64", + KemType::MlKem1024X448 => "1.3.6.1.5.5.7.6.65", + KemType::MlKem1024P521 => "1.3.6.1.5.5.7.6.66", // EC Types: KemType::P256 => "1.2.840.10045.3.1.7", KemType::P384 => "1.3.132.0.34", + KemType::P521 => "1.3.132.0.35", KemType::X25519 => "1.3.101.110", // RFC 8410 KemType::X448 => "1.3.101.111", KemType::BrainpoolP256r1 => "1.3.36.3.3.2.8.1.7", // RFC 5639 diff --git a/src/kem/common/config/pk_len.rs b/src/kem/common/config/pk_len.rs index 7b0ea3d..091bec0 100644 --- a/src/kem/common/config/pk_len.rs +++ b/src/kem/common/config/pk_len.rs @@ -20,6 +20,7 @@ impl PKLen for KemType { KemType::X25519 => Some(32), KemType::BrainpoolP256r1 => Some(65), KemType::BrainpoolP384r1 => Some(97), + KemType::P521 => Some(133), KemType::X448 => Some(56), // ML Key public key sizes KemType::MlKem512 => Some(800), @@ -30,16 +31,23 @@ impl PKLen for KemType { KemType::RsaOAEP3072 => Some(398), KemType::RsaOAEP4096 => Some(526), - // KEM Pk + Trad Pk + ASN.1 overhead - KemType::MlKem768BrainpoolP256r1 => Some(1184 + 65 + 12), - KemType::MlKem768X25519 => Some(1184 + 32 + 12), - KemType::MlKem1024P384 => Some(1568 + 97 + 12), - KemType::MlKem1024BrainpoolP384r1 => Some(1568 + 97 + 12), - KemType::MlKem1024X448 => Some(1568 + 56 + 12), - KemType::MlKem768Rsa2048 => Some(1184 + 270 + 14), - KemType::MlKem768Rsa3072 => Some(1184 + 398 + 14), - KemType::MlKem768Rsa4096 => Some(1184 + 526 + 14), - KemType::MlKem768P384 => Some(1184 + 97 + 12), + // draft-15 composite public key = mlkemPK || tradPK (raw + // concatenation, no ASN.1 wrapper). For ECDH components the + // traditional public key is a fixed-size point, so the total is + // exact. RSA public keys are DER-encoded and their length varies + // slightly with leading-zero stripping, so those are `None`. + KemType::MlKem768BrainpoolP256r1 => Some(1184 + 65), + KemType::MlKem768X25519 => Some(1184 + 32), + KemType::MlKem1024P384 => Some(1568 + 97), + KemType::MlKem1024BrainpoolP384r1 => Some(1568 + 97), + KemType::MlKem1024X448 => Some(1568 + 56), + KemType::MlKem768Rsa2048 => None, + KemType::MlKem768Rsa3072 => None, + KemType::MlKem768Rsa4096 => None, + KemType::MlKem768P256 => Some(1184 + 65), + KemType::MlKem768P384 => Some(1184 + 97), + KemType::MlKem1024Rsa3072 => None, + KemType::MlKem1024P521 => Some(1568 + 133), KemType::XWing => Some(1216), } diff --git a/src/kem/common/config/sk_len.rs b/src/kem/common/config/sk_len.rs index ffdc067..b1f89d7 100644 --- a/src/kem/common/config/sk_len.rs +++ b/src/kem/common/config/sk_len.rs @@ -26,6 +26,7 @@ impl SKLen for KemType { KemType::X25519 => Some(32), KemType::BrainpoolP256r1 => Some(32), KemType::BrainpoolP384r1 => Some(48), + KemType::P521 => Some(66), KemType::X448 => Some(56), // ML Key secret key sizes KemType::MlKem512 => Some(1632), @@ -36,18 +37,21 @@ impl SKLen for KemType { KemType::RsaOAEP3072 => None, KemType::RsaOAEP4096 => None, - // In Kem composites, traditional public key is part of the private key - // pq_sk + trad_sk + pq_overhead + trad_public_key_overhead + trad_overhead + sequence_overhead - // trad_overhead = 9 + - KemType::MlKem768BrainpoolP256r1 => Some(2400 + 32 + 24 + (65 + 6) + 19 + 4), - KemType::MlKem768X25519 => Some(2400 + 32 + 24 + (32 + 11) + 14 + 4), - KemType::MlKem1024P384 => Some(3168 + 48 + 24 + (97 + 10) + 16 + 4), - KemType::MlKem1024BrainpoolP384r1 => Some(3168 + 48 + 24 + (97 + 7) + 19 + 4), - KemType::MlKem1024X448 => Some(3168 + 56 + 24 + (56 + 12) + 14 + 4), + // Composite private key DER length depends on the (now production + // arc) composite OID and per-component DER framing; it is not a + // fixed value we strictly validate, so it is reported as variable. + KemType::MlKem768BrainpoolP256r1 => None, + KemType::MlKem768X25519 => None, + KemType::MlKem1024P384 => None, + KemType::MlKem1024BrainpoolP384r1 => None, + KemType::MlKem1024X448 => None, KemType::MlKem768Rsa2048 => None, KemType::MlKem768Rsa3072 => None, KemType::MlKem768Rsa4096 => None, - KemType::MlKem768P384 => Some(2400 + 48 + 24 + (97 + 10) + 16 + 4), + KemType::MlKem768P384 => None, + KemType::MlKem768P256 => None, + KemType::MlKem1024Rsa3072 => None, + KemType::MlKem1024P521 => None, KemType::XWing => Some(32), } } diff --git a/src/kem/common/config/ss_len.rs b/src/kem/common/config/ss_len.rs index f3eb7d7..070e59d 100644 --- a/src/kem/common/config/ss_len.rs +++ b/src/kem/common/config/ss_len.rs @@ -26,6 +26,7 @@ impl SSLen for KemType { KemType::X25519 => 32, KemType::BrainpoolP256r1 => 32, KemType::BrainpoolP384r1 => 48, + KemType::P521 => 66, KemType::X448 => 56, // RSA is always 32 bytes KemType::RsaOAEP2048 => 32, @@ -46,6 +47,9 @@ impl SSLen for KemType { KemType::MlKem768Rsa3072 => 32, KemType::MlKem768Rsa4096 => 32, KemType::MlKem768P384 => 32, + KemType::MlKem768P256 => 32, + KemType::MlKem1024Rsa3072 => 32, + KemType::MlKem1024P521 => 32, KemType::XWing => 32, } } diff --git a/src/kem/common/kem_type.rs b/src/kem/common/kem_type.rs index cdac775..7c28835 100644 --- a/src/kem/common/kem_type.rs +++ b/src/kem/common/kem_type.rs @@ -15,6 +15,8 @@ pub enum KemType { BrainpoolP256r1, /// BrainpoolP384r1 key encapsulation mechanism BrainpoolP384r1, + /// NIST P-521 key encapsulation mechanism + P521, /// X448 key encapsulation mechanism X448, /// RSA 2048 key encapsulation mechanism @@ -30,7 +32,7 @@ pub enum KemType { /// MlKem1024 key encapsulation mechanism MlKem1024, - // The compsite algorithm list is from the latest editor's draft: + // Composite ML-KEM (draft-ietf-lamps-pq-composite-kem-15): /// id-MLKEM768-RSA2048 MlKem768Rsa2048, /// id-MLKEM768-RSA3072 @@ -39,16 +41,22 @@ pub enum KemType { MlKem768Rsa4096, /// id-MLKEM768-X25519 MlKem768X25519, + /// id-MLKEM768-ECDH-P256 + MlKem768P256, /// id-MLKEM768-ECDH-P384 MlKem768P384, /// id-MLKEM768-ECDH-brainpoolP256r1 MlKem768BrainpoolP256r1, + /// id-MLKEM1024-RSA3072 + MlKem1024Rsa3072, /// id-MLKEM1024-ECDH-P384 MlKem1024P384, /// id-MLKEM1024-ECDH-brainpoolP384r1 MlKem1024BrainpoolP384r1, /// id-MLKEM1024-X448 MlKem1024X448, + /// id-MLKEM1024-ECDH-P521 + MlKem1024P521, /// XWing XWing, diff --git a/src/kem/composite_kem.rs b/src/kem/composite_kem.rs index e8d0d3f..a3f2c60 100644 --- a/src/kem/composite_kem.rs +++ b/src/kem/composite_kem.rs @@ -1,19 +1,43 @@ -use crate::asn1::asn_util::oid_to_der; use crate::asn1::composite_private_key::CompositePrivateKey; use crate::asn1::composite_public_key::CompositePublicKey; use crate::kem::asn1::composite_kem_primitives::CompositeCiphertextValue; +use crate::kem::common::config::label::CompositeLabel; use crate::kem::common::kdf::{Kdf, KdfType}; use crate::kem::common::kem_info::KemInfo; use crate::kem::common::kem_trait::Kem; use crate::kem::common::kem_type::KemType; use crate::kem::kem_manager::KemManager; +use crate::utils::openssl_utils::{ + ec_private_key_der_to_scalar, ec_scalar_to_ec_private_key_der, get_pk_from_sk_ec_based, + get_pk_from_sk_pkey_based, +}; use crate::QuantCryptError; -use der::{Decode, Encode}; -use pkcs8::{AlgorithmIdentifierRef, ObjectIdentifier, PrivateKeyInfo}; -use rand_core::CryptoRngCore; +use openssl::nid::Nid; +use openssl::pkey::Id; +use rand_core::{CryptoRngCore, SeedableRng}; +use rsa::pkcs1::{DecodeRsaPrivateKey, EncodeRsaPublicKey}; +use rsa::RsaPrivateKey; type Result = std::result::Result; +/// The fixed byte length of the ML-KEM seed (`d || z`) stored in a composite +/// private key (draft-15 §4.2). +const ML_KEM_SEED_LEN: usize = 64; + +/// Map a traditional KEM `KemType` to the OpenSSL curve `Nid` when its composite +/// private key must carry a DER `ECPrivateKey`. Returns `None` for RSA and the +/// Montgomery curves X25519/X448 (stored raw). +fn trad_ec_nid(kem_type: &KemType) -> Option { + match kem_type { + KemType::P256 => Some(Nid::X9_62_PRIME256V1), + KemType::P384 => Some(Nid::SECP384R1), + KemType::P521 => Some(Nid::SECP521R1), + KemType::BrainpoolP256r1 => Some(Nid::BRAINPOOL_P256R1), + KemType::BrainpoolP384r1 => Some(Nid::BRAINPOOL_P384R1), + _ => None, + } +} + /// A KEM manager for the composite KEM method pub struct CompositeKemManager { /// The KEM metadata information @@ -49,14 +73,20 @@ impl CompositeKemManager { trad_ct: &[u8], trad_pk: &[u8], ) -> Result> { + // draft-ietf-lamps-pq-composite-kem-15 Section 3.4: + // ss = SHA3-256(mlkemSS || tradSS || tradCT || tradPK || Label) let mut combined_ss: Vec = Vec::new(); combined_ss.extend_from_slice(pq_kem_ss); combined_ss.extend_from_slice(trad_kem_ss); combined_ss.extend_from_slice(trad_ct); combined_ss.extend_from_slice(trad_pk); - let dom_sep = oid_to_der(&self.kem_info.oid)?; - combined_ss.extend_from_slice(&dom_sep); + let label = self + .kem_info + .kem_type + .get_label() + .ok_or(QuantCryptError::NotImplemented)?; + combined_ss.extend_from_slice(&label); let ss = self.kdf.kdf(&combined_ss); @@ -76,62 +106,75 @@ impl CompositeKemManager { /// /// A tuple containing the composite public key and secret key. It is CompositeKEMPublicKey, CompositeKEMPrivateKey /// objects in ASN.1 format converted to DER - fn key_gen_composite( + /// The traditional KEM `KemType` backing this composite. + fn trad_kem_type(&self) -> KemType { + self.trad_kem.get_kem_info().kem_type + } + + /// Encode a raw traditional secret key into the encoding required by the + /// composite private key: DER `ECPrivateKey` for prime/Brainpool curves, + /// otherwise the key as-is (raw X25519/X448, DER `RSAPrivateKey`). + fn encode_trad_sk(&self, raw: &[u8]) -> Result> { + if let Some(nid) = trad_ec_nid(&self.trad_kem_type()) { + ec_scalar_to_ec_private_key_der(nid, raw) + .map_err(|_| QuantCryptError::KeyPairGenerationFailed) + } else { + Ok(raw.to_vec()) + } + } + + /// Inverse of [`Self::encode_trad_sk`]: recover the raw traditional secret + /// key our component decapsulator expects. + fn decode_trad_sk(&self, encoded: &[u8]) -> Result> { + if trad_ec_nid(&self.trad_kem_type()).is_some() { + ec_private_key_der_to_scalar(encoded).map_err(|_| QuantCryptError::InvalidPrivateKey) + } else { + Ok(encoded.to_vec()) + } + } + + /// Derive the traditional public key from the raw traditional secret key. + /// The composite KEM combiner needs `tradPK`, but draft-15 private keys do + /// not store it, so it is recomputed from the secret key on decapsulation. + /// The encoding matches what key generation places in the composite public + /// key (uncompressed EC point / raw Montgomery key / DER `RSAPublicKey`). + fn derive_trad_pk(&self, trad_sk_raw: &[u8]) -> Result> { + let result = match self.trad_kem_type() { + KemType::P256 => get_pk_from_sk_ec_based(trad_sk_raw, Nid::X9_62_PRIME256V1), + KemType::P384 => get_pk_from_sk_ec_based(trad_sk_raw, Nid::SECP384R1), + KemType::P521 => get_pk_from_sk_ec_based(trad_sk_raw, Nid::SECP521R1), + KemType::BrainpoolP256r1 => get_pk_from_sk_ec_based(trad_sk_raw, Nid::BRAINPOOL_P256R1), + KemType::BrainpoolP384r1 => get_pk_from_sk_ec_based(trad_sk_raw, Nid::BRAINPOOL_P384R1), + KemType::X25519 => get_pk_from_sk_pkey_based(trad_sk_raw, Id::X25519), + KemType::X448 => get_pk_from_sk_pkey_based(trad_sk_raw, Id::X448), + KemType::RsaOAEP2048 | KemType::RsaOAEP3072 | KemType::RsaOAEP4096 => { + let sk = RsaPrivateKey::from_pkcs1_der(trad_sk_raw) + .map_err(|_| QuantCryptError::InvalidPrivateKey)?; + let der = sk + .to_public_key() + .to_pkcs1_der() + .map_err(|_| QuantCryptError::InvalidPrivateKey)?; + return Ok(der.as_bytes().to_vec()); + } + _ => return Err(QuantCryptError::NotImplemented), + }; + result.map_err(|_| QuantCryptError::DecapFailed) + } + + /// Assemble the composite public and private key encodings from the + /// traditional key pair and the ML-KEM seed. + fn assemble_keys( &self, t_pk: &[u8], - t_sk: &[u8], - pq_pk: &[u8], - pq_sk: &[u8], + t_sk_raw: &[u8], + pq_ek: &[u8], + pq_seed: &[u8], ) -> Result<(Vec, Vec)> { - // Create the composite public key - let c_pk = CompositePublicKey::new(&self.kem_info.oid, pq_pk, t_pk); + let c_pk = CompositePublicKey::new(&self.kem_info.oid, pq_ek, t_pk); let pk = c_pk.to_der()?; - let oid: ObjectIdentifier = self - .kem_info - .oid - .parse() - .map_err(|_| QuantCryptError::InvalidOid)?; - - // Create the OneAsymmetricKey objects for the tradition secret key - let t_sk_pkcs8 = PrivateKeyInfo { - algorithm: AlgorithmIdentifierRef { - oid, - parameters: None, - }, - private_key: t_sk, - // The public key SHOULD be included in the secret key for the traditional KEM - - /* - However, the public key of the traditional component, RSA or Elliptic Curve, is - required as input to the KEM Combiner function, and is not typically carried - within an RSA or Elliptic Curve private key. Therefore the publicKey field of - the second OneAsymmetricKey MUST contain the corresponding - public key. See Appendix C.3: - https://lamps-wg.github.io/draft-composite-kem/draft-ietf-lamps-pq-composite-kem.html#impl-cons-decaps-pubkey - */ - public_key: Some(t_pk), - }; - - let oid: ObjectIdentifier = self - .pq_kem - .get_kem_info() - .oid - .parse() - .map_err(|_| QuantCryptError::InvalidOid)?; - - // Create the OneAsymmetricKey objects for the post-quantum secret key - let pq_sk_pkcs8 = PrivateKeyInfo { - algorithm: AlgorithmIdentifierRef { - oid, - parameters: None, - }, - private_key: pq_sk, - public_key: None, - }; - - // Create the composite secret key - let c_sk = CompositePrivateKey::new_kem(&self.kem_info.oid, &pq_sk_pkcs8, &t_sk_pkcs8)?; + let t_sk_enc = self.encode_trad_sk(t_sk_raw)?; + let c_sk = CompositePrivateKey::new(&self.kem_info.oid, pq_seed, &t_sk_enc); let sk = c_sk.to_der()?; Ok((pk, sk)) @@ -155,19 +198,19 @@ impl Kem for CompositeKemManager { kem_info, trad_kem: Box::new(KemManager::new(KemType::RsaOAEP2048)?), pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), - kdf: Kdf::new(KdfType::HkdfSha256), + kdf: Kdf::new(KdfType::Sha3_256), }, KemType::MlKem768Rsa3072 => Self { kem_info, trad_kem: Box::new(KemManager::new(KemType::RsaOAEP3072)?), pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), - kdf: Kdf::new(KdfType::HkdfSha256), + kdf: Kdf::new(KdfType::Sha3_256), }, KemType::MlKem768Rsa4096 => Self { kem_info, trad_kem: Box::new(KemManager::new(KemType::RsaOAEP4096)?), pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), - kdf: Kdf::new(KdfType::HkdfSha256), + kdf: Kdf::new(KdfType::Sha3_256), }, KemType::MlKem768X25519 => Self { kem_info, @@ -179,13 +222,13 @@ impl Kem for CompositeKemManager { kem_info, trad_kem: Box::new(KemManager::new(KemType::P384)?), pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), - kdf: Kdf::new(KdfType::HkdfSha256), + kdf: Kdf::new(KdfType::Sha3_256), }, KemType::MlKem768BrainpoolP256r1 => Self { kem_info, trad_kem: Box::new(KemManager::new(KemType::BrainpoolP256r1)?), pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), - kdf: Kdf::new(KdfType::HkdfSha256), + kdf: Kdf::new(KdfType::Sha3_256), }, KemType::MlKem1024P384 => Self { kem_info, @@ -205,6 +248,24 @@ impl Kem for CompositeKemManager { pq_kem: Box::new(KemManager::new(KemType::MlKem1024)?), kdf: Kdf::new(KdfType::Sha3_256), }, + KemType::MlKem768P256 => Self { + kem_info, + trad_kem: Box::new(KemManager::new(KemType::P256)?), + pq_kem: Box::new(KemManager::new(KemType::MlKem768)?), + kdf: Kdf::new(KdfType::Sha3_256), + }, + KemType::MlKem1024Rsa3072 => Self { + kem_info, + trad_kem: Box::new(KemManager::new(KemType::RsaOAEP3072)?), + pq_kem: Box::new(KemManager::new(KemType::MlKem1024)?), + kdf: Kdf::new(KdfType::Sha3_256), + }, + KemType::MlKem1024P521 => Self { + kem_info, + trad_kem: Box::new(KemManager::new(KemType::P521)?), + pq_kem: Box::new(KemManager::new(KemType::MlKem1024)?), + kdf: Kdf::new(KdfType::Sha3_256), + }, _ => { return Err(QuantCryptError::NotImplemented); } @@ -221,13 +282,8 @@ impl Kem for CompositeKemManager { /// It is CompositeKEMPublicKey, CompositeKEMPrivateKey objects in ASN.1 /// format converted to DER fn key_gen(&mut self) -> Result<(Vec, Vec)> { - // Get the keypair for the traditional KEM - let (t_pk, t_sk) = self.trad_kem.key_gen()?; - - // Get the keypair for the post-quantum KEM - let (pq_pk, pq_sk) = self.pq_kem.key_gen()?; - - self.key_gen_composite(&t_pk, &t_sk, &pq_pk, &pq_sk) + let mut rng = rand_chacha::ChaCha20Rng::from_entropy(); + self.key_gen_with_rng(&mut rng) } /// Generate a composite KEM keypair @@ -256,12 +312,15 @@ impl Kem for CompositeKemManager { /// ... fn key_gen_with_rng(&mut self, rng: &mut impl CryptoRngCore) -> Result<(Vec, Vec)> { // Get the keypair for the traditional KEM - let (t_pk, t_sk) = self.trad_kem.key_gen_with_rng(rng)?; + let (t_pk, t_sk_raw) = self.trad_kem.key_gen_with_rng(rng)?; - // Get the keypair for the post-quantum KEM - let (pq_pk, pq_sk) = self.pq_kem.key_gen_with_rng(rng)?; + // draft-15: the composite private key stores the 64-byte ML-KEM seed + // (d || z); the encapsulation key is derived from it. + let mut pq_seed = [0u8; ML_KEM_SEED_LEN]; + rng.fill_bytes(&mut pq_seed); + let (pq_ek, _) = self.pq_kem.key_gen_from_seed(&pq_seed)?; - self.key_gen_composite(&t_pk, &t_sk, &pq_pk, &pq_sk) + self.assemble_keys(&t_pk, &t_sk_raw, &pq_ek, &pq_seed) } /// Encapsulate a public key @@ -277,7 +336,12 @@ impl Kem for CompositeKemManager { /// ciphertext is the CompositeCiphertextValue in ASN.1 format converted to DER fn encap(&mut self, pk: &[u8]) -> Result<(Vec, Vec)> { // Deserialize the composite public key - let c_pk = CompositePublicKey::from_der(&self.kem_info.oid, pk)?; + let pq_pk_len = self + .pq_kem + .get_kem_info() + .pk_byte_len + .ok_or(QuantCryptError::InvalidPublicKey)?; + let c_pk = CompositePublicKey::from_der(&self.kem_info.oid, pk, pq_pk_len)?; // Encapsulate the public key for the traditional KEM let (t_ss, t_ct) = self.trad_kem.encap(&c_pk.get_trad_pk())?; @@ -306,31 +370,35 @@ impl Kem for CompositeKemManager { /// /// The shared secret after applying the combiner function fn decap(&self, sk: &[u8], ct: &[u8]) -> Result> { - // Deserialize the composite secret key - let c_sk = CompositePrivateKey::from_der(&self.kem_info.oid, sk)?; - - // Deserialize the composite ciphertext - let c_ct = - CompositeCiphertextValue::from_der(ct).map_err(|_| QuantCryptError::DecapFailed)?; + // Deserialize the composite secret key: mlkemSeed(64) || tradSK. + let c_sk = CompositePrivateKey::from_der(&self.kem_info.oid, sk, ML_KEM_SEED_LEN)?; + let pq_seed = c_sk.get_pq_seed(); + let trad_sk_raw = self.decode_trad_sk(&c_sk.get_trad_sk())?; + + // Deserialize the composite ciphertext, splitting at the ML-KEM + // ciphertext length. + let pq_ct_len = self + .pq_kem + .get_kem_info() + .ct_byte_len + .ok_or(QuantCryptError::DecapFailed)?; + let c_ct = CompositeCiphertextValue::from_der(ct, pq_ct_len) + .map_err(|_| QuantCryptError::DecapFailed)?; // Decapsulate the ciphertext for the traditional KEM - let t_ss = self - .trad_kem - .decap(c_sk.get_kem_trad_sk()?.private_key, &c_ct.get_trad_ct())?; + let t_ss = self.trad_kem.decap(&trad_sk_raw, &c_ct.get_trad_ct())?; - // Decapsulate the ciphertext for the post-quantum KEM - let pq_ss = self - .pq_kem - .decap(c_sk.get_kem_pq_sk()?.private_key, &c_ct.get_pq_ct())?; + // Re-derive the ML-KEM decapsulation key from the stored seed, then + // decapsulate the post-quantum ciphertext. + let (_, pq_dk) = self.pq_kem.key_gen_from_seed(&pq_seed)?; + let pq_ss = self.pq_kem.decap(&pq_dk, &c_ct.get_pq_ct())?; - // Get the trad PK - let t_pk = c_sk - .get_kem_trad_sk()? - .public_key - .ok_or(QuantCryptError::DecapFailed)?; + // The combiner requires tradPK, which draft-15 private keys do not + // store, so it is recomputed from the traditional secret key. + let t_pk = self.derive_trad_pk(&trad_sk_raw)?; // Get the shared secret using the combiner - let ss = self.combiner(&pq_ss, &t_ss, &c_ct.get_trad_ct(), t_pk)?; + let ss = self.combiner(&pq_ss, &t_ss, &c_ct.get_trad_ct(), &t_pk)?; Ok(ss) } @@ -405,4 +473,57 @@ mod tests { let kem = CompositeKemManager::new(KemType::MlKem1024X448); test_kem!(kem); } + + // New composite variants added in draft-15. + #[test] + fn test_mlkem_768_p256() { + let kem = CompositeKemManager::new(KemType::MlKem768P256); + test_kem!(kem); + } + + #[test] + fn test_mlkem_1024_rsa3072() { + let kem = CompositeKemManager::new(KemType::MlKem1024Rsa3072); + test_kem!(kem); + } + + #[test] + fn test_mlkem_1024_p521() { + let kem = CompositeKemManager::new(KemType::MlKem1024P521); + test_kem!(kem); + } + + /// Byte-for-byte validation of the SHA3-256 KEM combiner against the + /// intermediate-value example for id-MLKEM768-ECDH-P256-SHA3-256 in + /// draft-ietf-lamps-pq-composite-kem-15 Appendix E. Confirms the combiner + /// input order (mlkemSS || tradSS || tradCT || tradPK || Label), the Label + /// bytes ("MLKEM768-P256"), and the SHA3-256 output. + #[test] + fn test_kem_combiner_vector_mlkem768_p256() { + let mlkem_ss = + hex::decode("ca48920ded22e063f98a79a4091508678b7042cab63f78c571ff392e82612d43") + .unwrap(); + let trad_ss = + hex::decode("ef1c92443aaf987000e3470d34332b4c53ff0cdd4554b6bf377bf7bdb677d3d0") + .unwrap(); + let trad_ct = hex::decode( + "041d155f6d3078d7e2cd4f9f758947029795dd9ab6d6e92d81d19171270cdefcd4abb6\ + 82edbb22faf961ce75fc688109931bfa24468f646b97eca4d57d5f5e7610", + ) + .unwrap(); + let trad_pk = hex::decode( + "04ba2bfbf7b91182eb1fad54a2940c8b1dfd53de55fa3c02d199a3159ff73d38d29aa9\ + 4f32e3e82bcc99b165320297149455997d7c3ea5ac97cd987d3e80396a3e", + ) + .unwrap(); + let expected_ss = + hex::decode("d6c69aa6e986b620a2777d8cf1fb6be1b2255d6efae0566deb34c882b38846ee") + .unwrap(); + + let kem = CompositeKemManager::new(KemType::MlKem768P256).unwrap(); + let ss = kem + .combiner(&mlkem_ss, &trad_ss, &trad_ct, &trad_pk) + .unwrap(); + assert_eq!(ss, expected_ss); + } } diff --git a/src/kem/ec_kem.rs b/src/kem/ec_kem.rs index 5f4f397..3ab34a9 100644 --- a/src/kem/ec_kem.rs +++ b/src/kem/ec_kem.rs @@ -31,6 +31,7 @@ impl Kem for EcKemManager { let (ec_based_nid, pk_based_id) = match kem_type { KemType::P256 => (Some(Nid::X9_62_PRIME256V1), None), KemType::P384 => (Some(Nid::SECP384R1), None), + KemType::P521 => (Some(Nid::SECP521R1), None), KemType::BrainpoolP256r1 => (Some(Nid::BRAINPOOL_P256R1), None), KemType::BrainpoolP384r1 => (Some(Nid::BRAINPOOL_P384R1), None), KemType::X25519 => (None, Some(Id::X25519)), @@ -159,6 +160,12 @@ mod tests { test_kem!(kem); } + #[test] + fn test_ec_kem_p521() { + let kem = EcKemManager::new(KemType::P521); + test_kem!(kem); + } + #[test] fn test_ec_kem_brainpool_p256r1() { let kem = EcKemManager::new(KemType::BrainpoolP256r1); diff --git a/src/kem/kem_manager.rs b/src/kem/kem_manager.rs index 5039656..5fab019 100644 --- a/src/kem/kem_manager.rs +++ b/src/kem/kem_manager.rs @@ -19,25 +19,29 @@ const RSA_KEM_TYPES: [KemType; 3] = [ KemType::RsaOAEP4096, ]; -const EC_KEM_TYPES: [KemType; 6] = [ +const EC_KEM_TYPES: [KemType; 7] = [ KemType::P256, KemType::P384, + KemType::P521, KemType::X25519, KemType::BrainpoolP256r1, KemType::BrainpoolP384r1, KemType::X448, ]; -const COMPOSITE_KEM_TYPES: [KemType; 9] = [ +const COMPOSITE_KEM_TYPES: [KemType; 12] = [ KemType::MlKem768Rsa2048, KemType::MlKem768Rsa3072, KemType::MlKem768Rsa4096, KemType::MlKem768X25519, + KemType::MlKem768P256, KemType::MlKem768P384, KemType::MlKem768BrainpoolP256r1, + KemType::MlKem1024Rsa3072, KemType::MlKem1024P384, KemType::MlKem1024BrainpoolP384r1, KemType::MlKem1024X448, + KemType::MlKem1024P521, ]; /// Enum to representthe different types of KEM managers @@ -167,6 +171,18 @@ impl Kem for KemManager { } } +impl KemManager { + /// Deterministically derive an ML-KEM key pair from a 64-byte seed. Only + /// ML-KEM managers support this (used by composite KEMs to store the seed); + /// other variants return `NotImplemented`. + pub fn key_gen_from_seed(&self, seed: &[u8]) -> Result<(Vec, Vec)> { + match self { + KemManager::Ml(kem) => kem.key_gen_from_seed(seed), + _ => Err(QuantCryptError::NotImplemented), + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/kem/ml_kem.rs b/src/kem/ml_kem.rs index eea7510..aea449d 100644 --- a/src/kem/ml_kem.rs +++ b/src/kem/ml_kem.rs @@ -85,6 +85,22 @@ pub struct MlKemManager { } impl MlKemManager { + /// Deterministically derive an ML-KEM key pair from a 64-byte seed + /// (`mlkemSeed = d(32) || z(32)`), per FIPS 203. Returns + /// `(encapsulation_key_bytes, decapsulation_key_bytes)`. + /// + /// Composite ML-KEM (draft-15) stores this 64-byte seed as the post-quantum + /// component of the private key; the decapsulation key is re-derived from it + /// on demand. + pub fn key_gen_from_seed(&self, seed: &[u8]) -> Result<(Vec, Vec)> { + if seed.len() != 64 { + return Err(QuantCryptError::InvalidPrivateKey); + } + let d = B32::try_from(&seed[..32]).map_err(|_| QuantCryptError::InvalidPrivateKey)?; + let z = B32::try_from(&seed[32..]).map_err(|_| QuantCryptError::InvalidPrivateKey)?; + self.key_gen_deterministic(&d, &z) + } + pub fn key_gen_deterministic(&self, d: &B32, z: &B32) -> Result<(Vec, Vec)> { match self.kem_info.kem_type { KemType::MlKem512 => { diff --git a/src/utils/openssl_utils.rs b/src/utils/openssl_utils.rs index 447c37f..80770b6 100644 --- a/src/utils/openssl_utils.rs +++ b/src/utils/openssl_utils.rs @@ -437,6 +437,29 @@ pub fn get_pk_from_sk_ec_based(sk: &[u8], nid: Nid) -> Result> { )?) } +/// Convert a raw EC private scalar (big-endian field element, as produced by our +/// EC key generation) into a DER-encoded RFC 5915 `ECPrivateKey` with named-curve +/// parameters. This is the encoding required for the traditional component of a +/// composite private key (draft-ietf-lamps-pq-composite-{sigs,kem}). +pub fn ec_scalar_to_ec_private_key_der(nid: Nid, raw_scalar: &[u8]) -> Result> { + let mut ctx = BigNumContext::new()?; + let group = EcGroup::from_curve_name(nid)?; + let sk_bn = BigNum::from_slice(raw_scalar)?; + let pub_point = compute_public_key(&ctx, &group, &sk_bn)?; + // ctx is no longer needed after computing the public point. + let _ = &mut ctx; + let ec_key = EcKey::from_private_components(&group, &sk_bn, &pub_point)?; + Ok(ec_key.private_key_to_der()?) +} + +/// Convert a DER-encoded RFC 5915 `ECPrivateKey` back into the raw private scalar +/// (big-endian field element) understood by our EC signing/decapsulation code. +/// Accepts keys with or without the optional public-key field. +pub fn ec_private_key_der_to_scalar(der: &[u8]) -> Result> { + let ec_key = EcKey::private_key_from_der(der)?; + Ok(ec_key.private_key().to_vec()) +} + /// Get the public key from a secret key for a PKey based method (not used currently) /// /// # Arguments @@ -553,6 +576,7 @@ mod tests { let nids = [ Nid::X9_62_PRIME256V1, Nid::SECP384R1, + Nid::SECP521R1, Nid::BRAINPOOL_P256R1, Nid::BRAINPOOL_P384R1, ]; diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin new file mode 100644 index 0000000..f25ba1a Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der new file mode 100644 index 0000000..c440d00 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der new file mode 100644 index 0000000..6b0951c Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.raw new file mode 100644 index 0000000..a7d62f3 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin new file mode 100644 index 0000000..4dcfe83 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin @@ -0,0 +1 @@ +����ʔ�h���|�yQ�yH���V�E҄Rl� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin new file mode 100644 index 0000000..edd3c27 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der new file mode 100644 index 0000000..181cf1a Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der new file mode 100644 index 0000000..f6aa5ce Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.raw new file mode 100644 index 0000000..626ba84 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin new file mode 100644 index 0000000..409645d --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin @@ -0,0 +1 @@ +���cm^;�ԙ�mT9�B��Օ�[,�Y��� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin new file mode 100644 index 0000000..3a830c4 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der new file mode 100644 index 0000000..225c936 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der new file mode 100644 index 0000000..0eaad7c Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.raw new file mode 100644 index 0000000..572a03c --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.raw @@ -0,0 +1,3 @@ +��e�>#tr�bz��]e׍�9 ����� +��h���Q��a��]ʏZc�F�_I�0B0f��y�:���ӂ����T�^|�^��6�Ga�8{��� +�K@8?8���w�  +$ \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin new file mode 100644 index 0000000..f4e2135 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin @@ -0,0 +1 @@ +&����� i�jY�c)�{�`��*jG9��uD \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin new file mode 100644 index 0000000..f8e0267 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der new file mode 100644 index 0000000..e9b124a Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der new file mode 100644 index 0000000..4910d21 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.raw new file mode 100644 index 0000000..2608814 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin new file mode 100644 index 0000000..5bcd2ba --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin @@ -0,0 +1 @@ +�cO2�y�O����b.@ϒ��w4�K��+4��$� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin new file mode 100644 index 0000000..7b19b68 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der new file mode 100644 index 0000000..7999029 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der new file mode 100644 index 0000000..4c88e73 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.raw new file mode 100644 index 0000000..70d515e --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.raw @@ -0,0 +1 @@ +���Sm�8��t3�^���Pn�&�-���矱�#��g��q���)�y��U#�mk�q�3""��/�z$[d�{*��P�Y�|�E��{��s�%�Y�X�l�ðk� �ݘ�H�C�j?� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin new file mode 100644 index 0000000..7cc8a71 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin @@ -0,0 +1,2 @@ +T�|�H�/O�a�J�2$��x +���; ���[ \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin new file mode 100644 index 0000000..57ca8d9 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der new file mode 100644 index 0000000..c40ee05 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der new file mode 100644 index 0000000..ca87cc4 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.raw new file mode 100644 index 0000000..6135899 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.raw @@ -0,0 +1,2 @@ +M�:�1����3YIu˖K�d����> )��iH��F�c�u�G�'u���e�_;��pz�#�01 {S�D����a# �]��35DK���͟���� +*�H�= \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin new file mode 100644 index 0000000..e680fc4 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin new file mode 100644 index 0000000..cd4c464 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der new file mode 100644 index 0000000..23cdf2a Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der new file mode 100644 index 0000000..bb447d6 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.raw new file mode 100644 index 0000000..1122636 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin new file mode 100644 index 0000000..e14ff27 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin @@ -0,0 +1 @@ +�lUC��~kxe�5CV�j.p`�K�!�9��ȅ \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin new file mode 100644 index 0000000..e52d543 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der new file mode 100644 index 0000000..257f75b Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der new file mode 100644 index 0000000..1a355ec Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.raw new file mode 100644 index 0000000..2d46f49 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin new file mode 100644 index 0000000..3fd81f4 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin @@ -0,0 +1 @@ +�����H�C��7\^��:�`�I�/i�'{ Ǫ \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin new file mode 100644 index 0000000..3cf4f3d Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der new file mode 100644 index 0000000..f98398d Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der new file mode 100644 index 0000000..84e838a Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.raw new file mode 100644 index 0000000..d4304a9 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin new file mode 100644 index 0000000..a08d347 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin @@ -0,0 +1 @@ +2����<f�:qw��� 3{u�e���x�O!z��T \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin new file mode 100644 index 0000000..e7b96ac Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der new file mode 100644 index 0000000..04920e6 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der new file mode 100644 index 0000000..49f173f Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.raw new file mode 100644 index 0000000..929b065 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin new file mode 100644 index 0000000..a214f53 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin @@ -0,0 +1 @@ +`�a S/���$Uh�����3� ԼȲfX���I \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin new file mode 100644 index 0000000..a81f277 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der new file mode 100644 index 0000000..201d9ff Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der new file mode 100644 index 0000000..4a005ef Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.raw new file mode 100644 index 0000000..d2592ba Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin new file mode 100644 index 0000000..7a486dc --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin @@ -0,0 +1 @@ +�{�%�F�� ��)�|t@�׋���_%찆� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin new file mode 100644 index 0000000..daf4305 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der new file mode 100644 index 0000000..0c79da7 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der new file mode 100644 index 0000000..42565c7 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.raw new file mode 100644 index 0000000..d547d68 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.raw @@ -0,0 +1,2 @@ +�������[ǯ ��o���� �� +�ou����식��%�Ȣ�eJd&L��񥳴?=�;ߌ����҄fg^�%G6��`���҆y����Z \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin new file mode 100644 index 0000000..e796176 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin @@ -0,0 +1 @@ +Ę������Kы��zB�D��}F���)_�-%b \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ciphertext.bin new file mode 100644 index 0000000..ecc4e38 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ee.der new file mode 100644 index 0000000..3af465c Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.der new file mode 100644 index 0000000..0e4f065 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.raw new file mode 100644 index 0000000..b38e201 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_priv.raw @@ -0,0 +1 @@ +�hN3}�455�BS�Fe*P�Y�9�,8�k�y��t:��"?�/����n�0� *��nǧ1 \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ss.bin new file mode 100644 index 0000000..ea28ce5 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-1024-2.16.840.1.101.3.4.4.3_ss.bin @@ -0,0 +1 @@ +2���{�-#��@n�B�)����8I;6GS� \ No newline at end of file diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ciphertext.bin b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ciphertext.bin new file mode 100644 index 0000000..3beb088 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ciphertext.bin differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ee.der b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ee.der new file mode 100644 index 0000000..636c52d Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ee.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.der b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.der new file mode 100644 index 0000000..7b0c1f2 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.der differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.raw b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.raw new file mode 100644 index 0000000..4777287 Binary files /dev/null and b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_priv.raw differ diff --git a/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ss.bin b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ss.bin new file mode 100644 index 0000000..99841d9 --- /dev/null +++ b/test/data/r5_interop/composite-kem-ref-impl/id-alg-ml-kem-768-2.16.840.1.101.3.4.4.2_ss.bin @@ -0,0 +1 @@ +�g� �9� �,�k�d��c�h~�T�0j \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.der new file mode 100644 index 0000000..3d7f665 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.raw new file mode 100644 index 0000000..ad4aa19 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_seed.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der new file mode 100644 index 0000000..6de102b Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.der new file mode 100644 index 0000000..f281f03 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.raw new file mode 100644 index 0000000..a14fc5b --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_seed.raw @@ -0,0 +1 @@ +;}�u �����E����r�l��4'��5�X \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der new file mode 100644 index 0000000..93e5eb7 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.der new file mode 100644 index 0000000..7bebc99 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.raw new file mode 100644 index 0000000..2fe9623 --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_seed.raw @@ -0,0 +1 @@ +8K@��n�����T�z!�v�a�X����� \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der new file mode 100644 index 0000000..a1f48ed Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der new file mode 100644 index 0000000..4f535ef Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.raw new file mode 100644 index 0000000..8c8b64a --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.raw @@ -0,0 +1,2 @@ +�)x�.�*&�S�7��2pκXɦU�ϰXR�I01 s�ܟ����O�ϷJ��v$Y"P�� Z�]MӠ +*�H�= \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der new file mode 100644 index 0000000..d21b353 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der new file mode 100644 index 0000000..0733d83 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.raw new file mode 100644 index 0000000..567a647 --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.raw @@ -0,0 +1 @@ +JBz�@x��Б�@�TjQ�N�5S*r��r"?�P�����6�ZU� ��*��vNJ�٪�A \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der new file mode 100644 index 0000000..375ffb0 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der new file mode 100644 index 0000000..33ea113 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.raw new file mode 100644 index 0000000..77d32ee Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der new file mode 100644 index 0000000..909c2f7 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der new file mode 100644 index 0000000..86c6960 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.raw new file mode 100644 index 0000000..fe5eb3c Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der new file mode 100644 index 0000000..cf604f2 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der new file mode 100644 index 0000000..9df8abf Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.raw new file mode 100644 index 0000000..9e2a0f1 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der new file mode 100644 index 0000000..6ab9876 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der new file mode 100644 index 0000000..e526a31 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.raw new file mode 100644 index 0000000..d8f1ca6 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der new file mode 100644 index 0000000..b082bbd Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der new file mode 100644 index 0000000..50e3989 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.raw new file mode 100644 index 0000000..aa92584 --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.raw @@ -0,0 +1 @@ +U,�� �u�W�5c���$�]Y�)����� �02 ��Z��B:�W���ht>���o�]�<��O �n�  +$ \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der new file mode 100644 index 0000000..ff54b09 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der new file mode 100644 index 0000000..817f1d0 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.raw new file mode 100644 index 0000000..5e00e6e --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.raw @@ -0,0 +1 @@ +כ�A�[{���0-�+v ��(����-�X��! ��n�2�+YD����]P����U��V^5) \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der new file mode 100644 index 0000000..e6da722 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der new file mode 100644 index 0000000..edcfefd Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.raw new file mode 100644 index 0000000..b09ae92 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der new file mode 100644 index 0000000..74b358d Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der new file mode 100644 index 0000000..84622ca Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.raw new file mode 100644 index 0000000..fb738cd Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der new file mode 100644 index 0000000..b0a188f Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der new file mode 100644 index 0000000..baf4537 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.raw new file mode 100644 index 0000000..d7484e4 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der new file mode 100644 index 0000000..5732f0c Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der new file mode 100644 index 0000000..710110f Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.raw new file mode 100644 index 0000000..2b4cd42 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der new file mode 100644 index 0000000..8ef4c90 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der new file mode 100644 index 0000000..fd53ee4 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.raw new file mode 100644 index 0000000..0c80bfd Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der new file mode 100644 index 0000000..dedd9ac Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der new file mode 100644 index 0000000..781a536 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.raw new file mode 100644 index 0000000..a272959 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der new file mode 100644 index 0000000..a9251bb Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der new file mode 100644 index 0000000..82211b7 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.raw new file mode 100644 index 0000000..7a82af1 --- /dev/null +++ b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.raw @@ -0,0 +1 @@ +��8�oYn(6�g��\��x,=��:5�~��0B0Q?&������Y!egG��ۄ^���X*����yR���%]���`^�  +$ \ No newline at end of file diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der new file mode 100644 index 0000000..e4e33ea Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der new file mode 100644 index 0000000..ae84e85 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.raw new file mode 100644 index 0000000..af87554 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der new file mode 100644 index 0000000..535155b Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der new file mode 100644 index 0000000..bcc0130 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.raw new file mode 100644 index 0000000..c05e5bc Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der new file mode 100644 index 0000000..04d58dd Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der new file mode 100644 index 0000000..86a1a12 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.raw b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.raw new file mode 100644 index 0000000..6c24a8c Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.raw differ diff --git a/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der new file mode 100644 index 0000000..fbfbc99 Binary files /dev/null and b/test/data/r5_interop/composite-sigs-ref-impl/id-MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der b/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der new file mode 100644 index 0000000..f2d86a9 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der b/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der new file mode 100644 index 0000000..a83faa5 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der b/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der new file mode 100644 index 0000000..f7faa12 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der b/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der new file mode 100644 index 0000000..9f350c3 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der new file mode 100644 index 0000000..430f016 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der new file mode 100644 index 0000000..b7c9fea Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der new file mode 100644 index 0000000..5c9e1af Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der new file mode 100644 index 0000000..1be48f6 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der new file mode 100644 index 0000000..e0b54dc Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der new file mode 100644 index 0000000..033487d Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der new file mode 100644 index 0000000..a0d8b59 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der new file mode 100644 index 0000000..c15a73c Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der new file mode 100644 index 0000000..a1d7944 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der new file mode 100644 index 0000000..fb9f293 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der new file mode 100644 index 0000000..18cc382 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der new file mode 100644 index 0000000..3bfa9b7 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der new file mode 100644 index 0000000..8af249c Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der new file mode 100644 index 0000000..a13c8c7 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der new file mode 100644 index 0000000..30aa62e Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der new file mode 100644 index 0000000..d379b53 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der new file mode 100644 index 0000000..39d7504 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der new file mode 100644 index 0000000..9e74278 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der new file mode 100644 index 0000000..deb2aa7 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der new file mode 100644 index 0000000..c5072b6 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der new file mode 100644 index 0000000..0017ea5 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der new file mode 100644 index 0000000..a0507ac Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der new file mode 100644 index 0000000..1f84251 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der new file mode 100644 index 0000000..aee7124 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der new file mode 100644 index 0000000..6931537 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der new file mode 100644 index 0000000..c4e48a9 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der new file mode 100644 index 0000000..bbaa18f Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der new file mode 100644 index 0000000..56ea869 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der new file mode 100644 index 0000000..f2c07b2 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der new file mode 100644 index 0000000..88fbe58 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der b/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der new file mode 100644 index 0000000..46237e5 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der b/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der new file mode 100644 index 0000000..6ef6f51 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin new file mode 100644 index 0000000..2d11cdf Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der new file mode 100644 index 0000000..2d9b0bf Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der new file mode 100644 index 0000000..b371e6b Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin new file mode 100644 index 0000000..ab0771a --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin @@ -0,0 +1 @@ +[� �:�]x��dޞ�� p�Œ���+6⍉[ \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin new file mode 100644 index 0000000..044adfb Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der new file mode 100644 index 0000000..367fe6b Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der new file mode 100644 index 0000000..ac3a3d4 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin new file mode 100644 index 0000000..fb82494 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin @@ -0,0 +1 @@ +�wȟ��gJ*���S� a}��e���0(��✹ \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin new file mode 100644 index 0000000..73c9567 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der new file mode 100644 index 0000000..799ff01 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der new file mode 100644 index 0000000..fc68c92 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin new file mode 100644 index 0000000..1baa3ed --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin @@ -0,0 +1 @@ +�sQ��e(w��7���F��y�Qd�2���p�� 9 \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin new file mode 100644 index 0000000..54b2cb6 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der new file mode 100644 index 0000000..70ef09b Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der new file mode 100644 index 0000000..d86ad66 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin new file mode 100644 index 0000000..a87832b --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM1024-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.62_ss.bin @@ -0,0 +1 @@ + T�=7$=���4$����q$Y'�:4~�M r \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin new file mode 100644 index 0000000..64b4d8a Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der new file mode 100644 index 0000000..c8be9e0 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der new file mode 100644 index 0000000..9204cf8 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin new file mode 100644 index 0000000..429be51 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM1024-X448-SHA3-256-1.3.6.1.5.5.7.6.65_ss.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin new file mode 100644 index 0000000..6436693 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der new file mode 100644 index 0000000..75f97f9 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der new file mode 100644 index 0000000..deba0f2 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin new file mode 100644 index 0000000..606e8d0 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P256-SHA3-256-1.3.6.1.5.5.7.6.59_ss.bin @@ -0,0 +1 @@ +i5�ʶ0> �d#鞺4{Ə��:����/� \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin new file mode 100644 index 0000000..8570456 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der new file mode 100644 index 0000000..aa656d2 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der new file mode 100644 index 0000000..3571137 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin new file mode 100644 index 0000000..8793db6 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.60_ss.bin @@ -0,0 +1 @@ +��UDiO{2�e��6�˕p��7��r��05 \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin new file mode 100644 index 0000000..e7a318b Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der new file mode 100644 index 0000000..43e8ad6 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der new file mode 100644 index 0000000..a74b948 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin new file mode 100644 index 0000000..910befc --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-ECDH-brainpoolP256r1-SHA3-256-1.3.6.1.5.5.7.6.61_ss.bin @@ -0,0 +1 @@ +^r�W流GU��p��x ��x�<�T��2U \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin new file mode 100644 index 0000000..eb5b92d Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der new file mode 100644 index 0000000..f2c1cfc Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der new file mode 100644 index 0000000..545b3c1 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin new file mode 100644 index 0000000..a305901 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-RSA2048-SHA3-256-1.3.6.1.5.5.7.6.55_ss.bin @@ -0,0 +1 @@ +��h���jQ͵�zi�? ��|�Y��<�� \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin new file mode 100644 index 0000000..6660b08 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der new file mode 100644 index 0000000..775c423 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der new file mode 100644 index 0000000..f5ada39 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin new file mode 100644 index 0000000..d7a1421 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin @@ -0,0 +1 @@ +��=K�<�B@�Og�À�(ˤ�pQ1�.�� \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin new file mode 100644 index 0000000..289640c Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der new file mode 100644 index 0000000..cc35ba5 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der new file mode 100644 index 0000000..fab5e0a Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin new file mode 100644 index 0000000..be4c026 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin @@ -0,0 +1 @@ +�X7X����� �a]_H��1�H��ul�J \ No newline at end of file diff --git a/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin new file mode 100644 index 0000000..04a8be5 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der new file mode 100644 index 0000000..dd31155 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der new file mode 100644 index 0000000..58d1908 Binary files /dev/null and b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der differ diff --git a/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin new file mode 100644 index 0000000..4cd58f6 --- /dev/null +++ b/test/data/r5_interop/providers/bc/MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin @@ -0,0 +1 @@ +v���p>����~����?��V6d�#h diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_priv.der new file mode 100644 index 0000000..38a5db1 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_ta.der new file mode 100644 index 0000000..96c8320 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_ecdsa_p256_sha256-1.3.6.1.5.5.7.6.40_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_priv.der new file mode 100644 index 0000000..e4583dd Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_ta.der new file mode 100644 index 0000000..b198c8b Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_ed25519_sha512-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_priv.der new file mode 100644 index 0000000..6e31f07 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_ta.der new file mode 100644 index 0000000..330b6cf Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pkcs15_sha256-1.3.6.1.5.5.7.6.38_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_priv.der new file mode 100644 index 0000000..8259191 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_ta.der new file mode 100644 index 0000000..1e7bdad Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa44_rsa2048_pss_sha256-1.3.6.1.5.5.7.6.37_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_priv.der new file mode 100644 index 0000000..3102fa7 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_ta.der new file mode 100644 index 0000000..948ed65 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_brainpoolp256r1_sha512-1.3.6.1.5.5.7.6.47_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_priv.der new file mode 100644 index 0000000..15fb0a6 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_ta.der new file mode 100644 index 0000000..73aac1d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p256_sha512-1.3.6.1.5.5.7.6.45_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_priv.der new file mode 100644 index 0000000..577fb2a Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_ta.der new file mode 100644 index 0000000..7b3480a Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.46_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_priv.der new file mode 100644 index 0000000..cb0dfcf Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_ta.der new file mode 100644 index 0000000..19ccad3 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_ed25519_sha512-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_priv.der new file mode 100644 index 0000000..79f3713 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_ta.der new file mode 100644 index 0000000..c415d7d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pkcs15_sha512-1.3.6.1.5.5.7.6.42_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_priv.der new file mode 100644 index 0000000..c290a1c Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_ta.der new file mode 100644 index 0000000..ea38769 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.41_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_priv.der new file mode 100644 index 0000000..b8b60d2 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_ta.der new file mode 100644 index 0000000..5d5e2e9 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pkcs15_sha512-1.3.6.1.5.5.7.6.44_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_priv.der new file mode 100644 index 0000000..7da88f2 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_ta.der new file mode 100644 index 0000000..ee57cc0 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa65_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.43_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_priv.der new file mode 100644 index 0000000..9b19868 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_ta.der new file mode 100644 index 0000000..e7ea316 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_brainpoolp384r1_sha512-1.3.6.1.5.5.7.6.50_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_priv.der new file mode 100644 index 0000000..1586f72 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_ta.der new file mode 100644 index 0000000..6a5955d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p384_sha512-1.3.6.1.5.5.7.6.49_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_priv.der new file mode 100644 index 0000000..caf8fdf Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_ta.der new file mode 100644 index 0000000..d3f2457 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ecdsa_p521_sha512-1.3.6.1.5.5.7.6.54_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_priv.der new file mode 100644 index 0000000..340b117 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_ta.der new file mode 100644 index 0000000..6033b22 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_ed448_shake256-1.3.6.1.5.5.7.6.51_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_priv.der new file mode 100644 index 0000000..24fd261 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_ta.der new file mode 100644 index 0000000..b1c0385 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa3072_pss_sha512-1.3.6.1.5.5.7.6.52_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_priv.der b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_priv.der new file mode 100644 index 0000000..66da9e3 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_ta.der b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_ta.der new file mode 100644 index 0000000..4c775ed Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mldsa87_rsa4096_pss_sha512-1.3.6.1.5.5.7.6.53_ta.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ciphertext.bin new file mode 100644 index 0000000..ae834f6 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ee.der new file mode 100644 index 0000000..37606dc Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_priv.der new file mode 100644 index 0000000..0999572 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ss.bin new file mode 100644 index 0000000..13f0aa7 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_brainpoolp384r1_sha3_256-1.3.6.1.5.5.7.6.64_ss.bin @@ -0,0 +1,2 @@ +Ip���Օ���]KD2] +�>�k�`��h)T \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ciphertext.bin new file mode 100644 index 0000000..dc39327 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ee.der new file mode 100644 index 0000000..01bce01 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_priv.der new file mode 100644 index 0000000..7b1dcc9 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ss.bin new file mode 100644 index 0000000..9165ea1 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.63_ss.bin @@ -0,0 +1 @@ +Nq�����K��ӓ�y�9�,�ꋡ_�!)��O \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ciphertext.bin new file mode 100644 index 0000000..1ef4a2d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ee.der new file mode 100644 index 0000000..7668e91 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_priv.der new file mode 100644 index 0000000..70e0936 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ss.bin new file mode 100644 index 0000000..8f12cf9 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem1024_ecdh_p521_sha3_256-1.3.6.1.5.5.7.6.66_ss.bin @@ -0,0 +1 @@ +�Ϩ�� � ?}�Q�~r�;�!81�[nqЭ�� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ciphertext.bin new file mode 100644 index 0000000..e55e6b4 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ee.der new file mode 100644 index 0000000..9f487ed Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_priv.der new file mode 100644 index 0000000..65c28b9 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ss.bin new file mode 100644 index 0000000..6f2239e --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem1024_rsa3072_sha3_256-1.3.6.1.5.5.7.6.62_ss.bin @@ -0,0 +1 @@ +�D8!��Ԕ�gZ�= �&`�tՉ��� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ciphertext.bin new file mode 100644 index 0000000..9ae3e1b Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ee.der new file mode 100644 index 0000000..98c3cd8 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_priv.der new file mode 100644 index 0000000..1724454 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ss.bin new file mode 100644 index 0000000..0e63030 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem1024_x448_sha3_256-1.3.6.1.5.5.7.6.65_ss.bin @@ -0,0 +1 @@ +���I��L/�(Q�7$S��lB'�M�Rtc ��� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ciphertext.bin new file mode 100644 index 0000000..5f2d24c Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ee.der new file mode 100644 index 0000000..95fc87a Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_priv.der new file mode 100644 index 0000000..5f4bb33 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ss.bin new file mode 100644 index 0000000..fa03b39 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_brainpoolp256r1_sha3_256-1.3.6.1.5.5.7.6.61_ss.bin @@ -0,0 +1,2 @@ +��*�؇z�7y��ќQy�:��p� +\ᴇ� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ciphertext.bin new file mode 100644 index 0000000..0bd5e42 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ee.der new file mode 100644 index 0000000..fd7b232 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_priv.der new file mode 100644 index 0000000..501336e Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ss.bin new file mode 100644 index 0000000..bc7e0d7 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p256_sha3_256-1.3.6.1.5.5.7.6.59_ss.bin @@ -0,0 +1 @@ +��'�*œ��$�Gm�İO�@#z3 P���T� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ciphertext.bin new file mode 100644 index 0000000..0f6c12f Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ee.der new file mode 100644 index 0000000..d4f13fa Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_priv.der new file mode 100644 index 0000000..e31c795 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ss.bin new file mode 100644 index 0000000..c13b9a6 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_ecdh_p384_sha3_256-1.3.6.1.5.5.7.6.60_ss.bin @@ -0,0 +1 @@ +�ŕ7�����Wq���Z�P�#6�( \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ciphertext.bin new file mode 100644 index 0000000..63d703d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ee.der new file mode 100644 index 0000000..4771573 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_priv.der new file mode 100644 index 0000000..ddfc5a3 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ss.bin new file mode 100644 index 0000000..2390df6 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa2048_sha3_256-1.3.6.1.5.5.7.6.55_ss.bin @@ -0,0 +1,2 @@ +����9D��1�[��\�����q�w� �� +z� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ciphertext.bin new file mode 100644 index 0000000..4e2d223 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ee.der new file mode 100644 index 0000000..601c2ed Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_priv.der new file mode 100644 index 0000000..07c2823 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ss.bin new file mode 100644 index 0000000..b0c101e --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa3072_sha3_256-1.3.6.1.5.5.7.6.56_ss.bin @@ -0,0 +1,2 @@ +��E�*!-��j �JUՈ�n@m +�л?� \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ciphertext.bin new file mode 100644 index 0000000..1069009 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ee.der new file mode 100644 index 0000000..e340a6e Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_priv.der new file mode 100644 index 0000000..6a84f4c Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ss.bin new file mode 100644 index 0000000..71c99ca --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_rsa4096_sha3_256-1.3.6.1.5.5.7.6.57_ss.bin @@ -0,0 +1 @@ +�U癹D��,�W5� �r۸J�q(Ο1Z \ No newline at end of file diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ciphertext.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ciphertext.bin new file mode 100644 index 0000000..ec6288a Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ee.der b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ee.der new file mode 100644 index 0000000..4fb9b4d Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ee.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_priv.der b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_priv.der new file mode 100644 index 0000000..7a52a80 Binary files /dev/null and b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_priv.der differ diff --git a/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ss.bin b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ss.bin new file mode 100644 index 0000000..c59b7a2 --- /dev/null +++ b/test/data/r5_interop/providers/crypto4a/mlkem768_x25519_sha3_256-1.3.6.1.5.5.7.6.58_ss.bin @@ -0,0 +1 @@ +,펉��%� �Ѡ�*_��{� \ No newline at end of file diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin new file mode 100644 index 0000000..abe37df Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der new file mode 100644 index 0000000..c57dfe8 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ee.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der new file mode 100644 index 0000000..680663d Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_priv.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin new file mode 100644 index 0000000..05e6bbe Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA3072-SHA3-256-1.3.6.1.5.5.7.6.56_ss.bin differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin new file mode 100644 index 0000000..b666504 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der new file mode 100644 index 0000000..87153b4 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ee.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der new file mode 100644 index 0000000..39dd753 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_priv.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin new file mode 100644 index 0000000..91d8631 --- /dev/null +++ b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-RSA4096-SHA3-256-1.3.6.1.5.5.7.6.57_ss.bin @@ -0,0 +1 @@ +�}�H���c��J�?|t(<�T�Vn@y�߉���� \ No newline at end of file diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin new file mode 100644 index 0000000..2def65d Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der new file mode 100644 index 0000000..4da1a67 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ee.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der new file mode 100644 index 0000000..dfc0600 Binary files /dev/null and b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_priv.der differ diff --git a/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin new file mode 100644 index 0000000..32876df --- /dev/null +++ b/test/data/r5_interop/providers/cryptonext/id-MLKEM768-X25519-SHA3-256-1.3.6.1.5.5.7.6.58_ss.bin @@ -0,0 +1 @@ +�Gmc^(�G� ��y#�;���?��`# \ No newline at end of file diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der b/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der new file mode 100644 index 0000000..7bb966b Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der b/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der new file mode 100644 index 0000000..c6c5c3d Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-ECDSA-P256-SHA256-1.3.6.1.5.5.7.6.40_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der b/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der new file mode 100644 index 0000000..7e61788 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der b/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der new file mode 100644 index 0000000..b5887a0 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-Ed25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der new file mode 100644 index 0000000..971ed59 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der new file mode 100644 index 0000000..5fad013 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PKCS15-SHA256-1.3.6.1.5.5.7.6.38_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der new file mode 100644 index 0000000..6c4ab76 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der new file mode 100644 index 0000000..74cae9e Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA44-RSA2048-PSS-SHA256-1.3.6.1.5.5.7.6.37_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der new file mode 100644 index 0000000..10713b6 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der new file mode 100644 index 0000000..855eeb0 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P256-SHA512-1.3.6.1.5.5.7.6.45_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der new file mode 100644 index 0000000..3b832e8 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der new file mode 100644 index 0000000..37947be Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.46_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der new file mode 100644 index 0000000..c1a789f Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der new file mode 100644 index 0000000..6e84f75 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-ECDSA-brainpoolP256r1-SHA512-1.3.6.1.5.5.7.6.47_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der new file mode 100644 index 0000000..4c745c6 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der new file mode 100644 index 0000000..791b2fe Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-Ed25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der new file mode 100644 index 0000000..f1e6252 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der new file mode 100644 index 0000000..c7ce2a5 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PKCS15-SHA512-1.3.6.1.5.5.7.6.42_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der new file mode 100644 index 0000000..7397a5f Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der new file mode 100644 index 0000000..3cdb3fe Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.41_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der new file mode 100644 index 0000000..4ef331d Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der new file mode 100644 index 0000000..0ab18cd Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PKCS15-SHA512-1.3.6.1.5.5.7.6.44_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der new file mode 100644 index 0000000..4e9cb1c Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der new file mode 100644 index 0000000..6bc1555 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA65-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.43_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der new file mode 100644 index 0000000..66e4b2b Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der new file mode 100644 index 0000000..835da8b Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P384-SHA512-1.3.6.1.5.5.7.6.49_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der new file mode 100644 index 0000000..eb4f029 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der new file mode 100644 index 0000000..5c741d2 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-P521-SHA512-1.3.6.1.5.5.7.6.54_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der new file mode 100644 index 0000000..d69e45f Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der new file mode 100644 index 0000000..8637458 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-ECDSA-brainpoolP384r1-SHA512-1.3.6.1.5.5.7.6.50_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der new file mode 100644 index 0000000..1fe0f6f Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der new file mode 100644 index 0000000..b0bc977 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-Ed448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der new file mode 100644 index 0000000..a374a58 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der new file mode 100644 index 0000000..8b271ce Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-RSA3072-PSS-SHA512-1.3.6.1.5.5.7.6.52_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der b/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der new file mode 100644 index 0000000..abadc03 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der b/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der new file mode 100644 index 0000000..96eb552 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLDSA87-RSA4096-PSS-SHA512-1.3.6.1.5.5.7.6.53_ta.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin new file mode 100644 index 0000000..54c0aae Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der new file mode 100644 index 0000000..c43d15e Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ee.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der new file mode 100644 index 0000000..2373563 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin new file mode 100644 index 0000000..3905a27 --- /dev/null +++ b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P384-SHA3-256-1.3.6.1.5.5.7.6.63_ss.bin @@ -0,0 +1 @@ +T��s,���ˡ���{X���|W� *6�%�wÞ \ No newline at end of file diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin new file mode 100644 index 0000000..6e61534 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der new file mode 100644 index 0000000..bcce53d Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ee.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der new file mode 100644 index 0000000..9a2a6d5 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin new file mode 100644 index 0000000..716ceb1 --- /dev/null +++ b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-P521-SHA3-256-1.3.6.1.5.5.7.6.66_ss.bin @@ -0,0 +1 @@ +c�؍5���V�zq-�m����j�������%]� \ No newline at end of file diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin new file mode 100644 index 0000000..e7791e1 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ciphertext.bin differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der new file mode 100644 index 0000000..a1b9b05 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ee.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der new file mode 100644 index 0000000..d723798 Binary files /dev/null and b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_priv.der differ diff --git a/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin new file mode 100644 index 0000000..06ed9f7 --- /dev/null +++ b/test/data/r5_interop/providers/entrust/MLKEM1024-ECDH-brainpoolP384r1-SHA3-256-1.3.6.1.5.5.7.6.64_ss.bin @@ -0,0 +1 @@ +�� �x�5�A1�������`v&� +��j~T�8X��5w \ No newline at end of file diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der b/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der new file mode 100755 index 0000000..a2bd6d4 Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_priv.der differ diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der b/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der new file mode 100755 index 0000000..e0676db Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA44-ED25519-SHA512-1.3.6.1.5.5.7.6.39_ta.der differ diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der b/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der new file mode 100755 index 0000000..8b5ceca Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_priv.der differ diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der b/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der new file mode 100755 index 0000000..653054e Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA65-ED25519-SHA512-1.3.6.1.5.5.7.6.48_ta.der differ diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der b/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der new file mode 100755 index 0000000..ae4cb0e Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_priv.der differ diff --git a/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der b/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der new file mode 100755 index 0000000..13b8f32 Binary files /dev/null and b/test/data/r5_interop/providers/leancrypto/ML-DSA87-ED448-SHAKE256-1.3.6.1.5.5.7.6.51_ta.der differ