Skip to content

Commit

Permalink
Added ML-DSA to break-kat framework (#2253)
Browse files Browse the repository at this point in the history
### Issues:
Resolves #PQCrypto-130


### Description of changes: 

- Added ML-DSA to the break-kat tool.


### Call-outs:
As the break kat test modifies input to switch it all out for zeros, I
had to change the `kMLDSASignPlaintext` in `self_check.c` to no longer
be all zeros. As such the expected signature also has changed.

We also are no longer able to re-use the signature from `ML-DSA-sign` in
`ML-DSA-verify` as we want to break the verify KAT independently of the
sign KAT. As such, `kMLDSAVerifySignature` and `kMLDSAVerifyPlaintext`
have been added.

### Testing:
Running break-kat and callback tests both pass.

By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license and the ISC license.
  • Loading branch information
jakemas authored Mar 7, 2025
1 parent 3cf0777 commit 9b814f0
Show file tree
Hide file tree
Showing 3 changed files with 430 additions and 206 deletions.
10 changes: 10 additions & 0 deletions crypto/fips_callback_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ void AWS_LC_fips_failure_callback(const char* message) {
{"ML-KEM-keyGen-encaps", {"ML-KEM-keyGen-encaps failed.\nExpected: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nCalculated: a7cc68f8d02110ca5720223b9e2a8987c8a24835a20dabcbefa430e74a85af80b9b74b74574c5e5f585459ca3610940f0b57b33344ceacccc135557b82f4968688a0168c1aa2940e5604482bf8b900a4343096446330cfee10917c0338181b7fe8d30f4816087d6299f225417f533ee40473894847bd45291367be6b1a7dee55bb21d60e3828552f4c8a6f3c54fc74cf67a614eeab002a076851879cef2218fdb3766123c2de32a269b6aa4661b69370314c004446f7258c40b2ea789f40ca023bbb1217c2c44b380c6e3194edd129d039218d9b75194a386d944acce7a9720ab026362004e95bf9229290b53613416082e82ba8a42a5ff14759f57712395706b307f7635ecee42317a48eb3b90683f3ab53d17c50f53c6cfb1c0cf59d6f2a981021428a7ac5edf13b26844d83c31d3608710e623aabb24b6c5b48baebc1b3078972589201b7a30bc09315612b067655bec403a69c89eb137c31157971098cb693ba4ae9ae40a8031cec92580bcc1b5ab3ecd1aa5f79aa2cd69249d138c8965a81c87a07eb59a4612e60658f4df028cef8af1b837e0ab0bfedb726904290d0bc41df6a67f7a4166609952439631960648e229a21f2a4d82abad3ec8135dc9bb43c703d3b33e437c9ef7bca91c3465676740125a15ad1707088b101b4273d3c4bf30181b4b2575de75ccfc13312a2a6bcebc477a9668e751629b569bfa20beca09800992c63f04b6b4a7df977a00131c2f8722e5138775235b517a709852167c1d415fdc7ad32f2aaca437e9cc6b248d9ca7c65b405e68d24e81b8688caa22b3cf5c9b147f0cc27e667a80b83ccbb4f4161a5ffd0194b1b5720e68ea0f59997f26740972d2c8124d7a6ad8327c2075a3f76b968d2aaad19c00697599e0be49fa6d65b4088b0be692dcda028095852a0d7205e4417409c0317780305a878fb582963b6953f6b8f0880b050178301d659be3a4db7e0bf2587129164178f32707d40392d85713dea82913999aa6c35aa94b3547abe40e2b0ba82b5b78319182a5a47d173176ba6fa3a4d70a8130b310743fa8aaae314381c9b7f49991f19a4ff8369638de380b5d828b7b5fcfdd91fe68efe16d4cd9eed66d65c1d2d8caf5af4a692\n", "ML-KEM self tests failed"}},
{"ML-KEM-encapsulate-ciphertext", {"ML-KEM-encapsulate-ciphertext failed.\nExpected: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nCalculated: 431a4f1b2d2c6c00f1690bbe482541ef3d563774daff83207f96de7e5e4a59d5d936d9443ad422e645793e7a60a9b0a76cd672d20c69b82a5563df52d96f9a6cdfc56fbd4fd8d5a8afeb2a09d92ec854094794b4ed2db381f04c68439608aa9902a4d1689e2eb1e5f07a4a1c709262d7c2ff2f81f6eeaab2a86a41ba210eb1bf8e75febccd1a15b4d7a7b60257c89d00bd81d39fcb8d1ce3278102595dd652f7fb7d5584874f3327b174043b350ebd4d41fe08bd0e854d41cbb027c481da64dc6151b88dececcf022ddac2e22736c147e0773294231c0589967154c526b0b7cdd59568eeff5749a40cb100c60c6480897655d96e9f64d61684c0b3150646732c19409fe565540a31894703cf0179cae85bc8c1a5732649836e48e676405b9591b65ba25f9b489b9e5772aa1ed5a00143cb9f5449fd013457a3c13874cb58c75b52c9b6a9ae495ccb504a89cb5f145695b921632fb85b0316b30d4ad17fef0862d6b1e6ca6a611c8a6a7234b4362c5ca0ad9f7697687798cf624dc9f35fbb376e09953156532a9033709df755b46cc6d83de3a111e19a76b361e0ef14c91db8d91c6c6d9e3e46f42291fd6cbf5cfd122716fb0675698e602ab39ee98e0d8145eebaaa9374f5b3bb0df4d0fd83a40e0d25038c39e9bee01cf79c86f3086158d031d5c5e86bc7e7eb16e622505f2888213884c0b5252289b11fce5bfeebfbef0a32ceaf9c14c6250090028463db6f8d19684f541108fe934d88e7ef5cce9daebb32700b9397691a684298c9bf1b7c22d1bcec3fcacfbb17f2ed2b98b85e6a8fe2482996b5e099e9d0211cb9412614de87dc18d23613ed7f6c29cc37b727116dd901c2817938c29fcd026089336addc09eca90de9a25a6374fee86bcdd06ae3daaf0b1bc5b3b2790d4d9f759bef8ac743612a2bbf6e45de8b22efa61226625d4c39f346b844c5ebec5355866c00b726cc1640cb237c34a20a7c603d251f46e6b3b0fa71b3276835e3e9da5b9485e789614af49f1e9504db2528631fbe1cd7dbee85164e4c099a27a4583e9247d078f8830b46874c1b010bf3cd90eb0774961f239ba\n", "ML-KEM self tests failed"}},
{"ML-KEM-encapsulate-shared-secret", {"ML-KEM-encapsulate-shared-secret failed.\nExpected: 0000000000000000000000000000000000000000000000000000000000000000\nCalculated: a772df2de250ac7d896bbb820b57f2ae05f9a412ab55baa421d4af6dac62662a\n", "ML-KEM self tests failed"}},
{"ML-DSA-sign", {"ML-DSA-sign failed.\nExpected: 346980e51914722cb3dc402dcac9fa9acba9f189e6e12cba7a15181bf95f8830e3b0271b4a9f84d45a1a29c18d15ea254e9f5e6dbd0f12ad8a7008df067e931469a9c35759736677456a901cbfc79bf7351f5585b7a2590490839e3013d31037a08a1cd3501e4b658230f0318495c498d70440d578c7f7bd61c7a1a3da315c4030698bc70eb331bbb83bab5a6b63338f113155845d97389d294e1d3b77658c1e24a438f9cdf13b1e011c2e5b25dcc218a975765ba79e631912b0ad10cc8bbd90e7ba258a702a9b5e6d72f578b5a942b9917a3989ae8ae0b98cde128b529589c2fbbaa82a817ef2b3d9169788387c612e2488b62ab9664d2e06b3f22de1eb091e0e89afe5b090e1b81d6867b2bea7c019079b293d8b105822f0cb34fdc03e1210062e4e1e280ce3b58d87f843de43082408220390676b07e6ae5c1b6fa77d571249a37efd41e94daf2d96a54042650f77aaab3c43ec5afea08e55bb494952aa40b5095e7c1b98d8104ab07e7dbfc5f6f6826761e685d06a3a00f38841a2ba8d2ccde1145cd4b0643d953d8fd4c4859bb72f338b9a1c038f88cefb5b33f89078f7ed8fa050534b6197ccd244b3bbd7066f6c4bbe7482ecebad203e8079599d6adcc25efc151e3be9c0d7435ac1cb3a572381da123a6798cf21d19835f9b999d09c0b0a09f86a9cf87f2ed5133e36ea6d6986182796612bd06191c9e494050953141da174503c9c874bf07a3b64994583c3bab1aa90e04331200f86ce5f705fe467a4741b0bd57c34b8d66626c42d72f77439f5bcb4ed2e3f197270a93efe68f7b2a30d6ebd9fa2297f59773e3d8e81cec9ea9defd1b44309759d0bfb0f43aa29388db988f2be645ffb3de9edc1181e934f1496ceec5e313fb9aaad37dd6a8be09c7c7fd263c2c95c87d5f884bb75ead677b3a0e4bcc8bec4f99ed3ee13fc891b6cc5869ac85d05753c4cba0b32911aefab1767a7d07c061af805c176733490f0e2010bebb18eb8c61cec3920a33866c2ff8197b0615dae2d8e3b6412afd06875f19f5bd70ad478b89a7f3c7e0ed33a12f095bb0c2f06ad0c8f43ba82224b68c6c9cec9923c2f6ccd0995e5015d7f9e73074262de21ca59697136fd99923d057be5008b3bb018a559439bba5e33bbe25b75ad95fc9ed47c2a93ce1e4af30f0f6811519d2af232f3ba0010a7bf23284ebed67b1a661fcd3e4dad4fed42330a5f8cb16772943bd93fb25ce77c0680a4b79224ac4aff9aedf95d04f92ae2917fdd97144456a38e476bf86fb57f58ae611ac6cd7b2abd908e78d5312ae72dc9f7cb999f3c42bef6271edb57f4c3d9ac1ea2d93cc0073c65666b0f5a71cdbfff5e8180804b6e8c3653323589939fa7747a68ea9f37272f4cb9bbcc0d529431d866e929aad9cf39cc8a39ca09ba1520d7a885e79c76efe5fead4e37987ce2610f025bee4beef225e7d9c7851317eb7991e46d68ded6de12a848870b73328732c060dfdab291395b8cce4dbfa9f7fd1e2d2c3deed6fe1bed9cc25a3629b472d8e484f07df8f090849d78d222e068afc9e99d3cf6a615fdeb778395a4bbf0535c2d97257f012a29e6fa0390446772ca1615852023d6155502a012b282c408c71c2f70331bfec46b09136d4fd495b051422bd1ea4787ef3c8b0068a0736f8de8264c85b84730366aca64924f231eb169fc13205cb4f1eae71898642a5bfaf2c81f7d06aa7e5c98852e553afeaf383554fa9eef32b2bf82451ae7c405f12530cb4523d48eb43d72436d97cdd01f7284e6a8cbeb6d67db50b43fa3e272914383ac591203ba489ca2282e426b05dbab35e77c636e13ceb2725c911fefc3d280d1caa74b356f183d7091eb5905f2b615de6191215785f6e2e1ba0700b1f9ed749bc5265ac318a40c99c68cf901fc81f4859a91e4d248cecae1b89a7b245d1df9db7431292765d23f4c651b3212c3e2ee159bfca1d7b5aee74e539f23363c11c80f079f3e627b5c6bf097c8f928299f28329eb969f64c9aad1089e4eb3957a9e2a2a3dc6a1ddb84b6c51560e6cf26dd9868f5c7bcb1071cdd665492aead80f63ed22a23857c233be5af0d172c7650babc6ead9d0c683ca0b3924ac06cdead8a70d6fa996baef9976023f08b7b05b7824610ebbf9b0e9e18a06246706af5c0167accda3db0fe475be6775feed73096f4b4fa295720a6ac64f13d9f8457f2f394e019a608a5c2f918f7e53f81a37766fd3f0a9c83d0a9226dad2837c70fa8c2ca7489bc0efe37d54798b386ebe580007bccba84b103be531eff0f9d978aa0b3306953573ffd0c37c63a637cd7d2425b6fa3850cc7aab3c6e8758d4dd29939dba4885f9573e21b381edca580aaed49ae88879376d38986936cf5b3a33d52a32a372607984c550ed434bb9b0d71e4456b304f359b8db113ad14bcf53e4e276d5f562a90f3eaceab033bfe383509a5c5e960a49437b97ea6989b06f686bf50c7e1373324d89747e04b36afcbf0e407dc4a8a60ce01d09ed58f2d4a0b99d9048f2efc75c12ff53b7fe2f26584d60aee52bc1f484d0f99d9e86b2c882c5be7c783f6b9c8d35a71cf38fe1b036b381f5e72ed9928ce656fd898c2bf4ecc351723527d692a65c5545c2180e64f1520b942c6c39c83a1012e5e06af35c07cfd3222a14b6ac33f3d7b5c3280617c62d381fdf9da7bfc04b5632e2f027d2261a557138a84b57c527422be2de24bc43b1c2199a57e00e831cc4cb82d8310f53d2c7dfa6b293a0e2d815ee3934c5122860fee423131b4bf2cb66692c1dd0da9a4cd6df11ecc17e64ac6bca5b6c945f2a962dd0d7e26c895086572e9cbf37f403d39d7ffa2b35485d5cfa62a99c565aa8c1de312e8d795fa344bc82372337f4e41aea7b2e6e989cd38f2005ab32d8c35afbcae9e0ed2d03c1f9f0af429b0d8e8d299d766dc0700508e986b3c13a38f8c03880b1833dab4ae6fac36db1b872e26685bc6a057f306b12fd79c6619c2747ed786d9a3e69eaadc85b4dd4cdc8f6b107fb66ca034f06539e9b26e18ffd5fc03b60d6af816564a0cf05f66473f2ff747e9953c224b40aeff88e860d0077e850b3a6e054429ec0d83d05ccd71d52412553820156bbd8b888c30b310ae265b8bb14d33e99e4822584ef8abca95292bccd681def52c680bf59c94ce990ebfea6d7441dd3c131fd90c13e5d1ef2ae1f07076669e50c9da58a1660636abd368e35452c508e24255fb8d48a908959d661c69da2e71c87ab250d649c02e52606495136321692e5ed48a3ba3f534d05606b796be2c2c977d8307def546d5a4e09688655c082a378f99a6afc8def4fe151f2d32333a687b7f8fa3a6a7aab7bcc2eff40a24667076829a9fa6bed6dce6ebf2354b50a0bfdffa000000000000000000000000000000000000000000000000000000000b1e2d34\nCalculated: 4efb3abe8ac47b40d4b1d59961ee658ba7c2a21236e0c027966eac19b0b415c9824af94955233a6a321ba66370bf1313bec01bebce2a7c6391833fef3ecd58b213bbb723dedd0c04b33644a5a4494b47528c616fbf4075acf04fb5d853badaa25d240651056d3c3cfdafbaea8f0996234ccdbc033f3ed29d2bcb8610bdd728561bde8a4cd7a0361b630de71ae10db50d2caf61dc393658c8c4fe822a0b8b2d17ebbc1f9bc5947bed10ee69ffb4c66f59af4da89efd0cf5c722f6687b9c1d528ee3b8b675e01e9eef5093590539f9768260bcc8fdc0b7f0d496b1d981260fda2f6caecd7025a769035116a9db27a04c4d758943a9312b77b9d45c386dc5250b1820fe443b07f3ef6ddba67e09efee9c59016bd076f12a2cde6e386ab690bd417bf123c5282ea93a5fe86a0d93fa6b3ec160df642f81f8778225138cd2f77a013cc67273fe2a48189d360ccde080c2292e2100ac815bdb33bb50c56feb4963ddef80bc2dd3e4e069af8dda5406455b69913e4ffc1fab0cf3dcf47a06de643b087cc92c0de1bddc619b883a8e77d383bc70f698d372e27e0e8dea3a3b261b8eae498c2514e405cd9c2cdb39e92f16f571e287c9d1d37abf1dbf986cb13cf8f4d619b13945c1b4a5372e9855bfc23a36953de9c0dadca15067430dab9af898b03e8c4e8ff0a72ad936aae0e20948ab9b5dba6dabfcb5466fb330fb6f602b2821eaf949c6c4e05fb62fa0654c02980456108eac4ac7347c822f467086aac01c3851b061bc8c604567483b0443df4ba14cc2cc67198a907758ea560ad486adcc018d48286e9a7c4b268b2785bd7fd49e3b5320b89ff6378b14440c9c5b71c59ffc537d52b05fa7bd296ecff0e88501a8a4b2785b8a60fa74186f6267edaa0163db723ebd3d690c63f2883052e1a128cd7cee543921ec78c1189de754f8627e35e7a3430611d3a378879d35569bb4f749854e557deffd97c652c9df22e31f1203ae854f3b7684da49af61a467ec7f8e1fa5eb4fea00bdfda9df4f071df8d51e6725e9cf25c882418252b2c3ae00aa1b2cbc5275418daaa96597b48e63f3df98bec788651003a95041ebf02f62c95981adca03a1a1832eb9b6d1425b436214d1009b2ce5388a573c4160e8afb9b1cbcdbc0d16c91591975ccec4b1131bcce98eac2391114f480b6c75af4d07d549d2a17ff3866335809e7b9b2665715d10fe01ea4342f5b6200d9b8561324d11c7d92667fce0eea730da5dea93348cc684f6ac35c690f17d8d0fc99cf70f5d74b77a08f9b8afd1a6ab950f6dab880f88a39a16779141443e79a4099a90ff6ec41270d52a79f4cd0a66b7bb7d92ed00759a9da48a171bc2fd6d1de3a9141f6c614ca97e9696a44ae326d0ca1d091aabb030a8824675239aead6cdbf6b9de0c371c925f4c412249d31200103cf67ec76131ad2bfbe7bf30a31de8186600d11bd35730a6996cac10ec1224b71c12bcf1ff85a2ac2f9390adad754e0ebb1f6153b8cf2fc06648acf2610db11d0a16e8d25dc79979e9de6b2dc236111f85f76e9df2499d5193d3daf13102dd9e43eb51a166ffd9823ff8d88e1fdbdcfcbea1771a1202d97f4b66c1a8d910cb66f5f405f8c786b79e9df8e1df64f871fbdd95ca3f8656b704cee55f22b299d6466ef5a0544abe9fb9ef8e9458a3fb75f328c8a36afa33f2ba6a80dfd34cf592e3ca2174783456acdcfb5589ccd362e09b0e9d3106bc8fd9103eb3dcce8269ffaab78884c3a95570f0b67d863c56f6895a7b6e0409e51c4d42047026df47306bf459283b4d63f4ae7a5547c1c478abea835378f0f5efab665c8179008b71fc16ba3d50c6f17a25e12859cb2d4876fe495fe21b792034236db254024de98e41f439895dbb08a7da78677d0d07154949d78c7669ea169fa1add0d9bc2d379323c2439bf1fbb144b7127fced842b3167d99d382aa85c7b350b8480b222349179feba54bd5f73e55ac7000bdf583840c0fde5af27fa3ca573c3f8eeca5b9e635b008bec30bf87f64d4173def58f3a8f2c32aaca6e2fb8758fa647b005c7a74053b018cbd8429d01fddfdd25e38ffe84ad6ff7ff091b6c0b8340d5cae337ca68e8996ac0afb1e1f6dfe0a3290b6c95dcb985d1b5b4cebe2ca6609dfe046866d710e7d83867bb6742609dc8b6070488230eab2c13a20afb672a4e662fee88c681075c0d7ee6a748bcf35f11785e4121de68b22c0a54a38fd56e56e51858c2628411d220333330a45080fa68c4072370b4bc4034850340ccc15825b45f235497a4f6f514a6d39484157d06605e81b12359982dadc9b8bc6aa762f02e1e7e219d741390381fa927cb35373c283eb77534ed9bf634ea35a113f051fdd8527bd4e0650b3110ed0a6ef09f730ab2f947d234e6bc079d577280432ca56b57a87443a57191b7b9d793adda1f9c082fa6ca38ba9847cbe7b5bc239c83b806d60f2b74c9a5f347583f2a93edf990b337e359b8e259763862df5c74fd733c2993e31d17da5343df7b58f859f1e7ab3f056d0db7bdf1259530c4bf4fc723554de7dcb01f3420fc6bec4d3c1878d428ba5e93ff2ad17ec72229b3f0b24718efaabd27d2caf64eb58678a0e5b5f51e4d1c3d5f2f72b15c13ea13f987203e843f6c6b3ef3dffc6bc351724ee023818c950774946f52ff022d605bd75b1270dc940f31f8c073ed8a950e7f973d2b4793a5b8ec4ad9ae8771d5ae877794b7c82291b450e877d66fcb998bfda8edd33508d295610b03ff7b7f02576ea9583da2f0b617092231d42db7d6add1dfd605c85293c48198c7207f60ede3dd91be38ebe2864f51f555dcbd7e8aaa114e1e7372213aeba4671cf9432a7ebe7c3a6c54f7b4b7b62efe4f4bc02799ba3b177d1382307d95b71e53277a1401ef0ce299b0267b16d12a21eb0e8b1b1d45036b0950cde660bb21d5a6f82fb45378c81315380e42d39a95fb97beb9779d1d36f3b42731ddf5b4a1a1ae2a9bfdd84a5771bdcc00b615d13615052aea4acc1885589c4019723832078440ae9aeee415b1fc9fceed45d403f88162104b257695574eaa60ec889b5651759616fc2224fca7376b138a029f932c6b389678bb697612353365835984ae76c74d13dab17b8842b507d4240ba181693c9fc803015ebfc01ba183bcfe4f6b7a0333259fb939219c1d2fc0891aac8d0f1e0d7e2f5a1ef2a3b3ed3e1cb2145f16f1147f4e889cb0c7a72b42fbb5e842c35c7354856789fc6c8ae4cd9b2d4ea46546d59cfce3dc17ebeda897fc4d4d81b4cfaab627e0e2172bd4b6ec43268e0718e620fa269568909397b5c2c5f6f7f9fb28446d707599b5c0c1d2d7dffcfd010709163b4c4f5563797a888b949aadc4c7d4f316365b95abdce4f5f800000000000000000000000000000000000000000000000000000b192d36\n", "ML-DSA self tests failed"}},
{"ML-DSA-verify", {"ML-DSA-verify failed", "ML-DSA self tests failed"}},
{"HKDF-SHA-256", {"HKDF-SHA-256 KAT failed.\nExpected: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nCalculated: ca5e6410e7a52332fe0ab3601212a7d3dbdf55a162af42a5daf38b94f24523477e880dd711508684cc21\n", "Power on self test failed"}},
{"KBKDF", {"KBKDF-CTR-HMAC-SHA-256 KAT failed.\nExpected: 10621342bfb0fd40046c0e29f2cfdbf0\nCalculated: 606060902f7c6632bcde3a67f5818c48\n", "Power on self test failed"}},
{"PBKDF2", {"PBKDF2 KAT failed.\nExpected: c6ac0779e4a117c922287f5e10e7ee6ba74d8b19519b4cc738\nCalculated: e442f1807d5fc9b466badcdfd3806fed7fa50da9a6f5729117\n", "Power on self test failed"}},
Expand Down Expand Up @@ -108,6 +110,14 @@ TEST(FIPSCallback, PowerOnSelfTests) {
uint8_t signature[ED25519_SIGNATURE_LEN];
EXPECT_TRUE(ED25519ph_sign(signature, message, sizeof(message), private_key, context, sizeof(context)));

EVP_PKEY *dsa_raw = NULL;
bssl::UniquePtr<EVP_PKEY_CTX> dsa_ctx(EVP_PKEY_CTX_new_id(EVP_PKEY_PQDSA, nullptr));
ASSERT_TRUE(dsa_ctx);
ASSERT_TRUE(EVP_PKEY_CTX_pqdsa_set_params(dsa_ctx.get(), NID_MLDSA44));
ASSERT_TRUE(EVP_PKEY_keygen_init(dsa_ctx.get()));
ASSERT_TRUE(EVP_PKEY_keygen(dsa_ctx.get(), &dsa_raw));
EVP_PKEY_free(dsa_raw);

if (broken_kat == nullptr) {
EXPECT_EQ(0, callback_call_count);
} else {
Expand Down
Loading

0 comments on commit 9b814f0

Please sign in to comment.