Module Name: src Committed By: christos Date: Sun Jan 23 14:35:45 UTC 2022
Modified Files: src/crypto/dist/ipsec-tools/src/racoon: plainrsa-gen.c src/distrib/sets/lists/base: mi src/distrib/sets/lists/debug: mi src/distrib/sets/lists/man: mi src/usr.sbin: Makefile Added Files: src/usr.sbin/plainrsa-gen: Makefile Log Message: PR/56657: Juraj Hercek: Add plainrsa-gen utility mentioned in racoon.conf(5) and fix it for OpenSSL 1.1 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c cvs rdiff -u -r1.1288 -r1.1289 src/distrib/sets/lists/base/mi cvs rdiff -u -r1.371 -r1.372 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.1732 -r1.1733 src/distrib/sets/lists/man/mi cvs rdiff -u -r1.285 -r1.286 src/usr.sbin/Makefile cvs rdiff -u -r0 -r1.1 src/usr.sbin/plainrsa-gen/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c diff -u src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c:1.6 src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c:1.7 --- src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c:1.6 Fri Feb 11 05:07:19 2011 +++ src/crypto/dist/ipsec-tools/src/racoon/plainrsa-gen.c Sun Jan 23 09:35:45 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: plainrsa-gen.c,v 1.6 2011/02/11 10:07:19 tteras Exp $ */ +/* $NetBSD: plainrsa-gen.c,v 1.7 2022/01/23 14:35:45 christos Exp $ */ /* Id: plainrsa-gen.c,v 1.6 2005/04/21 09:08:40 monas Exp */ /* @@ -63,6 +63,8 @@ #include "package_version.h" +#define DEFAULT_PUBEXP RSA_F4 + void usage (char *argv0) { @@ -72,7 +74,7 @@ usage (char *argv0) fprintf(stderr, "Usage: %s [options]\n", argv0); fprintf(stderr, "\n"); fprintf(stderr, " -b bits Generate <bits> long RSA key (default=1024)\n"); - fprintf(stderr, " -e pubexp Public exponent to use (default=0x3)\n"); + fprintf(stderr, " -e pubexp Public exponent to use (default=%#x)\n", DEFAULT_PUBEXP); fprintf(stderr, " -f filename Filename to store the key to (default=stdout)\n"); fprintf(stderr, " -i filename Input source for format conversion\n"); fprintf(stderr, " -h Help\n"); @@ -91,11 +93,11 @@ mix_b64_pubkey(const RSA *key) long binlen, ret; vchar_t *res; - binlen = 1 + BN_num_bytes(key->e) + BN_num_bytes(key->n); + binlen = 1 + BN_num_bytes(RSA_get0_e(key)) + BN_num_bytes(RSA_get0_n(key)); binbuf = malloc(binlen); memset(binbuf, 0, binlen); - binbuf[0] = BN_bn2bin(key->e, (unsigned char *) &binbuf[1]); - ret = BN_bn2bin(key->n, (unsigned char *) (&binbuf[binbuf[0] + 1])); + binbuf[0] = BN_bn2bin(RSA_get0_e(key), (unsigned char *) &binbuf[1]); + ret = BN_bn2bin(RSA_get0_n(key), (unsigned char *) (&binbuf[binbuf[0] + 1])); if (1 + binbuf[0] + ret != binlen) { plog(LLV_ERROR, LOCATION, NULL, "Pubkey generation failed. This is really strange...\n"); @@ -131,16 +133,16 @@ print_rsa_key(FILE *fp, const RSA *key) fprintf(fp, "# : PUB 0s%s\n", pubkey64->v); fprintf(fp, ": RSA\t{\n"); - fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(key->n)); + fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(RSA_get0_n(key))); fprintf(fp, "\t# pubkey=0s%s\n", pubkey64->v); - fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(key->n))); - fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(key->e))); - fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(key->d))); - fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(key->p))); - fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(key->q))); - fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(key->dmp1))); - fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(key->dmq1))); - fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(key->iqmp))); + fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_n(key)))); + fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_e(key)))); + fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_d(key)))); + fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_p(key)))); + fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_q(key)))); + fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_dmp1(key)))); + fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_dmq1(key)))); + fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(RSA_get0_iqmp(key)))); fprintf(fp, " }\n"); vfree(pubkey64); @@ -204,13 +206,17 @@ gen_rsa_key(FILE *fp, size_t bits, unsig { int ret; RSA *key; + BIGNUM *e; + + key = RSA_new(); + e = BN_new(); + BN_set_word(e, exp); - key = RSA_generate_key(bits, exp, NULL, NULL); - if (!key) { + if (1 != RSA_generate_key_ex(key, bits, e, NULL)) { fprintf(stderr, "RSA_generate_key(): %s\n", eay_strerror()); return -1; } - + ret = print_rsa_key(fp, key); RSA_free(key); @@ -222,7 +228,7 @@ main (int argc, char *argv[]) { FILE *fp = stdout, *fpin = NULL; size_t bits = 1024; - unsigned int pubexp = 0x3; + unsigned int pubexp = DEFAULT_PUBEXP; struct stat st; extern char *optarg; extern int optind; @@ -232,10 +238,7 @@ main (int argc, char *argv[]) while ((c = getopt(argc, argv, "e:b:f:i:h")) != -1) switch (c) { case 'e': - if (strncmp(optarg, "0x", 2) == 0) - sscanf(optarg, "0x%x", &pubexp); - else - pubexp = atoi(optarg); + pubexp = (unsigned int)strtoul(optarg, NULL, 0); break; case 'b': bits = atoi(optarg); Index: src/distrib/sets/lists/base/mi diff -u src/distrib/sets/lists/base/mi:1.1288 src/distrib/sets/lists/base/mi:1.1289 --- src/distrib/sets/lists/base/mi:1.1288 Sat Jan 22 02:53:05 2022 +++ src/distrib/sets/lists/base/mi Sun Jan 23 09:35:44 2022 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1288 2022/01/22 07:53:05 pho Exp $ +# $NetBSD: mi,v 1.1289 2022/01/23 14:35:44 christos Exp $ # # Note: Don't delete entries from here - mark them as "obsolete" instead, # unless otherwise stated below. @@ -1800,6 +1800,7 @@ ./usr/sbin/pkg_delete base-pkgutil-bin ./usr/sbin/pkg_info base-pkgutil-bin ./usr/sbin/pkg_view base-obsolete obsolete +./usr/sbin/plainrsa-gen base-netutil-bin ./usr/sbin/portmap base-obsolete obsolete ./usr/sbin/postalias base-postfix-bin postfix ./usr/sbin/postcat base-postfix-bin postfix Index: src/distrib/sets/lists/debug/mi diff -u src/distrib/sets/lists/debug/mi:1.371 src/distrib/sets/lists/debug/mi:1.372 --- src/distrib/sets/lists/debug/mi:1.371 Fri Dec 31 11:14:44 2021 +++ src/distrib/sets/lists/debug/mi Sun Jan 23 09:35:44 2022 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.371 2021/12/31 16:14:44 christos Exp $ +# $NetBSD: mi,v 1.372 2022/01/23 14:35:44 christos Exp $ ./etc/mtree/set.debug comp-sys-root ./usr/lib comp-sys-usr compatdir ./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile @@ -1231,6 +1231,7 @@ ./usr/libdata/debug/usr/sbin/pkg_create.debug comp-pkgutil-debug debug ./usr/libdata/debug/usr/sbin/pkg_delete.debug comp-pkgutil-debug debug ./usr/libdata/debug/usr/sbin/pkg_info.debug comp-pkgutil-debug debug +./usr/libdata/debug/usr/sbin/plainrsa-gen.debug comp-netutil-debug debug ./usr/libdata/debug/usr/sbin/postalias.debug comp-postfix-debug postfix,debug ./usr/libdata/debug/usr/sbin/postcat.debug comp-postfix-debug postfix,debug ./usr/libdata/debug/usr/sbin/postconf.debug comp-postfix-debug postfix,debug Index: src/distrib/sets/lists/man/mi diff -u src/distrib/sets/lists/man/mi:1.1732 src/distrib/sets/lists/man/mi:1.1733 --- src/distrib/sets/lists/man/mi:1.1732 Mon Jan 17 11:31:23 2022 +++ src/distrib/sets/lists/man/mi Sun Jan 23 09:35:44 2022 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1732 2022/01/17 16:31:23 thorpej Exp $ +# $NetBSD: mi,v 1.1733 2022/01/23 14:35:44 christos Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -2989,6 +2989,7 @@ ./usr/share/man/cat8/ping.0 man-netutil-catman .cat ./usr/share/man/cat8/ping6.0 man-netutil-catman use_inet6,.cat ./usr/share/man/cat8/pipe.0 man-postfix-catman postfix,.cat +./usr/share/man/cat8/plainrsa-gen.0 man-netutil-catman .cat ./usr/share/man/cat8/playstation2/MAKEDEV.0 man-obsolete obsolete ./usr/share/man/cat8/playstation2/makedev.0 man-obsolete obsolete ./usr/share/man/cat8/pmax/MAKEDEV.0 man-obsolete obsolete @@ -6003,6 +6004,7 @@ ./usr/share/man/html8/ping.html man-netutil-htmlman html ./usr/share/man/html8/ping6.html man-netutil-htmlman use_inet6,html ./usr/share/man/html8/pipe.html man-postfix-htmlman postfix,html +./usr/share/man/html8/plainrsa-gen.html man-netutil-htmlman html ./usr/share/man/html8/pmax/boot.html man-sys-htmlman html ./usr/share/man/html8/postinstall.html man-sys-htmlman html ./usr/share/man/html8/postscreen.html man-postfix-htmlman postfix,html @@ -9263,6 +9265,7 @@ ./usr/share/man/man8/ping.8 man-netutil-man .man ./usr/share/man/man8/ping6.8 man-netutil-man use_inet6,.man ./usr/share/man/man8/pipe.8 man-postfix-man postfix,.man +./usr/share/man/man8/plainrsa-gen.8 man-netutil-man .man ./usr/share/man/man8/playstation2/MAKEDEV.8 man-obsolete obsolete ./usr/share/man/man8/playstation2/makedev.8 man-obsolete obsolete ./usr/share/man/man8/pmax/MAKEDEV.8 man-obsolete obsolete Index: src/usr.sbin/Makefile diff -u src/usr.sbin/Makefile:1.285 src/usr.sbin/Makefile:1.286 --- src/usr.sbin/Makefile:1.285 Thu Aug 20 17:30:46 2020 +++ src/usr.sbin/Makefile Sun Jan 23 09:35:44 2022 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.285 2020/08/20 21:30:46 riastradh Exp $ +# $NetBSD: Makefile,v 1.286 2022/01/23 14:35:44 christos Exp $ # from: @(#)Makefile 5.20 (Berkeley) 6/12/93 .include <bsd.own.mk> @@ -53,7 +53,7 @@ SUBDIR+=faithd ifmcstat ip6addrctl ndp r SUBDIR+=mld6query route6d rtadvd traceroute6 .endif -SUBDIR+= racoon racoonctl +SUBDIR+= plainrsa-gen racoon racoonctl SUBDIR+= nvmmctl Added files: Index: src/usr.sbin/plainrsa-gen/Makefile diff -u /dev/null src/usr.sbin/plainrsa-gen/Makefile:1.1 --- /dev/null Sun Jan 23 09:35:45 2022 +++ src/usr.sbin/plainrsa-gen/Makefile Sun Jan 23 09:35:44 2022 @@ -0,0 +1,35 @@ +# $NetBSD: Makefile,v 1.1 2022/01/23 14:35:44 christos Exp $ + +WARNS?= 0 # XXX third-party program, many issues +NOCLANGERROR= # defined + +.include <bsd.own.mk> + +PROG= plainrsa-gen +SRCS= plainrsa-gen.c plog.c crypto_openssl.c logger.c vmbuf.c misc.c \ + rsalist.c sockmisc.c genlist.c prsa_tok.c prsa_par.c +MAN= plainrsa-gen.8 + +DIST= ${NETBSDSRCDIR}/crypto/dist/ipsec-tools +CPPFLAGS+= -I${DIST}/src/racoon -I${DIST}/src/racoon/missing +CPPFLAGS+= -I${DIST}/src/libipsec +CPPFLAGS+= -I${NETBSDSRCDIR}/lib/libipsec +CPPFLAGS+= -DHAVE_CONFIG_H -DNOUSE_PRIVSEP +.if ${HAVE_OPENSSL} < 11 +CPPFLAGS+= -DHAVE_OPENSSL_RC5_H +CPPFLAGS+= -DOPENSSL_API_COMPAT=0x10100000L +.endif + +.PATH: ${DIST}/src/racoon + +LDADD+= -lcrypto -lipsec +DPADD+= ${LIBCRYPTO} ${LIBIPSEC} + +LPREFIX=prsa +YPREFIX=prsa +YFLAGS=-d + +prsa_tok.c: prsa_par.c + +.include <bsd.prog.mk> +