diff --git a/certs/mldsa/include.am b/certs/mldsa/include.am index 94868dc610e..75ea975defc 100644 --- a/certs/mldsa/include.am +++ b/certs/mldsa/include.am @@ -20,4 +20,13 @@ EXTRA_DIST += \ certs/mldsa/mldsa87_seed-priv.der \ certs/mldsa/mldsa87_oqskeypair.der \ certs/mldsa/mldsa87_bare-seed.der \ - certs/mldsa/mldsa87_bare-priv.der + certs/mldsa/mldsa87_bare-priv.der \ + certs/mldsa/mldsa44-key.pem \ + certs/mldsa/mldsa44-cert.pem \ + certs/mldsa/mldsa44-cert.der \ + certs/mldsa/mldsa65-key.pem \ + certs/mldsa/mldsa65-cert.pem \ + certs/mldsa/mldsa65-cert.der \ + certs/mldsa/mldsa87-key.pem \ + certs/mldsa/mldsa87-cert.pem \ + certs/mldsa/mldsa87-cert.der diff --git a/certs/mldsa/mldsa44-cert.der b/certs/mldsa/mldsa44-cert.der new file mode 100644 index 00000000000..0b722a19d4d Binary files /dev/null and b/certs/mldsa/mldsa44-cert.der differ diff --git a/certs/mldsa/mldsa44-cert.pem b/certs/mldsa/mldsa44-cert.pem new file mode 100644 index 00000000000..8bcad315ee7 --- /dev/null +++ b/certs/mldsa/mldsa44-cert.pem @@ -0,0 +1,88 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/certs/mldsa/mldsa44-key.pem b/certs/mldsa/mldsa44-key.pem new file mode 100644 index 00000000000..9790bdb10d8 --- /dev/null +++ b/certs/mldsa/mldsa44-key.pem @@ -0,0 +1,57 @@ +-----BEGIN PRIVATE KEY----- +MIIKPgIBADALBglghkgBZQMEAxEEggoqMIIKJgQgn/xMW9xmcCij1AlnH40aQ+1p +C7OR3LeC2sVa88ayDfIEggoAgWxmp5Mn5FLW8FrDQyA3XEquJfP/9PH8g+f53VDH +dclmvkmRC1J4Kp8fywNGRjapoUOaVMFuCTxmoxEahyLGnIErGbJWJmn3fQY0efDQ +avQFKQu5sHqx8jWnF2HsvJqstYXnDALyLgKqSEqsR8s4GpFAFRz6tT/QAwMyMgWs +5AxkNmQbOEjjlkRgNI0BmQiQtAjSiJCYtHFayCgYI5LbogUchWkREWQhMAULCYXJ +qIgIFCQbIioQIkwIpCSIBm1QRnIQExCLQClJNGRQooEQKHAkQYhSGJLSQibIMg1E +RmELsAUIQ2aaBBIKJAmRQAUKKSEgkQCJhAhhkpBMBEZhhAVJtC0Dk00USVGkBGkk +xW0UloQUsFDJQkQKxkQTmY3jIhEiEmEAtjGKhIwUJEWARpICl40ERFIhA4oDRYiK +GE7EGIiiMpKkSI7BSGSbJGpKoBDLJpECsAyMImoQBC7UqGFZljHCNFBhEkIAhkxS +ADIRQRAEEogbgBEDJm1RmEWJQoyCCFHTFCgkkQDThBBAJgIQNIgJpSCSgG2MpI3A +lgRaxGTSRowQIATEJikjuGVMJEVLoo1CCCbDhkRIRk0bEnBLIDKRJC6gMiYYMmXT +Bk0SJUiUJiTYpmmSlFAQGJBJNg0KJyJhMglggnBBIIIUiTAJsAGgxk1JIFCbRgUc +lQARNQ7QBAIDQEoRJ4WDKE4UsIAAFU3jRjJhIk4aoG1AMA6SmHFcAnHMEmwSBATJ +BCCQGBAAQgkZQVDEIHBjlHGUsBGIqIgSNyYksGATBYjkJhEhSA0CSCkZQIHJkigD +EmjayEAKJWnLJkWDECoaI24LNgkDEQERGEJTIpGjFIIgOAmDiBFLJgiSQpFMIkKZ +BAmTOChaNA4LEBIQSAWRRkBSuEDZAI4KBAlBiAFASA7EkkjjmGBhiCyklpGbkGVg +okETQkogCXECyQnShoDQIIriFI5YAEiYBAEUASqRRnLYtjECQgFaNCqAMGKSIoDK +Jg6KOAXhMGHLtFEMQEralBDkoE3SRi6YSJGaEgyLgnDUKDEhQFABMyEZJooaEGga +NGAMFWgktCQUEAWhtFESsAXZtE0gsFHKRlJTQi2blChAJDAAApCQSELLyCHBhgBi +sCSTwIhiFooDCAEYlAAZhgAKGEISsmWTMiojNw0QFG2RNIiJMEJBpHAMNHAYsERg +FCBl/1xK+eX77feB4ElohGyfAGB2Lw97dM1d6qrN+RG8nAtXgiDLB5+DK1/jeQyL +9ystI/r98Z+t3b6687P9TURHHWTVkTLJM+hZyrOjHV+mbzZNOCXJ+nJ6gc1094jK +8jOATr71hfXxbN8vZlZ6/0tyjT9s+MyKLNeDyULncGJeoOPZsv99Jm040LQKlQr2 +9w2ElO8f2CV8BhWHOgaM7d3iu2wkX+44HJ3lXRizelwGyyS3GViMyCHoGDBrTh3g +uG7pqheQOpUUJLsvc+1WyTurFzTXLCi5Bj+0pxeiPHkrOx5OKT2+tlA++mEEZ3m2 +DpqWiYcHkq+2sGg05rmS3EdTmwbGGRnTVpRvORbWBMwl4IZLFqEH18mo2shI2lnf +e4XdBqai7n8XlbxUvdOlBYiHsPiGUBjzOqcoLbuNPe6r7xzh9hj79JA+3FA02SrM +Ht68LVQAa4/PPAH0r8DzafnprRwaC2ZC1ctKqH9PW2wyDDPiCmT5+AIsqrt63HVF +swMW151k+Q+2apJhI6N73MinVZpXxJDV2JGWFd0FGGbRslxhbcGDofj406dK0/2t +uXm5caJDw4laMev5M06RMHWdy6eWxfoaqBKXP5S2QJ+BoQ/X35HIS5yGUripajVO +XM3tu76DUDrEQJFGJh8MRU4aftoHGassHaMojSjfVl0Ftv4vDvSUlzOyFtHwIjtd +I69zGjlXNMEZ2YVe8IhuPt4hNgz/zAmMAIy4vMjZX6pvUsv0JF3+8pK2f4m1ml6A +evpOpHPY90isuP2wU7RwV3i8Cb0U0ZZxTztLVK33BKZjo9SB8DB9DjwPl9yhzS16 +Quy46jzXQKZflSLOyQpE4i8+9Ek31Va8DVuXstztmaxBm/oeqee3ri6GMbxNAlu3 +nmLf7uknZeIcUkoKQvsKk3NKo4GkfHLYmBeESlQVW4uDheZjqoNUejgmqd5PTO7C +voPJVjIcECsSKXImjZFxi7od+7zP91Fa9N+WRzM1DMWHgR6tj4kBezYqnPMXG/JT +pMNgWYVm+a+21WafbXC83bZmBLv5FloUZ0yZ07/RQgefZ+igvCY6eW24uNtEYkYu +nNr3MUlwBn0CCh9W8xsOPyvvCIg5nIHHD2rGKDNPyZJ/jXbKO4+ykIWrxz7kMKq1 +Y2M6eBs9cgww/Wxvoid0uYQgfkhTfVrZt8y/ybzsAWEEsFBJ7pGn3HENzYpbor2w ++PZveymQM4pk+rnQ2B8lyaPB+olrRKZkbqYaOQ/oTcdnvDsG3WwhYJ32+IX1wLnr +PDs8OYdrXEajvgfVueOZYc7J/m7Sj3FkpvSdscxEeUYSAFLsGlVR3ycBtNbai0lz +zlSAt4GAMc5tt85GdRA/gHpAcvt9ta+2ZUwJ855v95vxThKIofc0B6zEWPCO15Vt +dv0BfBxVA30U6KFNwkhu9Rqbi5g8CcRJ76T47YPpUjx6EwRTSxIrSYdaQzcxMeas +z36hx+Nk6wwFFDRo/cIzy8nflGaSkWL9+mgIEU1Iklfs+u89xoypAn2yi2+LI/en +8wfu+9xV3M5ILOBOocvee8N7rNAME63b2fsDm6rUQo1EWTKmsWwh6GN3upDcRdem +B3j/OouO+IGbjsSc2hS3xbPpboBuxHOXr8D+2pghO/wXu5q4KdhvEPBgtd7rwMSf +yESDo4oPO2NmDxLTYoecD31P7mVkbsi5f+jhgkOTSPsOc2fRunuvd2HdMYN3j1f7 +VdZs7CdifaOS126jWi5wEOmeeNYlLC8zV13uWlu1+83XOAYokxegJ/apntqaBE+2 +cSRSICXXSLsX14lZ+FY3hUdnp4xWfijXA8eRPTYq67OoYG0U7RINoqcYbP2XJR5r +MpgXIa7WJkm/gR1Kjx/iQFiepeSQJTgFAxjV/7mDjri1jkildVYZkeD9WYL/REST +q7TZ6v8yG4O2T0RSeEWepbyLVCo0gDYIusDhe2YU9v37SEk9wy7bvkybTkN2UU9h +9llnKgRK8GKox1KNCkBjXdFs2I0c7jQrNBwuAxEXWy6xdcO53mBgncU5TyL9hsWY +HbqhyLWm4BDqB/dCaI/LFoKWqbH2V14fGrPcDUoO+Nqzy5TyFWla3LylHe6x56dR +i90pWbFFquwyinMSayE9YFoYI7gVl+q28sKe87WvSpEagtMa6RXwxXwTGAPlLbPa +Ng99pWLWPvdYlP67gz3h+79FbSRUelEhqpzmt9cysPJOyw== +-----END PRIVATE KEY----- diff --git a/certs/mldsa/mldsa65-cert.der b/certs/mldsa/mldsa65-cert.der new file mode 100644 index 00000000000..21dab4fc055 Binary files /dev/null and b/certs/mldsa/mldsa65-cert.der differ diff --git a/certs/mldsa/mldsa65-cert.pem b/certs/mldsa/mldsa65-cert.pem new file mode 100644 index 00000000000..7162212f770 --- /dev/null +++ b/certs/mldsa/mldsa65-cert.pem @@ -0,0 +1,120 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/certs/mldsa/mldsa65-key.pem b/certs/mldsa/mldsa65-key.pem new file mode 100644 index 00000000000..2a49dfa5aa4 --- /dev/null +++ b/certs/mldsa/mldsa65-key.pem @@ -0,0 +1,88 @@ +-----BEGIN PRIVATE KEY----- +MIIP/gIBADALBglghkgBZQMEAxIEgg/qMIIP5gQgtfV6dlD4mALIXIpsbkPeVPxw +Bj1O8Shk2UTaHhjPveAEgg/APzUZygYwSdN2RIBgtt/Kp/cH+qhRXK75oXX89XQB +roplE/VO/bftORvtIjUEGXROdSLwYHTMixHlauNKNVRcjTzEA3l7syplxVTNmWt4 +CLIuLXZQYZHj0TECJl2eWDc8VED1905VnELYXQ/uMf6W4FTcmO8M9e6DKEiNk42s +S6JwaDgwaCZHiASIQEQEUVRDiGNCAWNVFlESMRE0gSIUQDg4ADVBI3RRV2YRczYY +V2hVVEYCdEAAeEBIEXciQRaIh3MhBXdDJhGDF2NUUkBhgyFlgBJ4IFVkGDNBJhQ2 +FkFSFDN2Y2NIclhGZVY1dyF1hDODUyg4VoEURnNwOCEGMRRzI0iFEgYYWFB2VgF1 +RngwaFNyQxIDFXBiFwJEQnEHgYIohRIUAUhQd1AEVEU3YiFiY1dHBIFhUFNnJFgE +AwgTRAc2VWVVYTh3QRBCEBZ4VFZwM0cyMxcXgYcgM4AyFnAFdmSIiHFkY0YSWFMg +d1ckQlZQRFdhVSJHCIZSBTEGVwZFZACIVUdxVDIgh2NhFSYUhyNxFjcoQ1JSgHJz +UwUiBlOBcmeDRyOFUzGAV4R0QTMxIASHREATZHSBCCRARnBWJER0FESEEyBCYUho +MDE0gyVEUYMIQWhkFWaEYXJRQBBHcEBFRFSEQXGGMHc0gAMQgWhQJGM3N1WFGAGD +dwJHhhCBcQUDFWNAiEY2VEIwFBYyE1ZCZyNxdGEiEScwJHYCaHcyaCCHNQdQBAFy +hEMkVXJUIIF1gBgIQ2chU0NgJjRlcQdHVjNyECFGUQMGMFNRgXdxdhJkhnE2cxRg +AGWDEwNzASBzh0BiUFZgEINmAHJ4hDMhRhYIhxV4BYVxOHZXE2UQBnQkeIUWQlgS +GDdXEWJwYEEAJ4AFGGcBZnZHQEAUYzNTZxMCYFgkAIBGQDWGhgUUMyMIh1YmEId0 +MTglADVTQ3MngzYwhQJjdGQmYwRDSBAGUxAWRoIwImA3UEVRIIWDRiRldYRnhXIo +dCSHdWUAVEFgVlZghnAhc3YUGAc3UnGDJVMnM1FkRnAUVwhnExEWYnZBBUgARmhk +FkQgiEdFKGSEdABxNTdRQHFoFiGFcxgkRTYYZQESB3hXF1AhIEOFF0YRIFNVhSJX +ODCDgIdlEWgwQyIRAWgzhhIjUkMEcohiUjFFOFhERmdhiAZAhkOBY0aEVUFWFnF0 +EkZQJoRWZxiCZjJYUAUYcBSAVXgCZohxgyZnIzdoZEUHBRNDUzRkR4BUWDV4UTU1 +GARGc0OCdINQNCJjMmc1IWKHBYFSE0J4FiJThDcSBoWAFgVHRwNhIENjQUEiUxGE +B0Q3VCZjZQNhBAUyUDIRMTU2I2OAFgVCMwYxCHAGgQQYNjgHJDB4eEJ1MSFWFwRh +V1eBVQQzEDEAgBAHhURWJlgFOIU3cohESCBIYmE2aENhB4J0RFVRJFRxhnJVAnII +YkB3WDcYdVaChjY2ZTGFQjcWNYZDQ4cTAkRFBihlYoghQTBjhRYyNSgEUlgGd3cC +ATFEJAgycXaHZiIIETiAQHBUGIFycAUHF4ZzhAQVY0iCFFRgA1gYYyNXJUcGeBRo +aIVEhoJoYlYgVFMyEYFnAlhmY3QkdXaHIgaDZjJihlEiJ1JiBCICdhgEchEjNhQS +dDRIQDQQCFRDKCAHgTIxRGcTVUSFiHdwCFFxRxRxVXhmJFBgeBMYF4V1NRg3VDc4 +dkIlVlY3UgdIeAKEc0VhdBRwZyZVJigGQVYXcDgSOGF0Y4YFdoF2NgQ3VQYgRoIg +U1YygjVCBmSIICBhUkMXIGBHJAFmh3eIMwQ0IFhwc2QUQjBXYocBEFdYNCAiVlRm +IBYgVWBgRmFyRgRgITQid3ZFIlBzJwFBVFgjSDNYU3KCJEBBRzAAd2M2GAYHRjVD +JHEVJyQ3Z3AogmRWEXBWJxRXMmVGEWMjVIZAAXM1WENCZjYEZFcAZHgHNQgnFGhg +JHYBF0OBhEUXYDRGWAM3SAEAQVASYnEGMxcnBiFiUhiICIRHBDh4eBYnMBISIEVh +UjZSeGhQeIQUJTSIRlAUWGMlzWCT9OdPVZH36BuQpVJrhXLlSlGl9jJZ+9a4yNnd +DAgk8WBoGbhiRTQ+so+vmd8EbvVlKYo+r+hgOuTgXWja0uYP+jMnwuT2a7hHjNL3 +OqBZgOcs4WEakqJnwnUCdl0JPSXvlngO7rDZXfD4quC3QjD6TrCB7qUrc82TzCBY +ssvoNwQOOJ3krbaYkmiS8U7MsqYgF25irLPUn4jN30lnftkDIKQ28m9nORE+kWT8 +vRelXCl+iRF6S67xGSY64XRaC4AwHnmK1WneydwVaGkVdQy96+a58DQxOIUGseMu +3vkteI6XgLAI0DUpXTNTSRG1MacwppGZ6hGP0DjjRJnMgk8XDPRX7KBW4ycW9Kv9 +5eBzlxYuijWQDJBvDCZwRK/22w3RRUIXl0BuazIacv3UZ1BdsPRQME1KjXoRze3y +Axx5zvAwy87EXtJ/lixmucLr3QvtSjOSEWEU39MEFvUcMcsYgTSttLZZOCR85ukf +P8lh4+2H/zUocktIDUkqbx3bHPH4WHgBrr3EuKOxseHIRId+T183497b9r54Et8W +L7o4XtDGV/MjEv3P2f+sVrHL3sjTTEkUNDjzOYkZaMzgcSRfOmFwzq4wQkMKE8d7 +0CeWz3KTd2LP2p/n8nwF7hqhOpDzecEdmjHAZCG3Mehy4XkNmmajstfCURqXz9gC +k1prEF4APv+AjWHe/1xoBo/gospxV9aZBOydD3lSeg4g1W2DE4gt2h3JHXFCNTf+ +HEi0LtLnV6fYut5WxuNo5vl5nOy/PzjuWyf2U/y/6IalOM5vUBBMD/kuV5qpOZEc ++ioR0CpJ0SqLMI6LoiSOsVwMCw4quYe/i1zGcqhn+N88N4Ble8U11DeXWUfkGN0e +5bNejz4I0u1Ek7hfImoYBSeXNkJru3G70CGsEGc68ZyYwM4GY1gAFjEilG6DUy/3 +BeXRNkWbs1MGzqaZYW+f9UW1GrFvXopXMs3UUwgqMsGbSHzh4mahtx1C0G4A4SAQ +oTXFpA1ShocN9y12ZQHhU5Kc32igMHgAq7dQE5x2pRYnZwxmHMxiq8HVBkdyPpor +3M/RDgd7LS7KuEznB8QNLrnVC9F41xyE01+G3CnP3iBWXDCmkX+600W/8t2mA7t7 +h+mcA24ZjetLff89ajWqaHX6BKZ/35fy6LI3TpHEH0ASMm4IjwTw0i0Jd4lSF2+Y +g1d8JfwOednZzsMwUVrMv1P9z3yair4SKcnRcPU18bcvqWoEJKu1TzzWP/cU4viI +UKQH9LF1t6vuD23TioB8T3NyH6WEmQeCONUBGpC/EkgrAtoJvwrCT/uycrXl1v5/ +CjC83MH7T2Q/KQ3P70eIvP3HulEWiIu2SxhkpdLmr6KXXZE2R9081EBa7MZ0h/hx +FsOQzpp/0zP+fGXQDX28auRiSJbFwkKyQMb61mNBnPSLCKuNfKu52sWZofz0sdCX +DrWHzgE/GnE5x440WpUyg05zc1zQ8oAOMlWnnXaXbjqUiYTHyEdxdd25eEm28LJ4 +q6qu+jhpVgT8ugDbNffcxuHECcckFoWQFHn5cc0ocA5pI60EKxkN2P+lyOdpDdCU +DSvnesz67SJfrcHyY83UU1gCIamPzDB+QQEWDCtOH1ksLNeT6+xYjWKN7JMOu1bp +0ej+XxFD9bqcOysEi96xqluURNCHUHdgh/K3nRMZ3Ffh+HYarRari6PIkrqQBTsM +zsl0EZmIS0IXUAV85dcWtYJ7nUovZqFqkLGZB2iOoBrjJ9JmaUwauMs7A9SVTCaJ +IbtXi9vBGFLSnn1Ep9cmv1+MoyVZ7UAAnzo5rFikjaTnotsQOlUtfRIrHYx/Dl0S +iOdxpdNo+Y0Ed8Kf73EZbAzzTHFK3pdkm5zrUi7NOnblnmB7xHRP9zWk+20D3Iwt +WOVsFq1txtG1Qe9cd2HFsEgK3pfQw+/LmjkTpxeXptAbExrgFlO3Ulg8bIJWWY1q +1akQ9yuMC3u8jOkJM079P2X60TLn+988xyJx2lBQWm0R6uecUqLz1PKYuHqZsxMY +07cYCs3MjhRzWevF5u9RlSNBAnjhU2ibuarcEJoEJwjT4fQyLhmrUf+D8VlMrXPE +iTUvKKzmuEKyQRwwsvOkZHEKu7Jo+LmD1RkfCOqPwmGIm9UFL7V0gIPw4GEkaEZ3 +1hMmNhvgBbaoQgkErB5kPpuiuM/XFPVfatUbZJqj7jJp8fS4V5l00m14btBiF7H3 +KWm0LxTfr121nUn/6HDzk0qejOhKufrWShOttojmJLdqmnISjAYkhAQOyopHPXet +8bxNWypODoabY/Q20oBTTqAunfs+E3VBjQOxfjg8oQKUlgnssCShiXsDjN/rra3u +KLfuNbPTOoZtYISXKkFPoy+jz7jPKN8VQQXwRcvNznKMtUkT82tV36lh9AYc9vot +V8FtQZPQb3v1fYzrznz0cCXOYHnz/0DWO2xqwGBpQViqBe+Y9ckdAdIiU41jQern +WpfaW8dykecdgek7ucXEz7IhOnxL5CwNnz8OGYkkblNnCYpb+kpKZiAheVER8pOc +Cl8633RscMhC5IsDqy/tQEiQJUa4MRyQp4UafxE2yGh/8lhOO8jnBLV+ZqBs5PYL +h4pnoDbTNf9aPWZ4JgCxrec2FCL+1G9DOXDRk75I7AnrkWWBuJ/vmgGzcCAbTiMM +f7HUagD92oQm4voFwQyyhbPzla8mUoD2dQ23DzTm1BUay/QSdqaATqP+frMTv/Ha +JMnJQJQp/fr6tIdgAj0t603Xf4RUJQHs1rmzfSyrEUcyZYqtFwOPhfV4Wm5oZrzZ +Ie5ltJhXL2rXV9UiLUSLJ1PHbNY43me+qv4vTNPyi9dSdqc/tZUqDgigDMeVs+ti +0+eyeUMHP1nkjDNKEXzQ43nIVm6k2qpsnyjGX8ITS0Y4jYkF6bsHlqN5hXEGhRkH +hIv5XEPulIN6svS6AkLUOUwtNc5jvWsbT/gEuGDmqZdcphT+GX3JGnEXGWYNkGjy +gpuCV74XPN9RQs81RGspkAg2khQaF0hIgDjlboaikel1eW0XvyfIr2A/azNBOS8L +6ubGSumm5pCfwYfOhHa50w6b6m5+2tLevm3N7261jXU0Fi5XCSEMfFPMYRIQM3X/ +ZYe8Jj6iTZtGF3nhvKF4BULSmmySDdBCt1F+LOc1wTIzwBfQD8Z3vO7jcLZqVNk+ +idOxgJVZDfiCmiXA/2Etm3Ni3nvr0w+qExUcbhf/qqS5ME5CchF+s8fA2LjRUto7 +K0jTIPBzFB3XMGWdIKuoohVh7ZLTgXnZzHmmkpERHr2e1SmlIndjJNX4iXa7J/lk +w0VXz/zIj68NAryxzEr9xV6i +-----END PRIVATE KEY----- diff --git a/certs/mldsa/mldsa87-cert.der b/certs/mldsa/mldsa87-cert.der new file mode 100644 index 00000000000..34d5278688f Binary files /dev/null and b/certs/mldsa/mldsa87-cert.der differ diff --git a/certs/mldsa/mldsa87-cert.pem b/certs/mldsa/mldsa87-cert.pem new file mode 100644 index 00000000000..f2e0a9ba192 --- /dev/null +++ b/certs/mldsa/mldsa87-cert.pem @@ -0,0 +1,161 @@ +-----BEGIN CERTIFICATE----- +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 +3wAAAAAAAAAAAAAAAAAAAAcPGB8mLTM8 +-----END CERTIFICATE----- diff --git a/certs/mldsa/mldsa87-key.pem b/certs/mldsa/mldsa87-key.pem new file mode 100644 index 00000000000..b3659560728 --- /dev/null +++ b/certs/mldsa/mldsa87-key.pem @@ -0,0 +1,106 @@ +-----BEGIN PRIVATE KEY----- +MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgRMIYoSY39lqzlFQHQdSGw471 +j8geQ1/KXZo8kRWHU6YEghMgY5EP1pGY/AO0ZNTCLYIYT2GiMWnYXJLnI5zA9zCj +BDBs2Pi/aqEmLnovXsKSSrBpIzBqCAO59b8naRwzIHvQPWsbrmX3GeeYOnzogupy +KQwqFFoCQyjH/xqC67KHNBNmW27LoH0EpR/TYgHLK2mfkYywEtYl3VuByJrPBpET +0cgLEWyKRIDkEhIksBGBOEhCtIiDwCmaqDFERAUaBXEDoIHUFiqSIoASlgSSRG4i +AE6YgCxDEkRSSEobMmzBuGhAJmobJFIMiUihuDBMAlHQlkUDyGARklESk2CCQFLD +Bm5AMGTYBDIkE21jlgQMACAitYVhNoAAQ43RRHBbMmjBtCXbJCRSRC0JRiBBIA3Q +ICkEBSHCKAgRuWnLIA0AQCSLlEmilGWiBE3BQmTjpAjZyGnYwIgcAZAhhmhCxgEZ +Mw7ChgUKR2mLEgAEMALjhGWKKEAaIE2IBoBgEGKEwiWBJGHiFg3LwnAUI4pSpIWT +Jmwbh2gjpwnTxFDUgIBZKGBLgnACF2IjBgoaQlALMYSJBIwkxgCSiFDMAo6ECI1U +oCAJyU0jyHEAhnAYyAhMlInURAgMsFEEhm0jIoZUBJJBNm5LiGmQxkHTAogjMS0g +FjIDEAYiIUGakGmaRgzSIgzZuEnIooghGCXKRkVkSGTjtonQJiqBGEgbmHEYkTAJ +pongJFKjEG1gJooKEUkERIjTJHBSIFIUk0DDNoSANpChskliRoQAsSlSghEjB24I +o4mABCZkoiSSIiiUNiwRkmzbNCyRJFCBuClhJGLDApCbJhEIMwaINokAxojDxnFI +Bo5jCA5KiIXihIkQFXEQNE1ChJEcJo3aIgwMAXBZOBBboGQJBwaTNCFZMjHRqBBD +FCBYIJDDSIHhpAwckiCbIpKEECEYRw6boIkBkGVMoEjiwA3gBAUJFyiQgkAAAkJI +qCBEsg0ZETFgECQIEG3gMCjTKE4kFAoBpABiEjCDEnCBkkgLFQaTpk0AlIlDkkQT +ODKIwpCCMAzaqARAlAgJxBHcAjJUggGZpm0aFCnZEhHMwIHQEgnRAIwAECQjBW5Z +smkaJAADxiABFwEjtYBJMIQZRwpjxCBJAlLJyJALqAgRsS0QyWRDGCaJooVDAlJc +JmwQRA4aOExMBCkUEmHikm3BqFEYEQAURikIhmQgxy0AkBAbxSGMJgrgRkEENRGD +xhEBMXGjFnCDyHHZFlDjQgohMWmAlpAIQQXMqGQJwwQCxSACpYULSUCUuC0BQhED +AYyUxgBTJGHUCEhkpGGEwoUiR4kSg5AbAUUcNSqkNmACs5DKREkgQ4wBoikhIlBb +MJEclwXBGEiJFCoLh2FgIiyKFgzjAgJcMJKKMiZhpmHJQibEhDBZMA2KyI0js2Ch +lkgjkAmDtAkcFY4RJi7DJnBhQirhqChBqIghg0XKxBGRhC0BE5IgJwUjkXEhMgqR +gimAJGIUBXEDkkgiIUVRgmgUQUbENCmCKAqIIg4blHGDEglUEgUaM0whokVCJAiM +BAbiyElLxIGaMmwTlUGkooAEp0WAIhEkhAgLAo4ByUFLMo7IMDBRFATbJETEgAlh +FAHStmTLEkQQmYHgxjBaNo4aIxAbQ5GjiCnBonDAtHETFXATEmQTsAVkFCwckkDJ +KEmksAzTGACYEE7EhmBZtFALBZILNCQCiEUEokwDJmTgQIaTIEhiJhJMACxBxIhJ +QALLkixMIFAUOIjhGGZKAEhDADAKwGUaNWILAZIBICnCtFAMJiYLAy6ISAlLNI6D +kglhsjCZNCUghywSFUwBSEQkIgmINgwCRG5cwoQRpg3aIilRgkwitWRLJkUbE4CR +OA6JJAqJiGFYoCzKGEQCBInLqCgjRUGDwnFCojBiIIFjNHJIKFFgEpLIwE1JqAAY +gwkcICECsQgIyGSZEDFDOBESAkZSlBCiKIgDQlIRhCwSMEoigWnJMmgaIFIbtyVQ +GIpgEgqBNGHhAg1aJImMMG1ikgwEB2YMxmXUQkbcFBGYIm2SoI3YQmUANSYjoBAk +Jo0CJIBTAkAKAIoDF00LRSSJAiijRnJQmEBiKBAEqSCYSG3UxGjcMjAgRg4QEXFc +piV5LHEcsVwpsesOg8/2Scd0+dEqT6qXFSc6M4SBd1szeH/LeG5svoZFyLu/Tk6n +IKDslTsimT5Ja7mChyg1x/i7LkUaozoIzvxpb4ld9Nkv1zpktfaT7m6l7/4OVkaJ +aVilQ8fZzZOm/0WuI5WmWFn0ijxtZS8klz1+21BDIW+AWlo6fkU00+KAaWpitCqP +8VE+FeQ1Tt3IX6dPnFMF0Z1cWtfY5yrnhon6+R0HDu2i8CGChDMczh7vlXGgM9+i +2vCvatrgOPeCNsOsohxVpNb1IRkGobSrGYXf7Eggzx53t0K0SOwh4DTQ2wbTNb3J +rarLlFMD/A48M1k7+AQFQ9ApqjPv4ogAA0dYxZ3vGOY3UOu1x44RG8UpoJ+ufTJD +uHwVrr+Gzgi2Ag6fxMb1yl2TJds808XR+GzRvd+yyH46nDFFJhPfCmH3iXI8mzYT +oeF7vdnTRmrgmButad9ztKt9sREBjoanUBHNSXWilGoIGO/oSrz5wAlBoq/gkHEc +njPeJVNqKbrq4NBnDTEyfJLlsioMDrgokW3olDd5ZL4oqBy9czfcnTyAA6P2rkzc +0o/et7nEX/Cw81Vmmb4XKhymLPqkLegSxFq8u0biZUr7WmZEXlOtE8kY0xoNQxbA +BExmF0FyYFXLrYYgVKqrrAUylntZ1ol+K2w1bcGk4+JwBDkBIv9+vPcnntuWLwAP +tNoa72oNQJczpLVPVyYSbDqg6Dxwy0ym+RyI2sNnXrceq2PJAbMBx0LF6f+juZyj +4wgdAE5BPfaX0YkV4VpqkXmSa51Y2K6TW+A9aOjuwDt6U694tRUs2j1ZYhHxvaJK +zOq2naoMi0/pT3zydZESuaVQiqtq8krArey8LfjDwHJNxqe56DzrdcCy+YU6NxnW +LBeyJTwzxMMo3T0F6JOG0ZBXZ5Us+o1g0g+wnCEJghe11DFQGBbHrmIgDJjRYFY/ +0tjUwCBIFVp+N2kajFU5/MqUl/K2QYN1sQcGc0z728/IpRc/0Y92gqYcihfkhr1a +3wljEdF7csO1ju+wWLUUWZUGey2ZBbNbiMRzuPHpWpc3pKnwUvaq2/L5ekdcc60y +iOR9LdMB7YVMy+DabKtx83sEQOJIhBCYkqJpCqFYiif9aMSG0K5EMzyJzf/due2R +TxnYdOkLw4ONqCS990Txz9v2g5Y3tP2VvMSyG12uaQkUj3p8YFYsNSy/cybDeeAg +ILlLyhcvBHsBHy0YMzLGptb17xLAAn5Qdl/gPjQqtEnZgpUfYep/8+EbyejB+HRV +abYxP8spZ8RmFuh2T+xkw7GgyKh5o4vyVqvqhjlTQ8/uwwuk8aSypisgKaLv++j1 +VJk3LiA6kR1dfZHJyrOeGi6rfWh0704SiStIDKDIsW0JehiWDlULOg7wVcC04hD0 +yRLDOYAIcaQs5avjHpZjQ9/SCE1KVqdB8fpvGSig6GVgyxI8x9qcx9P1ojF7O2ww +uDd4e+4CanBJit/jZXjsc9sagwN6p9w+L+K1emf4+bbiFgDd/ww0upfJ0JYJ9pz3 +Ryrf42mqd+YpsOtnDtKexs22fHiuLl14sfmQ1ZZolZ920BrY5Qjp04Curmu+wN7U +8nHK/U6LGyfekbE3DxOMnnyyiUCuPoaQti4YpRsbIpFLikaEEdSQNAvbokGGEpOI +KDj7/nkjmdbRKbnCIY+eftXJcW1gLQeYK9kPE2IbeXV20/LXhKEQi7WyjIIlmAiO +XUYTRddDJHGF5AqtqoccBM+we3JrexFE83r6KFz1YoVRXXwMgUQqcMl6gCjnc7v2 +0li19AODsze/1WpuMArT8aJXLXLYOm9UlkGTVIXNaU6/eda3PyFDlQ2A8mDEOuGX +mjZ5Nypf6TCSs85btZlhJ9/2VL3wzWtPpHHqWs7D+GI8s0ma73+O13uGcRjn3GGM +aYAsw/0KBiQH4xLwjPkovLjmJKCo7fbNJNWED+bCoWvPxHb0WHDUb2BadtFqiKgA +fAtUZZJBHST7/O1WymN0IFP3Cl/hx/7IZysU+OAN8H1mfGhZYIEfJ8HVKYNUmb8B +B4eIx+FFZ+ewNx6gWSbJfZWogpxg/RoJrUWrUFBSD8qMdMY5Ra0EskRL+VQS/DJf +eReCONQLMoV6HFFrL1N188DbJDwPc9vKNAt/jSl/5nPX4lto+3nqGWaVGKAQjjVI +vQZHBVEoERuJLmN/LvBzF+qJQzvwm7SDC4pN3OCpIG9Cbr/ndtdnqoXtGgzknQwb +BHoV4iCL4JjP21i6toBmms61I3zVcnaojMTfU45/FhDRVdCLaPWsy+hFomwTIeIP +iD3y0XBHbls+oA09Dxa1h7xfqup7tw9aHz9UgkbCxH77UZo3A7Na5m0kn1aEhQAL +38EjHP74OFQqnHEW7HpEaHh/pH8pNJw1V055sapB9UbffU5DkEsux01wgNgEsB5h +PJuyuZwPVggwUOMWvq1VVILpwLl3ffGYahHtaA0OVVmup15kP0YvJbh4dE5XoRUc +f7NcPsvp2gviLIS/RNlZQG7bK6OG88eSxDEhpE9suKYNMLerEcohRC60peYPB4v7 ++xr7PmhQOL3T/lGj4immyHTIxQNSpDnXD9EvO23MOLEBCPpzX6nMAj/BGhM9oBht +GIikchFPhcF992gesqXsDzGMMt0jCc2NvtZXteersNkJt1d4KPs0AhT99ogpF6jn +7bUXiGzJt8OdxC1c0GCZ08zz2khDIqhDk2EjPhpFViD9VAQCuM/I/Sd1NFfUXGnW +4paz9p2/badJOpAqUwgZN8PF6BrhPntr1C65yFYosUlK4AmSuIzCE3JKessX4HW/ +VmC26UrQvIyqmg98iiNXwp54tJMSC0Gyz7Y+s8oCZj6htQPbmy1HsqUEGMT17C6C +P+5co4dDj1lLYZ28Tq15WE/pU0olF+Ht7hF8FVr4O1Anhjgg3OU8bfjypszs1U5e +94QLHcVFkwm4itLb2G6DVvFU5Sv6eY0WyEPfc5XzLj89ZUwMb6uB8dnXhnJNBQXG +ZGfhtVQSNn5kYU69D+/JgRyJ7EzFeZuZOP5aAeLb349lksaO7mGA3NPnCJnOvQJl +wSYLyrOktgZZGj+4trNmPmbNfHUB5VvHUFl8kUEB8nNy4AokzYGj41UsvlB1tMhA +9M10ZOpJK64txfX5+suJJVyQDk1xOudnZ8hlHOTpLsTsGY7zseswHA8c1tZG5elz +L0gZJmd6xp7tib1238LWoQPYhsGXOaCXXyhhdxgQLNb29ET79G/K84LTN1QtQjzz +caPEgit1gtlMcT13+IPin0O7eVsFjWAeoUHNxXTz6xYKzy/TtqLP/73sHKT9L45a +3Yin010CBtR2xKmYfTHViENziRzhA+uFSNx2ixUUT0Jzbactjd6wcFe8aCu6JXBg +RONUmJz8vOQwsc6sE40nJQz9Rtj275Jc2pCAsTQzzcehinfxRWtBjizDYC2dnbp1 +ZiFxQFE8Lc0DhhO0gdCbewV5l1eMZHdWLIvZO2bzYSwUyIr1QXwLvb38PGk5KN0g +NaBLBAk+/r4W/ZHnpDTrnSuO7s2tcSHNXzUH9TnnPQw70cQ46Esa3rGstQds7fRG +fPJCAVYjTUJNb0Tur+FdhfnBfM1eiDTHZD1vujK7vDrh6JjPKzwCn9K9NDMYHGXT +k+hiCvWvsrdHFmUIlu7BKCM3cjv+YJhWeavICJfUotr+Yflvp/dqqAbnimM3hcgq +AsZp0FXpusXu1U77yPlhdMOKWle3hzqtZk5yzVaMrMS0z42JbJ3aJrgOXj+stxjU +DyXDIuDsON2r2D+Yw5y1JphjSS79ks3Ha03EmglZJglDZk1kbDGvsf/3m3w+x52H +Xs9I02m7xY/95K/DmHMmAFGXBIETBAiHwICUlTJU+sL+zjQ//nfXQioSmjKxHlS8 +GpZ36b7fGTVszq68TqfTSoAyanKDdDUtQPCTotj5SD5SDKfVmzbIoGtJ5OvxtnyK +/BG+MzXr1+ghl1KJzFi9hdvSK69vGBXI39BCgakqdVhJPnEmfdVp4d8LEgdga2g8 +2gM5idjeG7xcP839JUAP1JyLQh3R79/SaFPAPax5TcQgs7vwwlc28pRCJRkbUlJs +my9z2tZBINBzguqKDf5p24LUhZMO71piAU0qqqWb62RXgvJPtwbhB04+6Jsy8+f8 +Z9oC9HxRzDOkAvyXmPivF8qtXu8IcM0gheHKMXzzoZbzd279XsvzPC9Ltpw2eGV3 +lPVxmdpXqUjw8+ciHUEiNK779JPGSOajC7LHMe5q9c/uru15bTXpZlA+dZGJWXeY +lwmFTOqPsS8Pe0bXN8585KA7HRLGSRTXfCgNL0imBl1WF71bVEby+IHeg7whWl6d +KIsQl1BtLbSKH+u12JHSCmojONiHOSjyFd+2j0MJ/S9Ts72zf9ScGW1G9CDgVLjF +PSqF3MdQsdUlbUFt53W7Kzg5 +-----END PRIVATE KEY----- diff --git a/certs/renewcerts.sh b/certs/renewcerts.sh index 8745770ab90..d1492d9e6f7 100755 --- a/certs/renewcerts.sh +++ b/certs/renewcerts.sh @@ -1034,6 +1034,53 @@ EOF echo "End of section" echo "---------------------------------------------------------------------" + ############################################################ + #### ML-DSA (FIPS 204) self-signed certificates ### + ############################################################ + # ML-DSA requires OpenSSL 3.3+ (oqsprovider or built-in support). + # Search for a versioned binary if the system default lacks ML-DSA support. + OPENSSL3="" + for candidate in \ + "/usr/local/opt/openssl@3.2/bin/openssl" \ + "/usr/local/opt/openssl@3/bin/openssl" \ + "/opt/homebrew/opt/openssl@3.2/bin/openssl" \ + "/opt/homebrew/opt/openssl@3/bin/openssl" \ + "openssl"; do + if "$candidate" genpkey -algorithm mldsa44 -out /dev/null 2>/dev/null; then + OPENSSL3="$candidate" + break + fi + done + + if [ -n "$OPENSSL3" ]; then + echo "Generating ML-DSA certificates using: $OPENSSL3" + echo "" + mkdir -p mldsa + + for level in 44 65 87; do + echo "Generating ML-DSA-${level} key and self-signed certificate..." + + "$OPENSSL3" genpkey -algorithm "mldsa${level}" \ + -out "mldsa/mldsa${level}-key.pem" + check_result $? "ML-DSA-${level} key generation" + + "$OPENSSL3" req -new -x509 -key "mldsa/mldsa${level}-key.pem" \ + -out "mldsa/mldsa${level}-cert.pem" -days 3650 \ + -subj "/C=US/ST=Montana/L=Bozeman/O=wolfSSL/CN=ML-DSA-${level}" + check_result $? "ML-DSA-${level} certificate generation" + + "$OPENSSL3" x509 -inform PEM -in "mldsa/mldsa${level}-cert.pem" \ + -outform DER -out "mldsa/mldsa${level}-cert.der" + check_result $? "ML-DSA-${level} DER conversion" + + echo "End of ML-DSA-${level} section" + done + echo "---------------------------------------------------------------------" + else + echo "Skipping ML-DSA cert generation (no OpenSSL 3.3+ with ML-DSA support found)" + echo "---------------------------------------------------------------------" + fi + #cleanup the file system now that we're done echo "Performing final steps, cleaning up the file system..." echo "" diff --git a/src/x509.c b/src/x509.c index d3af5212969..2560caafea9 100644 --- a/src/x509.c +++ b/src/x509.c @@ -6313,6 +6313,13 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509) else if (x509->pubKeyOID == DSAk) { key->type = WC_EVP_PKEY_DSA; } + #ifdef HAVE_DILITHIUM + else if (x509->pubKeyOID == ML_DSA_LEVEL2k || + x509->pubKeyOID == ML_DSA_LEVEL3k || + x509->pubKeyOID == ML_DSA_LEVEL5k) { + key->type = WC_EVP_PKEY_DILITHIUM; + } + #endif else { key->type = WC_EVP_PKEY_EC; } diff --git a/tests/api.c b/tests/api.c index f8b7afa3c2d..5561f85efd3 100644 --- a/tests/api.c +++ b/tests/api.c @@ -33850,6 +33850,7 @@ TEST_CASE testCases[] = { TEST_MLKEM_DECLS, /* Dilithium */ TEST_MLDSA_DECLS, + TEST_DECL(test_mldsa_x509_pubkey_sigtype), /* SLH-DSA */ TEST_SLHDSA_DECLS, /* Signature API */ diff --git a/tests/api/test_mldsa.c b/tests/api/test_mldsa.c index 2aa788e8615..cdf06bb7d94 100644 --- a/tests/api/test_mldsa.c +++ b/tests/api/test_mldsa.c @@ -17163,3 +17163,56 @@ int test_mldsa_pkcs12(void) #endif return EXPECT_RESULT(); } + +/* Test wolfSSL_X509_get_signature_type() and wolfSSL_X509_get_pubkey() / + * wolfSSL_EVP_PKEY_base_id() with ML-DSA self-signed certificates loaded + * from PEM files (certs/mldsa/mldsa{44,65,87}-cert.pem). + * + * These certs are generated by renewcerts.sh using OpenSSL 3.3+. */ +int test_mldsa_x509_pubkey_sigtype(void) +{ + EXPECT_DECLS; +#if defined(HAVE_DILITHIUM) && defined(OPENSSL_EXTRA) && \ + !defined(NO_CERTS) && !defined(NO_FILESYSTEM) + static const struct { + const char* pem_path; + word32 expected_sig_oid; /* CTC_ML_DSA_LEVEL* */ + } cases[] = { + { "./certs/mldsa/mldsa44-cert.pem", CTC_ML_DSA_LEVEL2 }, + { "./certs/mldsa/mldsa65-cert.pem", CTC_ML_DSA_LEVEL3 }, + { "./certs/mldsa/mldsa87-cert.pem", CTC_ML_DSA_LEVEL5 }, + }; + int i; + int n = (int)(sizeof(cases) / sizeof(cases[0])); + + for (i = 0; i < n; i++) { + WOLFSSL_X509* x509 = NULL; + WOLFSSL_EVP_PKEY* pkey = NULL; + int sig_oid; + int base_id; + + /* Load PEM certificate */ + ExpectNotNull(x509 = wolfSSL_X509_load_certificate_file( + cases[i].pem_path, WOLFSSL_FILETYPE_PEM)); + if (x509 == NULL) + continue; + + /* wolfSSL_X509_get_signature_type() must return the ML-DSA OID sum */ + sig_oid = wolfSSL_X509_get_signature_type(x509); + ExpectIntEQ((word32)sig_oid, cases[i].expected_sig_oid); + + /* wolfSSL_X509_get_pubkey() must succeed */ + ExpectNotNull(pkey = wolfSSL_X509_get_pubkey(x509)); + + if (pkey != NULL) { + /* wolfSSL_EVP_PKEY_base_id() must identify the key as Dilithium */ + base_id = wolfSSL_EVP_PKEY_base_id(pkey); + ExpectIntEQ(base_id, WC_EVP_PKEY_DILITHIUM); + wolfSSL_EVP_PKEY_free(pkey); + } + + wolfSSL_X509_free(x509); + } +#endif /* HAVE_DILITHIUM && OPENSSL_EXTRA && !NO_CERTS && !NO_FILESYSTEM */ + return EXPECT_RESULT(); +} diff --git a/tests/api/test_mldsa.h b/tests/api/test_mldsa.h index 2493100d0ab..da55a0350c6 100644 --- a/tests/api/test_mldsa.h +++ b/tests/api/test_mldsa.h @@ -39,6 +39,7 @@ int test_wc_Dilithium_PrivateKeyDecode_OpenSSL_form(void); int test_mldsa_pkcs8_import_OpenSSL_form(void); int test_mldsa_pkcs8_export_import_wolfSSL_form(void); int test_mldsa_pkcs12(void); +int test_mldsa_x509_pubkey_sigtype(void); #define TEST_MLDSA_DECLS \ TEST_DECL_GROUP("mldsa", test_wc_dilithium), \ diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index abca847b21c..90725560d02 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -9970,6 +9970,10 @@ int wolfSSL_EVP_PKEY_type(int type) return WC_EVP_PKEY_EC; case WC_EVP_PKEY_DH: return WC_EVP_PKEY_DH; + #ifdef HAVE_DILITHIUM + case WC_EVP_PKEY_DILITHIUM: + return WC_EVP_PKEY_DILITHIUM; + #endif default: return WC_NID_undef; } diff --git a/wolfcrypt/src/evp_pk.c b/wolfcrypt/src/evp_pk.c index bf0b3cf6af1..c3b15eb6617 100644 --- a/wolfcrypt/src/evp_pk.c +++ b/wolfcrypt/src/evp_pk.c @@ -398,13 +398,14 @@ static int d2iTryAltDhKey(WOLFSSL_EVP_PKEY** out, const unsigned char* mem, /* Create DH key object from data. */ dhObj = wolfSSL_DH_new(); if (dhObj == NULL) { - return 0; + return WOLFSSL_FATAL_ERROR; } key = (DhKey*)dhObj->internal; /* Try decoding data as a DH public key. */ if (wc_DhKeyDecode(mem, &keyIdx, key, (word32)memSz) != 0) { - ret = 0; + wolfSSL_DH_free(dhObj); + return WOLFSSL_FATAL_ERROR; } if (ret == 1) { /* DH key has data and is external to DH object. */