From c425fb1aa44695398c5541883c4217d4ea113aad Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Fri, 13 Mar 2026 10:47:35 +0900 Subject: [PATCH 1/2] fix error case in d2iTryAltDhKey --- wolfcrypt/src/evp_pk.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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. */ From 513a106d79e8b64b7454ef8879e0c0d10942a31b Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Fri, 13 Mar 2026 10:57:58 +0900 Subject: [PATCH 2/2] Add ML-DSA to X509_get_pubkey and EVP_PKEY_base_id --- certs/mldsa/include.am | 11 ++- certs/mldsa/mldsa44-cert.der | Bin 0 -> 4121 bytes certs/mldsa/mldsa44-cert.pem | 88 +++++++++++++++++++ certs/mldsa/mldsa44-key.pem | 57 +++++++++++++ certs/mldsa/mldsa65-cert.der | Bin 0 -> 5650 bytes certs/mldsa/mldsa65-cert.pem | 120 ++++++++++++++++++++++++++ certs/mldsa/mldsa65-key.pem | 88 +++++++++++++++++++ certs/mldsa/mldsa87-cert.der | Bin 0 -> 7608 bytes certs/mldsa/mldsa87-cert.pem | 161 +++++++++++++++++++++++++++++++++++ certs/mldsa/mldsa87-key.pem | 106 +++++++++++++++++++++++ certs/renewcerts.sh | 47 ++++++++++ src/x509.c | 7 ++ tests/api.c | 1 + tests/api/test_mldsa.c | 53 ++++++++++++ tests/api/test_mldsa.h | 1 + wolfcrypt/src/evp.c | 4 + 16 files changed, 743 insertions(+), 1 deletion(-) create mode 100644 certs/mldsa/mldsa44-cert.der create mode 100644 certs/mldsa/mldsa44-cert.pem create mode 100644 certs/mldsa/mldsa44-key.pem create mode 100644 certs/mldsa/mldsa65-cert.der create mode 100644 certs/mldsa/mldsa65-cert.pem create mode 100644 certs/mldsa/mldsa65-key.pem create mode 100644 certs/mldsa/mldsa87-cert.der create mode 100644 certs/mldsa/mldsa87-cert.pem create mode 100644 certs/mldsa/mldsa87-key.pem 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 0000000000000000000000000000000000000000..0b722a19d4d88e8dc324c72c5c232ba351d6ac5b GIT binary patch literal 4121 zcmcIkS2P@q*2O3h-7tFZB@ClRXY}YqZ^H<|Xrqk?QKOGf)F4{)I$HD+C3=k#Q4@ry z(fj?rwf_5X|8-yQc{ywEv(MV=oQDk#Bc}$3;m73xaIkT3r~($?EWb7+mPDyQVYMBB zlyjA&DPSUeLc1spY&ZZHKmoQ8Ap#TP159x7fjA~cBIIDwf50PR0v!(o(jH;|Z-#)F zK-mKYceh9Un|Vx3;P2t)WMuSAgc=O|XA3|~Yz+57vbwuD`q+z!fthJYL?yrw5wNI; zI0PbYK|=!h8-gYO5B^WR!|+7^<4`~t9vjvhH>Z*mo}Y$uM;4z|SS78rs<}=cPLFTH zx38A<2YrV~t%FAt8duzbkTTC^zBZM(eS6X?$r`q z76h@f?+^0n#|gcQ*`;ruQ3TQTpJ(G0jPnLyH$AUNox#q}H0%>Zlb1!_q{!5QQ#SL3 zLQ~8Gi0D&FxDUkqCzgT5I%Lvvh|+$%iq>{*(ea=91Imvr#CMDxuN4|g3NkYI7KyCC z^1u+$&WuADNG|j~nr;4gBz4+<8ofLD-8VurcWEU}RHOL~$rrlH(I-)cJTI>rk;Diz1uY%?zXzhkBMT07Z@nzYDc+ajjZ zs%8mEuRddiHe|%{yagzve&E~54O>$GCgzP09H8_O`@B22lO{pu{@Y}K4szTi_Ok|p zW3k3qff9^8keB_3xM1rtxAH7tF>|@ISXf=Zf*sEQ|K|Q&#*R!jq5Z^#7n6lbAFcUB zrQHDymyQ2mb=M$TGzp~Ii3|mkuX01@{^v2VvXM=wotC9>F zeYF_JAbD;x%Wkt~>E2L=T#lyS{yv@KAkxDWBl^RgVq zljh56LvU!qrej$%n%BT*`~3=S0!pnON6^PSr^RCCY5JnX#7u?)L?LL>AMvU7gJf6& zYdQHbX0#sF=@a(q!pUbm6(^F6_VHLpnzlgY3&KHC9VFg)FX_GNN^tJ-vb41|Zh9aS z8&~OLt8yX6x;Hg1wiM>z-uIPr#1Iso+_l|sQ&#`Nm`X!?*w za(Ga{MXX@R0q-}CP<26sZIPrG-*0?dWohV!J=DJP{#ORzPzwtDX0DxmhyCFMUt;lW zy`3&dZK#ZfRI=1}d}T@I>w4WM4u(6nzc^IMkxp8FZm*eBo_WjKue96sFQ zQsHvGq56#cJq5ai1Hq3RqXGlCHJoUKJe15xp6_t0-2i)$63waNfQNz!v?ft=Z<^J;xJe){v=TLvOhaFR`Eutg}0v7=ytrq8zrW* zVYTgeVgr$llIB9-B@N%TJe_V6j6IM2%M(6d{>`j4Y~gXMCxu2}12EIyQO-n)3&N$U z$CDW#4TZ53=%%=5$^)IH2W~~dEdPu-aB0Dy(ElzV`$qu8#(u!X0|WkU|1X9KeX$rz zb8sY5bV4KcUUj^YSQ2m5OVnHqee12eq&B#vx|kjySya)w;JlaC_}p6+;}P=(uOu{q zU)X!NB8s(5sQ>FqP?qe)t*;f_Wef!@nE~xxhJ7;Ms9dY}O8V(m7o|eI%&VQjN~14C zowJC%?Q`6`aRWk4yEAoOZfGZV@5cQgs_H}=a?xCzia;(bA*SRKEZX4thDM$bw-r$n zcsivZW{hbxp)h82{ik z6Wiep0kwh=+(g!FP9gdu6nET*0^wG#9Tj8xCV@StC|lUic_~1s7a8~oV_h`pHd$R- z*VP;_P!vxiohnRBL07>rHj=6R$c+|xYEZoK{uP$%_+LH3v%9Wp;O+Ef`WeNA2(w5Z zMTpB8JiNUC+MH`rHrv+p+$&8^uSqU!$J$$rRz#-6`8Eo=Y?KmVX`F?9z{GHf z;MK4}G&=OE0{N%Q5{kMXvVn+CqX+QTrhW@fXWG}?Yi)O|+#C6S=+Ub;)}^iw@vJv| zps&i6$ToTA3*#LCQ<^%~d&5PT*jaKNzJCxh)HPK}!fT=tt8Xt82$h$k9sbICj@xgT z5v;j(+=8YyJCa>}uLKKUe&H>|k0r(&eXvWCt*Fvi%JI>>=SjkBB3B<|mT$h??nK*> z`AhLvljKmRs<$qHQv4X#%h*GPm){JMAa}Ai(y;j@(2L@!zPm$^yFy0M4Qu-Br}UF7 zQWf1$FnTexPY&y$Z%vfo872Aa8*D$6eM?plPyfr~2}1 z4m}mpvLf{114#IioLMz@2~Ol)a%|n_wfw2BCljb`rxC1$-ExhohSJOIB0ErI{l~ez zG#YLkY#M%z3~@Q>p3Ji?TDzxf+={^2yOj{eru*dDxkVKV2^|}oF;uT=E@i8|FEub& zDnM<5zZm}!@OT#*zyF9Pj^|l^7GCAa%4jbOhS1f>VUOWE%E*gA1)aTdo zJXPN=>=B8Ll+Nt(1_jx$ksi>fGRo=RE-i;a4lFyFLIl)QW`Mq_67;G|XLLSD{YpJI zbar2W4|RgZ&jY&S-*R28Te1_-SemHW&7u!;29KkhYRBOoh6cHPAWN>J6sn^Vy>}kr zi~W+cmW2y%qMd5atSHpZx*PlHA6-q!sA`4mXx=C!XL*&tMG165T**l~odLaB7`R5_ zIzO`$Q60GECUbu%>yqJ2ePif3B+L_)JsjY7J5htdH&Qh!L zXPT_e6q6QaA*dxW;gB8h_!o&fy+M7rqWVm6J8>8)$8e_qAk?XO3;N?IW0?GTXH7W0 z&i9sIPklc$k<3k7ks(*t(@%p4GC;1 z4y?Vj0n!c~{6^4qiLIYY!aOrw9j5QH{_{|VRjdY0NbYMdR6ZkB!E%tpKy+mon^-$N z)B@84@VFOonEn`hJag%V7GM0HE?q%NAfR_QBzftMIki^qe*K3dyL@d8N10vX5ZMf_ zA5`c%|8c;5MYe%fB@VDQyQ44@>ay;ne3_{;X%Ow*b8|u<1TVSL_UF0gk(0LzE<@J* zShsq23e!|V>GCcCdQMy}7icEi@bvHJ1BSqJ8y%=Y0UCJFiw{g-yCwb+iw(}(1acMq zMu-o-XZf>mygMMfPT*+yy;Bg4-pTB_i-UOL%wM`LpP*EXI&bt^YPoECZ6=+*7=7w3M7`&U#FIdp<963FDSnz&r{J?H zeB{s^O}!@fo%>mcS?{|D^3)Zqx-Z){3k`Id7pfGcvngXZGTIRy<7midNB0X4pmNzl z3Na@0?p#n$;aCcqy75Qps5*^r6## zQbL`ti(Dd();bT%7VG&VPb$hSizw*jH Q_igVTWBq3l(FrR33#a>keE{+}#EX65Ij|PH+hB?oM!-z~D}hAcIXHXmAS}+%;H`-~_k9{ocQ7 zZ`JPBzHYyCeWy=XSHB$|2q`WP1QWXu83_>yiCFqcK%po02wGmeE;3V^LzEmx@Ph{% z4bvj(J)$i#3Nj&&5id3mCK|FX3K|iTt~M_|5AHvJ0YF!Cck{M%v;2>O4nUW2543f) zbo-Bj1wi+6cd^sfR^=t(A^K+v8353+{pd~a>SFWJQb>@8mJEkah=-q-hmTi~pI^|3 z42S>U$Rqq;`2Ttvf?oeW9z}+r!w^7%6r*T7O0&Llp%%^Sqoud#4`o^=)%P%;r)zJ- z>bMLJnMNXIHwBi10acoYm|0sCXAKS8njKQz^x|3%1k*MXM+iuhTclSf!Ibm%h zNxQ^cs4w5II}MzZ{RLAAyh;uxR)xo&pbcebsQgljqxIXLorZN)gN%#?#GsHq-P$jP zd1kw5*BBO?QYY&71T~oVq9Hg&R)Mg^w*;G+Ax&m7C9CQ0Y#j!i42l!lMUru~w^(-r z^P_&=;aE0k#Y^r$h?7_oRyzHkCKR!@tQBwpE|I>WOmIKu0zi9dQKM3j+ELZ}ObM1wtmS60 z%48XYDN-RHrV=merNbOAKHA~S^0Tq7J=|^gvb=*$%EwLu%SVCIKe~%^=SJr3Qi&8< zoe&q8yNfiXex&h$;a=j_j@S_*L)X7$lFnd54)U_(GIlM)kJe<4Dldy>A#(>%))u@i zj2Y!3sm)#YQ{IG>)__$}5ge-n&yKHJXo=e@xLX3xM{vo|_sN{*x5ALuM1zof%GXqT zYJpL3M=_0vo_nEIt<+~tg=LTrozgCDa@_od@^lOm=MrJO*-Q!*e|D9b&T_uq4U)X zuQMI<{c$A|1G)xO)nCT^y(h2l{)z<7?(o~KVd)9m+yoFhea{+|+^7)ut=Gym#e+EOY7vLa_go1lf|c{aGz2wMkpfk+Z= zq08>qe5U<;a$7L8F-I=L_v{3+x0cVKJ?Y<(aDeHn@?@Q5n8KbKJ#`)&VcXWg%i_Ig zLezkfUg^8CH^DD;QoTH-L=lDApsBZxnZsfvOo>-w%A7Gxe?4mMQl~p%X&C`RO6w1b zh^&T-U)+S@dB!pztZl>H=1d>lM|i)`yivuvY-Sq#Co!$mH9aey5_wPOyQ??}Pyg@7 z8xz}h`;F-vCWEB)8|!n5gbOWcD6XzR<@e>pX+i<@Bon;NB!!O>=U_rf!v@<{3`Ypo z$Q#vqrs?)DzvtiPi4ISyx6I4C;ZgJNz;2-_-gz3YSeU`=UbgKBbcF^nu|6aik%FIi z2;Pv?#81(lQGh0gGupf}>FWfutab25NYg@r&NP6fjAG7w#|xDoy=q*GOK77-wzVqB zE8p22E-y#b2{}>TR|o9h>jg5L_g&uV+YXTFH5TBhq;2{3P}p2N5NmAJO@WcnEL*un zC`{0wClyetjxpakAlI05eDYYmx9e&V3#EaF`R4@?NDZ5gt(}-98;e|)5(Y58LaG+HDb#SA2SZcwx{}m;RP;T@J| z#R$Q00Djh^hE3qO3iH!s9=s6Vs59NIU)SvkcLxfDl8i0)Q5t({)jsJ$=(oqI7B26S z>=zVqp)N#2_>Nmx>KclX!rKb2s1M6uTY{78Zz$a9zCll(DLaxntV9raa%kloGbM~Nn(n2z zAvVu?jUSaxwX2<_f>hWqflt0vM0je$faUf&w^lD_oeEdexkFu}Ik9!Bmcw$j_@ssP zsm{6@SZK&cm=0tO?IrRmh8Vc*085i9h-_fLSb;45<~V@|=%f=}X_W0a0M5w~AG{^a zl$$3t5LCC~G-Iu0Nuejn;h&F$r9QF!{*FxEPrlT93$j|@7<CJW!@R}PV$bH^;h*z^l3Ik1pd zVePIOrwJ2d3o4&a%+j%csJVEeF5(UM{+-k4O2azmxEDvr00DiBiCo06rmenZ^Ds1= z&v>IHlWQ+ZT3A&DJW1o(_#EgN%z{l;#CXzJXymN%wov;Wb!?b|L%IfZz9FawXTtDQ z&O!nm65cHI&L0T<+$KN!nXCkLggJi2Le`6Zyb}wvM^fzB&Eh2L`th3D&O>z(t4Nzi zi-+dlQGx~+g%pK&27G+2)aDmoG1uKQx;1W_jTKGEL-)^^35A@8H1z*A;QeDDLPUH; zLFGaIcl%#40C0-HLsi_f5He;lx{L!1t-P7tsJaohni8K;z4XKnVavO2puTiiS9C6d z^k(-wy?W*Url+q^R2;MDp*U2S3#)oo4ZchAa~nhT;*JN^c?onYVqLg5S)s&7St>NA zdZf9ThWfhp&Cf^#oeYMBGp`?lZWk24XhK}*jVzo%y$uFy@heex&q&u66=zWlHM*qZ zGEovt=zf@#YY zY1lv;fW8@+AC8%(nbvSxojNPa2cx0V`L!lLY~$r@{|4h;r*VpTH<}DKN^ZCJ?VO7G z;gv+3E+Sk??%n)P#gOySsR-sKt4qZ!#6}eUW~5ydDK5FjXRlAatLWXEIluKpkM2;* zOXJ}6I|3)&ZacY^zZ5x@@T%BBX>XTFZ=J@R7hf zco^bYtop|gT|pCaaQf%bz1%zZIKGi{pY!*WjjD!#I04m6@A0>GdGB!_PJaT8{`QbZ zwR!P$=;kshd>xj4^R>UMJ2S5i_ubj~t>^9Nx6#QtsIhxw{QkmWPI~K&TUbi|^eh_S zKuimDY+;ctWA1z}sNJ})`1|?(vsjsp65G5m`XkbPGmE8euMV>FEz|CxwoU8B!e#!d3YWIT!~9|uJ|fok zkg0E1zKuh!#~3abv!Efq;~%9f8@}>`3O)yHHD5lu5YG?fYsP&!B8hq4r?go#m1Q0< z{v7y*H^!HuJsW4+VBR0X&MHM2Daj;lp4@6HQaVgz- z!!o==RT7@Aeaz*jf(U-RqT%%sh!SdmB=VhjpW?{i?1GGc(rqxH9{7UA?>>f&WKhLu z`N?aL9$l$|a~3%o{YOosFji>99K_4K8y=qe+b1?yUPH>ZfG>*^JsgA^BQ6~DMk1A{ z6z)reWZ~fBDOUIBSAMFjB(WvN81r%nZH6dM}wij z%kq{o`{n~jScWLlQ#zZPe=}`P#4Os5p_<=O`f4nJ-kJp8wB~JDSK|~tJu_Le_dZuf4#FNQYc5d2wVqj)&+7x!&O|Xy>bm+p?irVwa zbxB}tyN&9@=H$Wu{ZU!wd?(2B7g`FvN-}3-UtK3i9g8-JYtFx--BLwKTi_mX9tYRxPYpuCaK?3HF?MX5HFCu_xy!>|N^>k84Jy zWXG=0{`<-$(NRc5LPw~9wu6vmUHnmz8f?DNjv;bde7h@|$xn_-lAQc)XbKrEqO}8x zH!-;r*+dSv`kf+7Qt1-2_Y8F^58W;?Xn*n;q2XGV8#*NWRoWn$e93CZ-%5X&`i_D# z7l#CjzxtZ?hijE6xp^!>-eKe}`UqE2GcR0d?GBhu!^WK$EuV8z3>mar_n@%6gekAk z&KvEGLe1$bYPY1Om_9DpIc`t32T_JH3#l%VW_3ucW-!40=jW9PJ}~jwMM!0oU)=UW zSHP2!w?X1K-5zUc1>poknq1j-RTe7^f`%RegmfB&S#p;*b7F`au23d~cI(4Herfyc zD&eEY-AZ>#cw-ldQll=%8}VN^R~Y(?wU(D2(B-5V?QN1c0XrI-4o{S>#ToR;kQr>+{wvgb_|T zHS`2t({P1;@T4Y3wk{zfH8ROAT(XR;q1chLfkEOtL%3 z1>k@ex)pae%Y;qTiOTj`ld>aE7goTq^EjJ-p=%rEo2vJ?e}eaweJ+Hf(r^j;6Uvpx zjNUd0feP~gr)+`j`D$UmLMaCU>&?$)cyL>6(nneiS~l1eNu%ym$M@dvCwtf7uE`_l zTqvK5xJjLMpcR_N8vuW!`p)pwzgSZV8E5Kd$K_dv#U-SrE21sNpyiVQQipq4BvPn5BiqO{oyN%e&!-5U({3(0ZD+u3uKxTkm7+tKnO^`vD=AS z{0t?
bQi_o#m01OwHsJS&L+l&+`8`z4|wV!$V#zu#{z&T$PChNE%$&qoWC%I9C zq)_gpA$86w6>f%1#}~3tukwdx5KVCir$s?>>6Ou@^MbtF$D^pwxS+ShU>v^Q?v647 z7}!Q`-HJSTr>h&*(Jz^=1JLad0u?D=e28)t?3^B%G8~imgC+RxH1!(Q+O^Eq=7XWk zuVT$|LtXRpFgvu95~2{HSwoS7%8p?d_CD_WlcU5v(DK%4Gh+xvt<~S^rqIrOBW{x? zUu(}rBYWQy8p#i1LFH6$JKQotcC?h7ft_q$G^}ic|3)jfM4mk}E6TnuFHmpM&5F49 zu>y+(g`Iur7K_R5o~2sPOV-4poNRBtWO~xHH_S(L&?hGk<{gqKm{vc!wttQMCd8vd zHB@w-UqsBFpsS!Rseg11S}QT+$Ep*%-3;tlA{FJoDWSIQ+5##uW^Fg^56&{wuKVQ3 zVvQcRVOoY%_c-&V!>UU%VFQ?Or85w}E!f$8B@Nm&s-bVkBBe_~H=iGjHJJb$A|>#c z?QO`u$aTk?BuGK1^Z*s_QDF={@4&&C(OWWG5PL&?ZAOZOg~7-|4pM+_%l6F zKJ1KLAug--^(>7V;$A0>m7lv`4KE`#NQ|dlC@%krWeAX9&85nw)o`!k3cT!ccAMbD zy-zw*DkpK9UNIU81AL*H`rczdCMQ~^ltUbYP@tsfa-r7ZXBTW?`<+;M#Q46y4ILS; zZlKi}d36-kh~+8#&TQXp7>gcHq-e*kqhIF;s}+jh5y^RX;^G=Cg>(ESs^u&S^@v(B zezv=aE=$HfTZR8AU(<2F!m8QgTi5yb)Pb_a50V8V)j8WV^wt5%9g8#!67Ne#2c nXFN6$W0PPAw0(H}kjAB=VH}wX7@ym;_!r^76$XHimWktEpVF-Q literal 0 HcmV?d00001 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----- +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 +w0VXz/zIj68NAryxzEr9xV6i +-----END PRIVATE KEY----- diff --git a/certs/mldsa/mldsa87-cert.der b/certs/mldsa/mldsa87-cert.der new file mode 100644 index 0000000000000000000000000000000000000000..34d5278688fcea59691f1d2306a68b421429a589 GIT binary patch literal 7608 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 Ncr-i`YDPBx{{q-1XU_lt literal 0 HcmV?d00001 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----- +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 +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; }