From e1e646c6fc2d26d7cc1803f8205100d017a03e28 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 24 Jul 2026 11:50:15 +0200 Subject: [PATCH] - Fix to allow test fake sha1 on systems with possible sha1 support. - Fix to use sha256 for unbound-anchor unit test. - Fix unbound-anchor check for return value of X509_NAME_get_text_by_NID of the emailaddress. --- doc/Changelog | 5 + smallapp/unbound-anchor.c | 14 +- .../127.0.0.1/no_more_keys.p7s | Bin 1165 -> 1959 bytes .../10-unbound-anchor.tdir/127.0.0.1/root.p7s | Bin 1165 -> 1959 bytes testdata/10-unbound-anchor.tdir/key-setup.sh | 201 ++++++++++++++++++ testdata/10-unbound-anchor.tdir/petal.key | 61 ++++-- testdata/10-unbound-anchor.tdir/petal.pem | 35 +-- testdata/10-unbound-anchor.tdir/test_cert.key | 61 ++++-- testdata/10-unbound-anchor.tdir/test_cert.pem | 38 ++-- validator/val_secalgo.c | 4 +- 10 files changed, 342 insertions(+), 77 deletions(-) create mode 100644 testdata/10-unbound-anchor.tdir/key-setup.sh diff --git a/doc/Changelog b/doc/Changelog index e9156214f..2b288c053 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,11 @@ and block_aaaa, and uses local-data if present. - set code repository version to 1.26.0. - Update generated man pages. + - Fix to allow test fake sha1 on systems with possible sha1 + support. + - Fix to use sha256 for unbound-anchor unit test. + - Fix unbound-anchor check for return value of + X509_NAME_get_text_by_NID of the emailaddress. 23 July 2026: Wouter - Updated credits for Xuanchao Xie in 22 july changelog. diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index 93379d27f..8f84bae0e 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -1861,10 +1861,10 @@ get_valid_signers(PKCS7* p7, const char* p7signer) } #else if(verb >= 3 && X509_NAME_get_text_by_NID(nm, - NID_commonName, buf, (int)sizeof(buf))) + NID_commonName, buf, (int)sizeof(buf)) > 0) printf("commonName: %s\n", buf); if(verb >= 3 && X509_NAME_get_text_by_NID(nm, - NID_pkcs9_emailAddress, buf, (int)sizeof(buf))) + NID_pkcs9_emailAddress, buf, (int)sizeof(buf)) > 0) printf("emailAddress: %s\n", buf); #endif } @@ -1890,18 +1890,18 @@ get_valid_signers(PKCS7* p7, const char* p7signer) } else { #if !defined(HAVE_X509_NAME_GET_TEXT_BY_NID) || defined(DEPRECATED_X509_NAME_GET_TEXT_BY_NID) if(!has_valid_emailaddr(nm, p7signer)) { - if(verb) printf("removed cert with wrong name\n"); + if(verb) printf("removed cert with wrong emailaddress\n"); continue; /* wrong name, skip it */ } #else - if(!X509_NAME_get_text_by_NID(nm, + if(X509_NAME_get_text_by_NID(nm, NID_pkcs9_emailAddress, - buf, (int)sizeof(buf))) { - if(verb) printf("removed cert with no name\n"); + buf, (int)sizeof(buf)) <= 0) { + if(verb) printf("removed cert with no emailaddress\n"); continue; /* no name, no use */ } if(strcmp(buf, p7signer) != 0) { - if(verb) printf("removed cert with wrong name\n"); + if(verb) printf("removed cert with wrong emailaddress\n"); continue; /* wrong name, skip it */ } #endif diff --git a/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.p7s b/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.p7s index c76b5b6e4754d5bce27f78f85286159ba3e0df64..c7c33d3db24ac13ec816884fb868f72ba4510f7a 100644 GIT binary patch literal 1959 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 F000?Vi{=0T diff --git a/testdata/10-unbound-anchor.tdir/127.0.0.1/root.p7s b/testdata/10-unbound-anchor.tdir/127.0.0.1/root.p7s index afbdb1b913884a91350aea629c445257e1f84830..b0dc637a39cf727b6b603338013de3ab33e8fab3 100644 GIT binary patch literal 1959 zcma)+do}i_M{h!*sNMATBUZJ+GWq#J*U6!{XXvZ-h0mHd;msL5Xsj0 zzWL)+hy=?qk`!R1y)Xo!G(aViWAc5Wcsv3_1RS7DH$rj@kpT?Z4>0(R91lYo%EpZ~47b71VPuOBPa-a4TRals-^+F7tZSf`}e(gZStoj2YwTVPhO0JaK>EeOz7o z`K(lCM6Bh+_d^?KczvpvAmwrAl#pujx2kfMo4~ym(EK~Lqxr91q9qv{S07OpaKh5I zD+`M0#+QWetg5Q;#({NS_BpUq(bi3b-{k-MnnoH;iocC6TDup=S*m}jH2=9-$<{7uyZ!^=??>GIlj{thqPwzows z+cw!$_4h{u+EvfLJxx8BeMWev%nAz=uG8w5i%fQAK9c#WoQV3 zhvD3raB29~z$L-0zR}A&M6eqbtypX8-R^l_ z+eL97F}-(S)fm!_AdaRf$XF>vCIS z<<*?12xZoT&94hPWyzh6$1iMKoph$hAa&&DggjB3(j>;FGdPc4JA7xalQGW^XO?Ty z6X9c+gC~#5?gqWxTYq`5%kMYbc=L=d89*y!bf)2-hW-O-Os?a19(&*Fad=lLUEjQsh> zvI2z{;v>dR7VF>Jv}W|?GA&>JrQ@cP$0|C!9*7=PG*!B}{YI0%3as+_eKTbv^~T7P z%0hV6WVXoad~+KS?V&tO*<&~KL^0VLdZGeKCB*A^WkkMBhUm#*>vVSPu8a&$%F)Hz z%gD2Jlsh9@KH~)o#p~(wN~t7xpI6lTKK5i8Kh4iprJ`XG^O8UY_U~8b*Y*Z$Az?AE2q zJ+5gf|8Q6DO=7RN>kDZ!v0i$%-t&w{jWQ>}`uffdo^g@P+C}zB%+DF_6HEu=#wGX4 z`-)GpPabxqc`enxR%N0vtg9KzzTlSa=d!u{``89Ghs9FGF!qGl%~tmu;QX8~SnmM(a*Qs$W_sg)(4eCXsnpkL-1w9osy(9%8{aaYQ|QP;q9sOiP4{_^V1WCiL|GvqViVPg(uVHRdBNG(asF%&Tn zf-B)<6oZHw$cghB8XFiInj0FL8kv|ziSrs885$UvK)FPl(|8}*1&pi=%#CLm3>r@| zH6CQx@gXB|Myu6JGq2(jr4w=7Pj{<*;4J#DJL$~ke-aGymaOF~cgxa#1cNoN3B-3GuIXrmGeUbA6al$kBNA!Kam{*2$cC9b{A2 zAQozOXSJX^&oVu(U=QC))9(K_&dt34o%^aLUupDJzHRx}n0Htx7#`Ze@uFC#m%E@k zZkg19fO8u!b3B~7yG2(~QG{=gq<-Evn`p^3Uhc8?y|-#*ad`0=y?Fh+%j<|BClfOx z1LIBTF|{E37Z~EqK#$I1u37U;;Jm@r(uGBa@~gLLeh}xr9ih@* z?LfLqq3WHJki-AC!LOjO1a@IcI)cx~^yS#pBcLGfMX!%oW_lY}MGvHFJvN z9>@KQJl;wEPnptZa!tedv|Mlf^>0WtfgGz)Ve#0Dt zEKp8KX!Br9WoBX2Lgt7ebC?Xc*f=1$j+xzn56)&{Vq$0j#wbjViHXs{fE|(z*-^zc zkRu+L&{-M}$l88oEc#`);JK<3gW=b6#vMM#yRSYxt6UIdZ1^YNc74muJ(5-F(Q3C8 zr^UA0KPbAQY#AT&d%IfYH}l+I?t&h-?w|8uI#}>&$|9Gup}yC&e=ghf*ve4Z(){nu zPYHM-`o zah8%v(#*Mn7J7UsZ1t~f=f1ueGke;a+Xm*w3l5td;kYXH=Rk/dev/stderr + exit 1 +} + +usage() { + cat < used directory to store keys and certificates (default: $DESTDIR) +-h show help notice +-r recreate certificates +EOF +} + +OPTIND=1 +while getopts 'd:hr' arg; do + case "$arg" in + d) DESTDIR="$OPTARG" ;; + h) usage; exit 1 ;; + r) RECREATE=1 ;; + ?) fatal "'$arg' unknown option" ;; + esac +done +shift $((OPTIND - 1)) + +if ! openssl version /dev/null 2>&1; then + echo "$0 requires openssl to be installed for keys/certificates generation." >&2 + exit 1 +fi + +echo "setup in directory $DESTDIR" +cd "$DESTDIR" + +trap cleanup INT + +# === +# Generate server certificate +# === + +# generate private key; do no recreate it if they already exist. +if [ ! -f "$SVR_BASE.key" ]; then + openssl genrsa -out "$SVR_BASE.key" "$BITS" +fi + +cat >server.cnf <client.cnf <