From 0a08ceb319198406e4b48f4c667cadb0eb8a09d5 Mon Sep 17 00:00:00 2001 From: Neal Probert Date: Sat, 6 Feb 2021 11:53:26 -0500 Subject: [PATCH] Fixed OER length encoding/decoding and added test --- src/libasn1/oer_decode.c | 6 +++--- src/libasn1/oer_encode.c | 2 +- src/libasn1/oer_get_ext.c | 9 ++++++--- src/libasn1/test_asn1_oer | Bin 48840 -> 49176 bytes src/libasn1/test_asn1_oer.c | 25 +++++++++++++++++++++++++ 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/libasn1/oer_decode.c b/src/libasn1/oer_decode.c index 5187e8c..e09023f 100644 --- a/src/libasn1/oer_decode.c +++ b/src/libasn1/oer_decode.c @@ -62,19 +62,19 @@ uint oer_get_length(OER_Stream *oer, uint *value) { if (len & 0x80) { len &= 0x7f; - size += len; while (len--) { val <<= 8; val |= *oer->ptr++; + size++; } } else val = len & 0x7f; - + if (value) *value = val; oer->consumed += (size*8); - return val; + return size; } uint64_t oer_get_value(OER_Stream *oer, uint size) diff --git a/src/libasn1/oer_encode.c b/src/libasn1/oer_encode.c index ff039e7..d0d8fcb 100644 --- a/src/libasn1/oer_encode.c +++ b/src/libasn1/oer_encode.c @@ -57,7 +57,7 @@ uint oer_put_length(OER_Stream *oer, uint value) if (!oer || !oer->ptr) return 0; - int size = 1; + uint size = 1; if (value > 0x7f) { *oer->ptr++ = 0x82; *oer->ptr++ = value >> 8; diff --git a/src/libasn1/oer_get_ext.c b/src/libasn1/oer_get_ext.c index 019737b..f91beb8 100644 --- a/src/libasn1/oer_get_ext.c +++ b/src/libasn1/oer_get_ext.c @@ -78,7 +78,9 @@ uint oer_get_extension(OER_Stream *oer, OER_Extension *ext, uint noptions, uint if (ellipses) { ext->ellipses = (ext->value >> noptions) & 1; - ext->length = oer_get_length(oer, NULL); + uint length; + oer_get_length(oer, &length); + ext->length = length; if (_asn1_debug_on_) printf("\tEXT_LEN = %d\n", ext->length); @@ -100,8 +102,9 @@ uint oer_get_ext_length(OER_Stream *oer, OER_Extension *ext) if (!ext->ellipses) return 0; - uint len; - ext->length = oer_get_length(oer, &len); + uint length; + oer_get_length(oer, &length); + ext->length = length; return ext->length; } diff --git a/src/libasn1/test_asn1_oer b/src/libasn1/test_asn1_oer index db631faaabe81a8445898d4158e91ad9c4a5081d..222a2438472e2ead98a86fc29c1ba17ec5d57685 100755 GIT binary patch delta 14654 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 delta 13653 zcmeHOdw5jUwLj;~oXMQYYbG;!%p@d%Jme9=DlD zNE)JvnC|=@MQ9O&1GqpWdA@1>ylzYjY z?R|yVkxr0>egfO7yzAN*llYrI7oTa3A6R_-jj3B7emGj2@Be}6K)C&DwTvf_O2V3v@ z)H5T5DiobKa7HC2`^W$g)EW`OZET6oOn)|Hp!lo^cXiia(1?;eL%+O#z!x+ zQSmLk)o5&4{6r-yf}Mzeg+10O!jp`lwZ8IoAkezuDsD5c<5tp+n}r?h)X98Lo+PpS zyAs&dPRo>+FSG9_W-7kRYx$ZI z&iZPLt{g48N|OLNts3-^mddV&%dfEU$?@GZUdm^uX4P4#QmZSu0+VNJ?T5>+n!vS2 z?kk9^E4j*E=^p3*B59T!9r6ZjNarh#7PS))YgT>gtLn}k?wk-&^GC8NQn*G7a>X9PHXQA%#k`QJH4MIt!t@FM1vFP(iXX|rS>gv zef|QY;;}CS0WrE$0(~F0v*z>|e{<>s^1#YIym><1==bYN&R|Y>#t; zX;~VD)~DVoh>}H(MAWD&IaXJ6Ts}f2!fr0!rMI@|qF!>Mwx|_-{`FMN*^t_zw#e7j zRlOu>kg_zXZgiWsuH+(G`Yw9;sQ(Vsh`C8TN26}5J?#DMf{SkyU{ZS&wR(>p3E(2- zIdAO=baEAqFM3l52s8qy>@};7NtLs?P-n-`g0*YT%A(GOaaNR`Is}{CF@FDbU`jv~ z&8Zz{!vH_d=#M+=~>S#?~h45QxoFgA<>nvT)DoM4V_ zIj*j71p-&AzItQ>^K3@9H1&hlK;YNxy;P^asoQq>-g~bE0_eXiLw}_uZFQqz<|3b* zIABgpj^%U0114|u2^c-)t$m05VD(?fCzf8F?d_M9))fy|skR>f6Km)(R9?W|@3EwR zWKuOf^X16I>q91vs?R^zMUsZxH?sDFAtfVg|1xC4klOYVZ+*|5P~SVM+uyx4ZPwPv z&-}iOH70*`NQ3-p?`bl7yH70J*r(Y?Yiu`Ivws{2YyjT?x(Bow^cbl9lR)4h&}*P) zK{uWa1SELdZ$Xnm^ZpnJ6o5wmXCP1tdim2ppc=I8Pk}%)=ua>+EueD%gtMSKKqahD z{|1_Dl6+FH^DqF#&p=B-zXq)aeGYhU2AvM4X#u?mdKPru1sE_(QpulT0Q59y0cheS zvMcjm)i_F z2ebvW%U@vt^lMPbB1!kaKaxTBfEIuzU&9QtHT~{#Z}}(?fNx0Bun<~Cq*VN6;jfw< zM(L?DfdE%i5iS@0D)D!M$yu?A<74K@N|e{JysRYoB{muNOKb)1yVzFT=dt~`4`aW_ z{WQClmDFW5K$K5*iX!amm7(F5%CHbx)e`Wx6EEz?pR+019?NmCKl+@l1ltDo^Uv8f zuwi&3Lt5E^Y)^Uy*oAmmdv3O+JkO1htx+idM=QIIR`bDb{(^b>d(t<8wc=H7x}{Z} z(P}5ke{haX>5mbB?RlQ91ltDoiSuk5*f6}(*W1_uuo+-KY-6Xvjsp8ho9GPevM-q@ z$79(D)_j2t0J{@x#sxM7>~XNqUSKP8Jj2_-z6pF(;t7rUFwK)`IP?r*c>nf`D8FU2 z^Ni7EpnUd4b{bYkft`1eT?acK?9&&SCl@0CJKz!<0Cp$X3zygwu*bo6|B9^y+XlAc zE4D4S(3%CTGyrsL&9hGU-AOa6&CgMCd-#v!Hz>-BHuj1V6NME*Qly>8JLsKBl0Sj{ zpddAj7EqyhJAv&iNOk=Xsf$op5_v`Gx=aQe(Gc`idi?>2dk^F(YG6GhmCbe z&2Rex_#s@=3y~2QLR)9qw?Xd z2Ov~vW)i$1t5D$~?H&?Fa-mWiOcQi>=#wZ}uEmisI*J~@TH8U@#zanpuvY6tU5~Xc z0IAWgLuDQxxeCGtZ78*w9KJ)sy4#>lqel0~Za~o%Erx`tZU&)Qdk%N=G(Mgew5Q0z zbZrF49*vfA^9);02ybYesZA*#T#Gi8O3JKTL4GMIyHP<6aUTY;wNkYn5us5ivRJ3` zJM#~V51WDli?s%dP$xS*%#$>j6txkr@hV>2BTkX#hg=i!8FLo(^}Pj6NWAA9N|l~? z9&4O)I(kuPzN~K7_lf^C3a#<3I`AfI$aK^KG}@>_3vS6;ihVb%*vppAk+jrs;wAe- zm5U`UjSE)oBve{@n1yO-r6|_!;(|l-y-G!0xfEqDd$3Z{x`jnS=dv%Dxm?n^b0J3S zM2&iIAr22omXy61mX=}41#g`U-mYcZX>zm~@Di<8SR!~ynCZ=1S|ufd?DR2F1hh7y zjnA(2v-hX^yit~Dq@^JMY1w>KR_$G^JX(J)Xxd7uo5Ri7BxNlPA=h*T<|5Wp*F)_z zG+vhsI>>4Mph{6EQBhVMW2m*MfKZ0Zxm_6!_3u=g>?&GOapeml$xW}LvTHJCTmD@H z)leGey9RJEo{E&lQp^N7R`dsK^@zAZT`|t6w;{{>BKBewrp9Jp)F)u%eQ_i!jRjGu z)c&A@rpeS;?Td17+1<)cj_Ccpy@r7;x`DH+g@G;H0JVsj{oq1Lema!u@(xZ@2hTue z1>QX0FQE>nhfb2Bm(nxOvzTHb;<|>e=#rbdV0Oho7j+ouB4eNu4Qz>nUJV~8t(x)@ zkB}RDQuGS4KGc#H&5cSQbL&1bUu~El(ZT$PTg?}DFkgI=c`NmwU>WHY=Fb>||Jbme z+`)Qs+}>{bH1pA?b}*lMllk?md1Ra~3@dtE`SMChj!hw6X{^92rDu%x)AL4In)Ice zmJ7P%rUKM+Wz*=Ql86^==>57k)2q-d!EnGt6SNWaHNF0%IPz3k%anJs+`9{g^H_2j zZRg<6ufx!zH~tlLiijbKh#`syEs8aS0*xXfim3-Xba#ALiWeq|5y}?#T;eH4C|l!+ zSFILnBPd!-U~+M67A+)-zL30#f>Y)`*6*RdM)`!fU&t&FNz(%eEj|b!Y*ew^mxW5^ zJdISz+8o@?1Gvyt(*p>V7y*O?BY==#1P~GsKrmeM5N=?cmIIZ!kPDMEJ*Z4XcScZ| zreLu*q6!Vsh$9yBjULFpF-w|CHg3t1h9}G-^LjEghIl<0BA$T0huZLTND3idabZyA%`xQ1dJIK^ z^w=1YAgTQ|asZJasX1H_36h%21xk?K9U~GXbs$#>e5-@FAn>i`b3x!+E#LwrNS(%t z1W6qhvk3Dou&fSu(E=@?ta?KVFaQB%btD%Al-0XK8&D#ktd5SN2NzIQ$3&7_3n;5& ztq;SRfU-J1vJQfPvN}1u=|+O2-XFUeMFPv}RQGlW0?O(%J{|#Ob-MNfYzru>Hz!DH zDIc7GvRY<+9tQLT$r9pz7mYZSRU<)~iwYJi%NiFm^SZJr=$Zr3{S))sbtT)KRcIm+Ggt1M&ufXf`MupkAdp#=+!_qZIi?T4OG+M3{?BkMqi+T z>OY{U1FEY~0jNGRIf&|~pa7~J%MDb&%d3>(9z->1fa;zlef#LBrp*ywmVs(omQ56O zfa+PqQ`)b^yGR9uHxv=VXD%d!zgIFKO-J}JSO_9K8N8#M5L{t7j8+SiSnvBhzKWzA z=#<7u&IDADD|#LPQ5wfNDVLTja;d7)ILbA@9GT@ps}Seo@mk2n){V}NrlefHKa8wV;^bINat?u&cf4%4 z>rOZXG?3)|?}kI)P2rFqEZJ@S>=6JaKUcD4@rZ*1F=S}A>@W(H;#|qrp9|t#$(9qA zffAc!qH`sLyyK8=39e}fNAeuYlPLn>Hv%DBUh2YEwffRdN!Q7b<`fHmA%~@5I6frp zG|QqC_UqC#EsE?+uw25kzcx{m`md2dv z!Zy$BE27<4m?1wLn<_@POAu*Y_;>R|Cr?W|q@vB=clDuTsk#9;( z>&uMP^hwmE)HH0dTh3zdlo^{VDlpPe5{xvI1S1V4fzr@~SwdPD91!ik}mFmPHWd0t!Cg?$Dr|gb1W(sR`yIgF$%gnh!T&4SkQLdK zyqa&`tMGlDt~dF;82YA7$auur!0Hs@aR3p;zqPE+p<@F&fcP7zToc^JJ56M7eQ+D^ z%p~zq=35lwqaQHJRlKJZy{CJ5Pf$1gkvig*tGWxz6;bphQ?AMqN!V=3;U-%PxqlItLKS;kvz@ac8w!w6k+(=2Mj4?fD$Zh5$}JpJLK`EkkvdZsp8 zin&Av#r`U|Ht-*IaC^d5PO7lw6{E??6}Ad|vG4H4h4eh8#y5Sjl*r0C9M9`VLGv~UXha7uEvD!AyuknshaSB+GUO!nyK2?s$CAK&Pi%m zFBL^$Yt_gDs$&Wn@tdCbhpe3I>^E)7SCp}-{=&`MWd(`$XHQnj73`HKj2$kYRxQin>(hDb&wkR8I3!vSamE@BdwWgc(Z@-wvS|`Z#REp z)AO=|-}D`Q>JW#*r<4 zE>pI%?a#%^75@Ft^)ksj*%v=s2Gz_LNA&I8gD*aGio>s0u*Hp%>{7=}7L+I26F`ZqDNNop>o?xnKY<>e`)&N9Y4vuuGb2_R{Hi$ z*ROQ_t$CUxeW2?Bj>S8x6rl6m&fy9^9QECmso=1xY}as4$J4I2fk7GxrtrwFOizox z2$zeVq;|a+%eHOzaF3KM^qchJWXjgi8fRZ~cW3%ON)!4Vz4$)8xV*DaJfiDo>H3a8 z)2h(*o03Jv_w@Qzy1qS5C|=iRnNGy1`&Y#eY*??CwekjC*YW2L&*=IM9n!y7p?4^5 z$xff_Zn_TX^*d&mzlA;-KW}yR`BJYjOn>UFdTWy^M%D4>Mt1hcmt*A&cJ1X}ZaQ3{ zk#{`a8|xpkr{3&8y?3=jKWFt%+IQBZM0?nPgPFEm9hwB;gTv);w*O!+$G`kv61xU% zML#i?Aocq5-W;r;?-hq~w5k=N@DsNGP>!u+y^!|Butzxf`rpRpNzQlh5MYK{9 diff --git a/src/libasn1/test_asn1_oer.c b/src/libasn1/test_asn1_oer.c index 103b549..2180f6f 100644 --- a/src/libasn1/test_asn1_oer.c +++ b/src/libasn1/test_asn1_oer.c @@ -210,6 +210,28 @@ void bitstream_test(void) printf("\tFAILED\n"); } +void length_test(void) +{ + memset(buffer, 0, sizeof(buffer)); + + OER_Stream len_enc, len_dec; + oer_init_stream(&len_enc, buffer, sizeof(buffer)); + oer_init_stream(&len_dec, buffer, sizeof(buffer)); + + printf("Length test:\n"); + int n = oer_put_length(&len_enc, 749); + buffer_print(&len_enc, buffer); + + uint value = 0; + int x = oer_get_length(&len_dec, &value); + printf("\t%d -> %d\n", n, x); + + if (n == x && value == 749) + printf("\tPASSED\n"); + else + printf("\tFAILED\n"); +} + int main(int argc, char **argv) { asn1_set_debug(2); @@ -229,5 +251,8 @@ int main(int argc, char **argv) // bitstream test bitstream_test(); + // length test + length_test(); + return 0; }