diff options
-rw-r--r-- | src/usr.bin/openssl/dh.c | 54 | ||||
-rw-r--r-- | src/usr.bin/openssl/dhparam.c | 60 | ||||
-rw-r--r-- | src/usr.bin/openssl/dsaparam.c | 65 | ||||
-rw-r--r-- | src/usr.bin/openssl/ecparam.c | 152 | ||||
-rw-r--r-- | src/usr.bin/openssl/openssl.1 | 25 | ||||
-rw-r--r-- | src/usr.bin/openssl/x509.c | 92 |
6 files changed, 12 insertions, 436 deletions
diff --git a/src/usr.bin/openssl/dh.c b/src/usr.bin/openssl/dh.c index a4c02235f2..d7c7d2db91 100644 --- a/src/usr.bin/openssl/dh.c +++ b/src/usr.bin/openssl/dh.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dh.c,v 1.15 2023/03/06 14:32:05 tb Exp $ */ | 1 | /* $OpenBSD: dh.c,v 1.16 2025/01/19 10:24:17 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -75,7 +75,6 @@ | |||
75 | #include <openssl/x509.h> | 75 | #include <openssl/x509.h> |
76 | 76 | ||
77 | static struct { | 77 | static struct { |
78 | int C; | ||
79 | int check; | 78 | int check; |
80 | char *infile; | 79 | char *infile; |
81 | int informat; | 80 | int informat; |
@@ -87,12 +86,6 @@ static struct { | |||
87 | 86 | ||
88 | static const struct option dh_options[] = { | 87 | static const struct option dh_options[] = { |
89 | { | 88 | { |
90 | .name = "C", | ||
91 | .desc = "Convert DH parameters into C code", | ||
92 | .type = OPTION_FLAG, | ||
93 | .opt.flag = &cfg.C, | ||
94 | }, | ||
95 | { | ||
96 | .name = "check", | 89 | .name = "check", |
97 | .desc = "Check the DH parameters", | 90 | .desc = "Check the DH parameters", |
98 | .type = OPTION_FLAG, | 91 | .type = OPTION_FLAG, |
@@ -145,7 +138,7 @@ static void | |||
145 | dh_usage(void) | 138 | dh_usage(void) |
146 | { | 139 | { |
147 | fprintf(stderr, | 140 | fprintf(stderr, |
148 | "usage: dh [-C] [-check] [-in file] [-inform format]\n" | 141 | "usage: dh [-check] [-in file] [-inform format]\n" |
149 | " [-noout] [-out file] [-outform format] [-text]\n\n"); | 142 | " [-noout] [-out file] [-outform format] [-text]\n\n"); |
150 | options_usage(dh_options); | 143 | options_usage(dh_options); |
151 | } | 144 | } |
@@ -228,49 +221,6 @@ dh_main(int argc, char **argv) | |||
228 | if (i == 0) | 221 | if (i == 0) |
229 | printf("DH parameters appear to be ok.\n"); | 222 | printf("DH parameters appear to be ok.\n"); |
230 | } | 223 | } |
231 | if (cfg.C) { | ||
232 | unsigned char *data; | ||
233 | int len, l, bits; | ||
234 | |||
235 | len = BN_num_bytes(DH_get0_p(dh)); | ||
236 | bits = BN_num_bits(DH_get0_p(dh)); | ||
237 | data = malloc(len); | ||
238 | if (data == NULL) { | ||
239 | perror("malloc"); | ||
240 | goto end; | ||
241 | } | ||
242 | l = BN_bn2bin(DH_get0_p(dh), data); | ||
243 | printf("static unsigned char dh%d_p[] = {", bits); | ||
244 | for (i = 0; i < l; i++) { | ||
245 | if ((i % 12) == 0) | ||
246 | printf("\n\t"); | ||
247 | printf("0x%02X, ", data[i]); | ||
248 | } | ||
249 | printf("\n\t};\n"); | ||
250 | |||
251 | l = BN_bn2bin(DH_get0_g(dh), data); | ||
252 | printf("static unsigned char dh%d_g[] = {", bits); | ||
253 | for (i = 0; i < l; i++) { | ||
254 | if ((i % 12) == 0) | ||
255 | printf("\n\t"); | ||
256 | printf("0x%02X, ", data[i]); | ||
257 | } | ||
258 | printf("\n\t};\n\n"); | ||
259 | |||
260 | printf("DH *get_dh%d()\n\t{\n", bits); | ||
261 | printf("\tDH *dh;\n"); | ||
262 | printf("\tBIGNUM *p = NULL, *g = NULL;\n\n"); | ||
263 | printf("\tif ((dh = DH_new()) == NULL) return(NULL);\n"); | ||
264 | printf("\tp = BN_bin2bn(dh%d_p, sizeof(dh%d_p), NULL);\n", | ||
265 | bits, bits); | ||
266 | printf("\tg = BN_bin2bn(dh%d_g, sizeof(dh%d_g), NULL);\n", | ||
267 | bits, bits); | ||
268 | printf("\tif (p == NULL || g == NULL)\n"); | ||
269 | printf("\t\t{ BN_free(p); BN_free(q); DH_free(dh); return(NULL); }\n"); | ||
270 | printf("\tDH_set0_pqg(dh, p, NULL, g);\n"); | ||
271 | printf("\treturn(dh);\n\t}\n"); | ||
272 | free(data); | ||
273 | } | ||
274 | if (!cfg.noout) { | 224 | if (!cfg.noout) { |
275 | if (cfg.outformat == FORMAT_ASN1) | 225 | if (cfg.outformat == FORMAT_ASN1) |
276 | i = i2d_DHparams_bio(out, dh); | 226 | i = i2d_DHparams_bio(out, dh); |
diff --git a/src/usr.bin/openssl/dhparam.c b/src/usr.bin/openssl/dhparam.c index 00bf697264..752f9ee01a 100644 --- a/src/usr.bin/openssl/dhparam.c +++ b/src/usr.bin/openssl/dhparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dhparam.c,v 1.18 2023/07/23 11:39:29 tb Exp $ */ | 1 | /* $OpenBSD: dhparam.c,v 1.19 2025/01/19 10:24:17 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -132,7 +132,6 @@ | |||
132 | #define DEFBITS 2048 | 132 | #define DEFBITS 2048 |
133 | 133 | ||
134 | static struct { | 134 | static struct { |
135 | int C; | ||
136 | int check; | 135 | int check; |
137 | int dsaparam; | 136 | int dsaparam; |
138 | int g; | 137 | int g; |
@@ -161,12 +160,6 @@ static const struct option dhparam_options[] = { | |||
161 | .value = 5, | 160 | .value = 5, |
162 | }, | 161 | }, |
163 | { | 162 | { |
164 | .name = "C", | ||
165 | .desc = "Convert DH parameters into C code", | ||
166 | .type = OPTION_FLAG, | ||
167 | .opt.flag = &cfg.C, | ||
168 | }, | ||
169 | { | ||
170 | .name = "check", | 163 | .name = "check", |
171 | .desc = "Check the DH parameters", | 164 | .desc = "Check the DH parameters", |
172 | .type = OPTION_FLAG, | 165 | .type = OPTION_FLAG, |
@@ -225,7 +218,7 @@ static void | |||
225 | dhparam_usage(void) | 218 | dhparam_usage(void) |
226 | { | 219 | { |
227 | fprintf(stderr, | 220 | fprintf(stderr, |
228 | "usage: dhparam [-2 | -5] [-C] [-check] [-dsaparam]\n" | 221 | "usage: dhparam [-2 | -5] [-check] [-dsaparam]\n" |
229 | " [-in file] [-inform DER | PEM] [-noout] [-out file]\n" | 222 | " [-in file] [-inform DER | PEM] [-noout] [-out file]\n" |
230 | " [-outform DER | PEM] [-text] [numbits]\n\n"); | 223 | " [-outform DER | PEM] [-text] [numbits]\n\n"); |
231 | options_usage(dhparam_options); | 224 | options_usage(dhparam_options); |
@@ -405,55 +398,6 @@ dhparam_main(int argc, char **argv) | |||
405 | if (i == 0) | 398 | if (i == 0) |
406 | printf("DH parameters appear to be ok.\n"); | 399 | printf("DH parameters appear to be ok.\n"); |
407 | } | 400 | } |
408 | if (cfg.C) { | ||
409 | unsigned char *data; | ||
410 | int len, l, bits; | ||
411 | |||
412 | len = BN_num_bytes(DH_get0_p(dh)); | ||
413 | bits = BN_num_bits(DH_get0_p(dh)); | ||
414 | data = malloc(len); | ||
415 | if (data == NULL) { | ||
416 | perror("malloc"); | ||
417 | goto end; | ||
418 | } | ||
419 | printf("#ifndef HEADER_DH_H\n" | ||
420 | "#include <openssl/dh.h>\n" | ||
421 | "#endif\n"); | ||
422 | printf("DH *get_dh%d()\n\t{\n", bits); | ||
423 | |||
424 | l = BN_bn2bin(DH_get0_p(dh), data); | ||
425 | printf("\tstatic unsigned char dh%d_p[] = {", bits); | ||
426 | for (i = 0; i < l; i++) { | ||
427 | if ((i % 12) == 0) | ||
428 | printf("\n\t\t"); | ||
429 | printf("0x%02X, ", data[i]); | ||
430 | } | ||
431 | printf("\n\t\t};\n"); | ||
432 | |||
433 | l = BN_bn2bin(DH_get0_g(dh), data); | ||
434 | printf("\tstatic unsigned char dh%d_g[] = {", bits); | ||
435 | for (i = 0; i < l; i++) { | ||
436 | if ((i % 12) == 0) | ||
437 | printf("\n\t\t"); | ||
438 | printf("0x%02X, ", data[i]); | ||
439 | } | ||
440 | printf("\n\t\t};\n"); | ||
441 | |||
442 | printf("\tDH *dh;\n"); | ||
443 | printf("\tBIGNUM *p = NULL, *g = NULL;\n\n"); | ||
444 | printf("\tif ((dh = DH_new()) == NULL) return(NULL);\n"); | ||
445 | printf("\tp = BN_bin2bn(dh%d_p, sizeof(dh%d_p), NULL);\n", | ||
446 | bits, bits); | ||
447 | printf("\tg = BN_bin2bn(dh%d_g, sizeof(dh%d_g), NULL);\n", | ||
448 | bits, bits); | ||
449 | printf("\tif (p == NULL || g == NULL)\n"); | ||
450 | printf("\t\t{ BN_free(p); BN_free(g); DH_free(dh); return(NULL); }\n"); | ||
451 | printf("\tDH_set0_pqg(dh, p, NULL, g);\n"); | ||
452 | if (DH_get_length(dh) > 0) | ||
453 | printf("\tDH_set_length(dh, %ld);\n", DH_get_length(dh)); | ||
454 | printf("\treturn(dh);\n\t}\n"); | ||
455 | free(data); | ||
456 | } | ||
457 | if (!cfg.noout) { | 401 | if (!cfg.noout) { |
458 | if (cfg.outformat == FORMAT_ASN1) | 402 | if (cfg.outformat == FORMAT_ASN1) |
459 | i = i2d_DHparams_bio(out, dh); | 403 | i = i2d_DHparams_bio(out, dh); |
diff --git a/src/usr.bin/openssl/dsaparam.c b/src/usr.bin/openssl/dsaparam.c index bc9ccd14d8..962f261210 100644 --- a/src/usr.bin/openssl/dsaparam.c +++ b/src/usr.bin/openssl/dsaparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsaparam.c,v 1.15 2023/03/06 14:32:06 tb Exp $ */ | 1 | /* $OpenBSD: dsaparam.c,v 1.16 2025/01/19 10:24:17 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -80,7 +80,6 @@ | |||
80 | #include <openssl/x509.h> | 80 | #include <openssl/x509.h> |
81 | 81 | ||
82 | static struct { | 82 | static struct { |
83 | int C; | ||
84 | int genkey; | 83 | int genkey; |
85 | char *infile; | 84 | char *infile; |
86 | int informat; | 85 | int informat; |
@@ -92,12 +91,6 @@ static struct { | |||
92 | 91 | ||
93 | static const struct option dsaparam_options[] = { | 92 | static const struct option dsaparam_options[] = { |
94 | { | 93 | { |
95 | .name = "C", | ||
96 | .desc = "Convert DSA parameters into C code", | ||
97 | .type = OPTION_FLAG, | ||
98 | .opt.flag = &cfg.C, | ||
99 | }, | ||
100 | { | ||
101 | .name = "genkey", | 94 | .name = "genkey", |
102 | .desc = "Generate a DSA key", | 95 | .desc = "Generate a DSA key", |
103 | .type = OPTION_FLAG, | 96 | .type = OPTION_FLAG, |
@@ -150,7 +143,7 @@ static void | |||
150 | dsaparam_usage(void) | 143 | dsaparam_usage(void) |
151 | { | 144 | { |
152 | fprintf(stderr, | 145 | fprintf(stderr, |
153 | "usage: dsaparam [-C] [-genkey] [-in file]\n" | 146 | "usage: dsaparam [-genkey] [-in file]\n" |
154 | " [-inform format] [-noout] [-out file] [-outform format]\n" | 147 | " [-inform format] [-noout] [-out file] [-outform format]\n" |
155 | " [-text] [numbits]\n\n"); | 148 | " [-text] [numbits]\n\n"); |
156 | options_usage(dsaparam_options); | 149 | options_usage(dsaparam_options); |
@@ -253,60 +246,6 @@ dsaparam_main(int argc, char **argv) | |||
253 | if (cfg.text) { | 246 | if (cfg.text) { |
254 | DSAparams_print(out, dsa); | 247 | DSAparams_print(out, dsa); |
255 | } | 248 | } |
256 | if (cfg.C) { | ||
257 | unsigned char *data; | ||
258 | int l, len, bits_p; | ||
259 | |||
260 | len = BN_num_bytes(DSA_get0_p(dsa)); | ||
261 | bits_p = BN_num_bits(DSA_get0_p(dsa)); | ||
262 | data = malloc(len + 20); | ||
263 | if (data == NULL) { | ||
264 | perror("malloc"); | ||
265 | goto end; | ||
266 | } | ||
267 | l = BN_bn2bin(DSA_get0_p(dsa), data); | ||
268 | printf("static unsigned char dsa%d_p[] = {", bits_p); | ||
269 | for (i = 0; i < l; i++) { | ||
270 | if ((i % 12) == 0) | ||
271 | printf("\n\t"); | ||
272 | printf("0x%02X, ", data[i]); | ||
273 | } | ||
274 | printf("\n\t};\n"); | ||
275 | |||
276 | l = BN_bn2bin(DSA_get0_q(dsa), data); | ||
277 | printf("static unsigned char dsa%d_q[] = {", bits_p); | ||
278 | for (i = 0; i < l; i++) { | ||
279 | if ((i % 12) == 0) | ||
280 | printf("\n\t"); | ||
281 | printf("0x%02X, ", data[i]); | ||
282 | } | ||
283 | printf("\n\t};\n"); | ||
284 | |||
285 | l = BN_bn2bin(DSA_get0_g(dsa), data); | ||
286 | printf("static unsigned char dsa%d_g[] = {", bits_p); | ||
287 | for (i = 0; i < l; i++) { | ||
288 | if ((i % 12) == 0) | ||
289 | printf("\n\t"); | ||
290 | printf("0x%02X, ", data[i]); | ||
291 | } | ||
292 | free(data); | ||
293 | printf("\n\t};\n\n"); | ||
294 | |||
295 | printf("DSA *get_dsa%d()\n\t{\n", bits_p); | ||
296 | printf("\tBIGNUM *p = NULL, *q = NULL, *g = NULL;\n"); | ||
297 | printf("\tDSA *dsa;\n\n"); | ||
298 | printf("\tif ((dsa = DSA_new()) == NULL) return(NULL);\n"); | ||
299 | printf("\tp = BN_bin2bn(dsa%d_p, sizeof(dsa%d_p), NULL);\n", | ||
300 | bits_p, bits_p); | ||
301 | printf("\tq = BN_bin2bn(dsa%d_q, sizeof(dsa%d_q), NULL);\n", | ||
302 | bits_p, bits_p); | ||
303 | printf("\tg = BN_bin2bn(dsa%d_g, sizeof(dsa%d_g), NULL);\n", | ||
304 | bits_p, bits_p); | ||
305 | printf("\tif (p == NULL || q == NULL || g == NULL)\n"); | ||
306 | printf("\t\t{ BN_free(p); BN_free(q); BN_free(g); DSA_free(dsa); return(NULL); }\n"); | ||
307 | printf("\tDSA_set0_pqg(dsa, p, q, g);\n"); | ||
308 | printf("\treturn(dsa);\n\t}\n"); | ||
309 | } | ||
310 | if (!cfg.noout) { | 249 | if (!cfg.noout) { |
311 | if (cfg.outformat == FORMAT_ASN1) | 250 | if (cfg.outformat == FORMAT_ASN1) |
312 | i = i2d_DSAparams_bio(out, dsa); | 251 | i = i2d_DSAparams_bio(out, dsa); |
diff --git a/src/usr.bin/openssl/ecparam.c b/src/usr.bin/openssl/ecparam.c index 2d2755acfc..285f5d563e 100644 --- a/src/usr.bin/openssl/ecparam.c +++ b/src/usr.bin/openssl/ecparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ecparam.c,v 1.24 2025/01/19 07:41:52 tb Exp $ */ | 1 | /* $OpenBSD: ecparam.c,v 1.25 2025/01/19 10:24:17 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -87,11 +87,7 @@ | |||
87 | #include <openssl/pem.h> | 87 | #include <openssl/pem.h> |
88 | #include <openssl/x509.h> | 88 | #include <openssl/x509.h> |
89 | 89 | ||
90 | static int ecparam_print_var(BIO *, BIGNUM *, const char *, int, | ||
91 | unsigned char *); | ||
92 | |||
93 | static struct { | 90 | static struct { |
94 | int C; | ||
95 | int asn1_flag; | 91 | int asn1_flag; |
96 | int check; | 92 | int check; |
97 | char *curve_name; | 93 | char *curve_name; |
@@ -141,12 +137,6 @@ ecparam_opt_enctype(char *arg) | |||
141 | 137 | ||
142 | static const struct option ecparam_options[] = { | 138 | static const struct option ecparam_options[] = { |
143 | { | 139 | { |
144 | .name = "C", | ||
145 | .desc = "Convert the EC parameters into C code", | ||
146 | .type = OPTION_FLAG, | ||
147 | .opt.flag = &cfg.C, | ||
148 | }, | ||
149 | { | ||
150 | .name = "check", | 140 | .name = "check", |
151 | .desc = "Validate the elliptic curve parameters", | 141 | .desc = "Validate the elliptic curve parameters", |
152 | .type = OPTION_FLAG, | 142 | .type = OPTION_FLAG, |
@@ -241,7 +231,7 @@ static const struct option ecparam_options[] = { | |||
241 | static void | 231 | static void |
242 | ecparam_usage(void) | 232 | ecparam_usage(void) |
243 | { | 233 | { |
244 | fprintf(stderr, "usage: ecparam [-C] [-check] [-conv_form arg] " | 234 | fprintf(stderr, "usage: ecparam [-check] [-conv_form arg] " |
245 | " [-genkey]\n" | 235 | " [-genkey]\n" |
246 | " [-in file] [-inform DER | PEM] [-list_curves] [-name arg]\n" | 236 | " [-in file] [-inform DER | PEM] [-list_curves] [-name arg]\n" |
247 | " [-no_seed] [-noout] [-out file] [-outform DER | PEM]\n" | 237 | " [-no_seed] [-noout] [-out file] [-outform DER | PEM]\n" |
@@ -252,10 +242,7 @@ ecparam_usage(void) | |||
252 | int | 242 | int |
253 | ecparam_main(int argc, char **argv) | 243 | ecparam_main(int argc, char **argv) |
254 | { | 244 | { |
255 | BIGNUM *ec_p = NULL, *ec_a = NULL, *ec_b = NULL, *ec_gen = NULL; | ||
256 | BIGNUM *ec_order = NULL, *ec_cofactor = NULL; | ||
257 | EC_GROUP *group = NULL; | 245 | EC_GROUP *group = NULL; |
258 | unsigned char *buffer = NULL; | ||
259 | BIO *in = NULL, *out = NULL; | 246 | BIO *in = NULL, *out = NULL; |
260 | int i, ret = 1; | 247 | int i, ret = 1; |
261 | 248 | ||
@@ -403,109 +390,6 @@ ecparam_main(int argc, char **argv) | |||
403 | BIO_printf(bio_err, "ok\n"); | 390 | BIO_printf(bio_err, "ok\n"); |
404 | 391 | ||
405 | } | 392 | } |
406 | if (cfg.C) { | ||
407 | size_t buf_len = 0, tmp_len = 0; | ||
408 | const EC_POINT *point; | ||
409 | int len = 0; | ||
410 | |||
411 | if ((ec_p = BN_new()) == NULL || (ec_a = BN_new()) == NULL || | ||
412 | (ec_b = BN_new()) == NULL || (ec_gen = BN_new()) == NULL || | ||
413 | (ec_order = BN_new()) == NULL || | ||
414 | (ec_cofactor = BN_new()) == NULL) { | ||
415 | perror("malloc"); | ||
416 | goto end; | ||
417 | } | ||
418 | |||
419 | if (!EC_GROUP_get_curve(group, ec_p, ec_a, ec_b, NULL)) | ||
420 | goto end; | ||
421 | |||
422 | if ((point = EC_GROUP_get0_generator(group)) == NULL) | ||
423 | goto end; | ||
424 | if (!EC_POINT_point2bn(group, point, | ||
425 | EC_GROUP_get_point_conversion_form(group), ec_gen, | ||
426 | NULL)) | ||
427 | goto end; | ||
428 | if (!EC_GROUP_get_order(group, ec_order, NULL)) | ||
429 | goto end; | ||
430 | if (!EC_GROUP_get_cofactor(group, ec_cofactor, NULL)) | ||
431 | goto end; | ||
432 | |||
433 | len = BN_num_bits(ec_order); | ||
434 | |||
435 | if ((tmp_len = (size_t) BN_num_bytes(ec_p)) > buf_len) | ||
436 | buf_len = tmp_len; | ||
437 | if ((tmp_len = (size_t) BN_num_bytes(ec_a)) > buf_len) | ||
438 | buf_len = tmp_len; | ||
439 | if ((tmp_len = (size_t) BN_num_bytes(ec_b)) > buf_len) | ||
440 | buf_len = tmp_len; | ||
441 | if ((tmp_len = (size_t) BN_num_bytes(ec_gen)) > buf_len) | ||
442 | buf_len = tmp_len; | ||
443 | if ((tmp_len = (size_t) BN_num_bytes(ec_order)) > buf_len) | ||
444 | buf_len = tmp_len; | ||
445 | if ((tmp_len = (size_t) BN_num_bytes(ec_cofactor)) > buf_len) | ||
446 | buf_len = tmp_len; | ||
447 | |||
448 | buffer = malloc(buf_len); | ||
449 | |||
450 | if (buffer == NULL) { | ||
451 | perror("malloc"); | ||
452 | goto end; | ||
453 | } | ||
454 | ecparam_print_var(out, ec_p, "ec_p", len, buffer); | ||
455 | ecparam_print_var(out, ec_a, "ec_a", len, buffer); | ||
456 | ecparam_print_var(out, ec_b, "ec_b", len, buffer); | ||
457 | ecparam_print_var(out, ec_gen, "ec_gen", len, buffer); | ||
458 | ecparam_print_var(out, ec_order, "ec_order", len, buffer); | ||
459 | ecparam_print_var(out, ec_cofactor, "ec_cofactor", len, | ||
460 | buffer); | ||
461 | |||
462 | BIO_printf(out, "\n\n"); | ||
463 | |||
464 | BIO_printf(out, "EC_GROUP *get_ec_group_%d(void)\n\t{\n", len); | ||
465 | BIO_printf(out, "\tint ok=0;\n"); | ||
466 | BIO_printf(out, "\tEC_GROUP *group = NULL;\n"); | ||
467 | BIO_printf(out, "\tEC_POINT *point = NULL;\n"); | ||
468 | BIO_printf(out, "\tBIGNUM *tmp_1 = NULL, *tmp_2 = NULL, " | ||
469 | "*tmp_3 = NULL;\n\n"); | ||
470 | BIO_printf(out, "\tif ((tmp_1 = BN_bin2bn(ec_p_%d, " | ||
471 | "sizeof(ec_p_%d), NULL)) == NULL)\n\t\t" | ||
472 | "goto err;\n", len, len); | ||
473 | BIO_printf(out, "\tif ((tmp_2 = BN_bin2bn(ec_a_%d, " | ||
474 | "sizeof(ec_a_%d), NULL)) == NULL)\n\t\t" | ||
475 | "goto err;\n", len, len); | ||
476 | BIO_printf(out, "\tif ((tmp_3 = BN_bin2bn(ec_b_%d, " | ||
477 | "sizeof(ec_b_%d), NULL)) == NULL)\n\t\t" | ||
478 | "goto err;\n", len, len); | ||
479 | BIO_printf(out, "\tif ((group = EC_GROUP_new_curve_GFp" | ||
480 | "(tmp_1, tmp_2, tmp_3, NULL)) == NULL)\n\t\tgoto err;\n\n"); | ||
481 | BIO_printf(out, "\t/* build generator */\n"); | ||
482 | BIO_printf(out, "\tif ((tmp_1 = BN_bin2bn(ec_gen_%d, " | ||
483 | "sizeof(ec_gen_%d), tmp_1)) == NULL)" | ||
484 | "\n\t\tgoto err;\n", len, len); | ||
485 | BIO_printf(out, "\tpoint = EC_POINT_bn2point(group, tmp_1, " | ||
486 | "NULL, NULL);\n"); | ||
487 | BIO_printf(out, "\tif (point == NULL)\n\t\tgoto err;\n"); | ||
488 | BIO_printf(out, "\tif ((tmp_2 = BN_bin2bn(ec_order_%d, " | ||
489 | "sizeof(ec_order_%d), tmp_2)) == NULL)" | ||
490 | "\n\t\tgoto err;\n", len, len); | ||
491 | BIO_printf(out, "\tif ((tmp_3 = BN_bin2bn(ec_cofactor_%d, " | ||
492 | "sizeof(ec_cofactor_%d), tmp_3)) == NULL)" | ||
493 | "\n\t\tgoto err;\n", len, len); | ||
494 | BIO_printf(out, "\tif (!EC_GROUP_set_generator(group, point," | ||
495 | " tmp_2, tmp_3))\n\t\tgoto err;\n"); | ||
496 | BIO_printf(out, "\n\tok=1;\n"); | ||
497 | BIO_printf(out, "err:\n"); | ||
498 | BIO_printf(out, "\tif (tmp_1)\n\t\tBN_free(tmp_1);\n"); | ||
499 | BIO_printf(out, "\tif (tmp_2)\n\t\tBN_free(tmp_2);\n"); | ||
500 | BIO_printf(out, "\tif (tmp_3)\n\t\tBN_free(tmp_3);\n"); | ||
501 | BIO_printf(out, "\tif (point)\n\t\tEC_POINT_free(point);\n"); | ||
502 | BIO_printf(out, "\tif (!ok)\n"); | ||
503 | BIO_printf(out, "\t\t{\n"); | ||
504 | BIO_printf(out, "\t\tEC_GROUP_free(group);\n"); | ||
505 | BIO_printf(out, "\t\tgroup = NULL;\n"); | ||
506 | BIO_printf(out, "\t\t}\n"); | ||
507 | BIO_printf(out, "\treturn(group);\n\t}\n"); | ||
508 | } | ||
509 | if (!cfg.noout) { | 393 | if (!cfg.noout) { |
510 | if (cfg.outformat == FORMAT_ASN1) | 394 | if (cfg.outformat == FORMAT_ASN1) |
511 | i = i2d_ECPKParameters_bio(out, group); | 395 | i = i2d_ECPKParameters_bio(out, group); |
@@ -554,15 +438,6 @@ ecparam_main(int argc, char **argv) | |||
554 | ret = 0; | 438 | ret = 0; |
555 | 439 | ||
556 | end: | 440 | end: |
557 | BN_free(ec_p); | ||
558 | BN_free(ec_a); | ||
559 | BN_free(ec_b); | ||
560 | BN_free(ec_gen); | ||
561 | BN_free(ec_order); | ||
562 | BN_free(ec_cofactor); | ||
563 | |||
564 | free(buffer); | ||
565 | |||
566 | BIO_free(in); | 441 | BIO_free(in); |
567 | BIO_free_all(out); | 442 | BIO_free_all(out); |
568 | EC_GROUP_free(group); | 443 | EC_GROUP_free(group); |
@@ -570,27 +445,4 @@ ecparam_main(int argc, char **argv) | |||
570 | return (ret); | 445 | return (ret); |
571 | } | 446 | } |
572 | 447 | ||
573 | static int | ||
574 | ecparam_print_var(BIO * out, BIGNUM * in, const char *var, | ||
575 | int len, unsigned char *buffer) | ||
576 | { | ||
577 | BIO_printf(out, "static unsigned char %s_%d[] = {", var, len); | ||
578 | if (BN_is_zero(in)) | ||
579 | BIO_printf(out, "\n\t0x00"); | ||
580 | else { | ||
581 | int i, l; | ||
582 | |||
583 | l = BN_bn2bin(in, buffer); | ||
584 | for (i = 0; i < l - 1; i++) { | ||
585 | if ((i % 12) == 0) | ||
586 | BIO_printf(out, "\n\t"); | ||
587 | BIO_printf(out, "0x%02X,", buffer[i]); | ||
588 | } | ||
589 | if ((i % 12) == 0) | ||
590 | BIO_printf(out, "\n\t"); | ||
591 | BIO_printf(out, "0x%02X", buffer[i]); | ||
592 | } | ||
593 | BIO_printf(out, "\n\t};\n\n"); | ||
594 | return 1; | ||
595 | } | ||
596 | #endif | 448 | #endif |
diff --git a/src/usr.bin/openssl/openssl.1 b/src/usr.bin/openssl/openssl.1 index ea20639c47..6ceb53ef5c 100644 --- a/src/usr.bin/openssl/openssl.1 +++ b/src/usr.bin/openssl/openssl.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: openssl.1,v 1.161 2024/08/30 06:05:10 jmc Exp $ | 1 | .\" $OpenBSD: openssl.1,v 1.162 2025/01/19 10:24:17 tb Exp $ |
2 | .\" ==================================================================== | 2 | .\" ==================================================================== |
3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -110,7 +110,7 @@ | |||
110 | .\" copied and put under another distribution licence | 110 | .\" copied and put under another distribution licence |
111 | .\" [including the GNU Public Licence.] | 111 | .\" [including the GNU Public Licence.] |
112 | .\" | 112 | .\" |
113 | .Dd $Mdocdate: August 30 2024 $ | 113 | .Dd $Mdocdate: January 19 2025 $ |
114 | .Dt OPENSSL 1 | 114 | .Dt OPENSSL 1 |
115 | .Os | 115 | .Os |
116 | .Sh NAME | 116 | .Sh NAME |
@@ -1697,7 +1697,6 @@ If no files are specified then standard input is used. | |||
1697 | .It Nm openssl dhparam | 1697 | .It Nm openssl dhparam |
1698 | .Bk -words | 1698 | .Bk -words |
1699 | .Op Fl 2 | 5 | 1699 | .Op Fl 2 | 5 |
1700 | .Op Fl C | ||
1701 | .Op Fl check | 1700 | .Op Fl check |
1702 | .Op Fl dsaparam | 1701 | .Op Fl dsaparam |
1703 | .Op Fl in Ar file | 1702 | .Op Fl in Ar file |
@@ -1722,11 +1721,6 @@ The options are as follows: | |||
1722 | The generator to use; | 1721 | The generator to use; |
1723 | 2 is the default. | 1722 | 2 is the default. |
1724 | If present, the input file is ignored and parameters are generated instead. | 1723 | If present, the input file is ignored and parameters are generated instead. |
1725 | .It Fl C | ||
1726 | Convert the parameters into C code. | ||
1727 | The parameters can then be loaded by calling the | ||
1728 | .No get_dh Ns Ar numbits | ||
1729 | function. | ||
1730 | .It Fl check | 1724 | .It Fl check |
1731 | Check the DH parameters. | 1725 | Check the DH parameters. |
1732 | .It Fl dsaparam | 1726 | .It Fl dsaparam |
@@ -1862,7 +1856,6 @@ Print the public/private key in plain text. | |||
1862 | .Bl -hang -width "openssl dsaparam" | 1856 | .Bl -hang -width "openssl dsaparam" |
1863 | .It Nm openssl dsaparam | 1857 | .It Nm openssl dsaparam |
1864 | .Bk -words | 1858 | .Bk -words |
1865 | .Op Fl C | ||
1866 | .Op Fl genkey | 1859 | .Op Fl genkey |
1867 | .Op Fl in Ar file | 1860 | .Op Fl in Ar file |
1868 | .Op Fl inform Cm der | pem | 1861 | .Op Fl inform Cm der | pem |
@@ -1880,11 +1873,6 @@ command is used to manipulate or generate DSA parameter files. | |||
1880 | .Pp | 1873 | .Pp |
1881 | The options are as follows: | 1874 | The options are as follows: |
1882 | .Bl -tag -width Ds | 1875 | .Bl -tag -width Ds |
1883 | .It Fl C | ||
1884 | Convert the parameters into C code. | ||
1885 | The parameters can then be loaded by calling the | ||
1886 | .No get_dsa Ns Ar XXX | ||
1887 | function. | ||
1888 | .It Fl genkey | 1876 | .It Fl genkey |
1889 | Generate a DSA key either using the specified or generated | 1877 | Generate a DSA key either using the specified or generated |
1890 | parameters. | 1878 | parameters. |
@@ -2028,7 +2016,6 @@ Print the public/private key in plain text. | |||
2028 | .Bl -hang -width "openssl ecparam" | 2016 | .Bl -hang -width "openssl ecparam" |
2029 | .It Nm openssl ecparam | 2017 | .It Nm openssl ecparam |
2030 | .Bk -words | 2018 | .Bk -words |
2031 | .Op Fl C | ||
2032 | .Op Fl check | 2019 | .Op Fl check |
2033 | .Op Fl conv_form Ar arg | 2020 | .Op Fl conv_form Ar arg |
2034 | .Op Fl genkey | 2021 | .Op Fl genkey |
@@ -2055,11 +2042,6 @@ can only create EC parameters from known (named) curves. | |||
2055 | .Pp | 2042 | .Pp |
2056 | The options are as follows: | 2043 | The options are as follows: |
2057 | .Bl -tag -width Ds | 2044 | .Bl -tag -width Ds |
2058 | .It Fl C | ||
2059 | Convert the EC parameters into C code. | ||
2060 | The parameters can then be loaded by calling the | ||
2061 | .No get_ec_group_ Ns Ar XXX | ||
2062 | function. | ||
2063 | .It Fl check | 2045 | .It Fl check |
2064 | Validate the elliptic curve parameters. | 2046 | Validate the elliptic curve parameters. |
2065 | .It Fl conv_form Ar arg | 2047 | .It Fl conv_form Ar arg |
@@ -5984,7 +5966,6 @@ version. | |||
5984 | .Bl -hang -width "openssl x509" | 5966 | .Bl -hang -width "openssl x509" |
5985 | .It Nm openssl x509 | 5967 | .It Nm openssl x509 |
5986 | .Bk -words | 5968 | .Bk -words |
5987 | .Op Fl C | ||
5988 | .Op Fl addreject Ar arg | 5969 | .Op Fl addreject Ar arg |
5989 | .Op Fl addtrust Ar arg | 5970 | .Op Fl addtrust Ar arg |
5990 | .Op Fl alias | 5971 | .Op Fl alias |
@@ -6091,8 +6072,6 @@ The key password source. | |||
6091 | .Pp | 6072 | .Pp |
6092 | The following are x509 display options: | 6073 | The following are x509 display options: |
6093 | .Bl -tag -width "XXXX" | 6074 | .Bl -tag -width "XXXX" |
6094 | .It Fl C | ||
6095 | Output the certificate in the form of a C source file. | ||
6096 | .It Fl certopt Ar option | 6075 | .It Fl certopt Ar option |
6097 | Customise the output format used with | 6076 | Customise the output format used with |
6098 | .Fl text , | 6077 | .Fl text , |
diff --git a/src/usr.bin/openssl/x509.c b/src/usr.bin/openssl/x509.c index fc8a0daeb3..e67e6fa54d 100644 --- a/src/usr.bin/openssl/x509.c +++ b/src/usr.bin/openssl/x509.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509.c,v 1.40 2024/12/04 08:14:34 tb Exp $ */ | 1 | /* $OpenBSD: x509.c,v 1.41 2025/01/19 10:24:17 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -93,7 +93,6 @@ static struct { | |||
93 | char *alias; | 93 | char *alias; |
94 | int aliasout; | 94 | int aliasout; |
95 | int badops; | 95 | int badops; |
96 | int C; | ||
97 | int CA_createserial; | 96 | int CA_createserial; |
98 | int CA_flag; | 97 | int CA_flag; |
99 | char *CAfile; | 98 | char *CAfile; |
@@ -328,13 +327,6 @@ x509_opt_utf8(void) | |||
328 | 327 | ||
329 | static const struct option x509_options[] = { | 328 | static const struct option x509_options[] = { |
330 | { | 329 | { |
331 | .name = "C", | ||
332 | .desc = "Convert the certificate into C code", | ||
333 | .type = OPTION_ORDER, | ||
334 | .opt.order = &cfg.C, | ||
335 | .order = &cfg.num, | ||
336 | }, | ||
337 | { | ||
338 | .name = "addreject", | 330 | .name = "addreject", |
339 | .argname = "arg", | 331 | .argname = "arg", |
340 | .desc = "Reject certificate for a given purpose", | 332 | .desc = "Reject certificate for a given purpose", |
@@ -763,7 +755,7 @@ static void | |||
763 | x509_usage(void) | 755 | x509_usage(void) |
764 | { | 756 | { |
765 | fprintf(stderr, "usage: x509 " | 757 | fprintf(stderr, "usage: x509 " |
766 | "[-C] [-addreject arg] [-addtrust arg] [-alias] [-CA file]\n" | 758 | " [-addreject arg] [-addtrust arg] [-alias] [-CA file]\n" |
767 | " [-CAcreateserial] [-CAform der | pem] [-CAkey file]\n" | 759 | " [-CAcreateserial] [-CAform der | pem] [-CAkey file]\n" |
768 | " [-CAkeyform der | pem] [-CAserial file] [-certopt option]\n" | 760 | " [-CAkeyform der | pem] [-CAserial file] [-certopt option]\n" |
769 | " [-checkend arg] [-clrext] [-clrreject] [-clrtrust] [-dates]\n" | 761 | " [-checkend arg] [-clrext] [-clrreject] [-clrtrust] [-dates]\n" |
@@ -798,7 +790,6 @@ x509_main(int argc, char **argv) | |||
798 | BIO *STDout = NULL; | 790 | BIO *STDout = NULL; |
799 | X509_STORE *ctx = NULL; | 791 | X509_STORE *ctx = NULL; |
800 | X509_REQ *rq = NULL; | 792 | X509_REQ *rq = NULL; |
801 | char buf[256]; | ||
802 | CONF *extconf = NULL; | 793 | CONF *extconf = NULL; |
803 | char *passin = NULL; | 794 | char *passin = NULL; |
804 | 795 | ||
@@ -1178,85 +1169,6 @@ x509_main(int argc, char **argv) | |||
1178 | goto end; | 1169 | goto end; |
1179 | } | 1170 | } |
1180 | PEM_write_bio_PUBKEY(STDout, pubkey); | 1171 | PEM_write_bio_PUBKEY(STDout, pubkey); |
1181 | } else if (cfg.C == i) { | ||
1182 | unsigned char *d; | ||
1183 | char *m; | ||
1184 | int y, z; | ||
1185 | |||
1186 | m = X509_NAME_oneline(X509_get_subject_name(x), | ||
1187 | buf, sizeof buf); | ||
1188 | if (m == NULL) | ||
1189 | goto end; | ||
1190 | BIO_printf(STDout, "/* subject:%s */\n", buf); | ||
1191 | m = X509_NAME_oneline(X509_get_issuer_name(x), | ||
1192 | buf, sizeof buf); | ||
1193 | if (m == NULL) | ||
1194 | goto end; | ||
1195 | BIO_printf(STDout, "/* issuer :%s */\n", buf); | ||
1196 | |||
1197 | z = i2d_X509(x, NULL); | ||
1198 | if (z < 0) | ||
1199 | goto end; | ||
1200 | |||
1201 | m = malloc(z); | ||
1202 | if (m == NULL) { | ||
1203 | BIO_printf(bio_err, "out of mem\n"); | ||
1204 | goto end; | ||
1205 | } | ||
1206 | |||
1207 | d = (unsigned char *) m; | ||
1208 | z = i2d_X509_NAME(X509_get_subject_name(x), &d); | ||
1209 | if (z < 0) { | ||
1210 | free(m); | ||
1211 | goto end; | ||
1212 | } | ||
1213 | BIO_printf(STDout, | ||
1214 | "unsigned char XXX_subject_name[%d]={\n", z); | ||
1215 | d = (unsigned char *) m; | ||
1216 | for (y = 0; y < z; y++) { | ||
1217 | BIO_printf(STDout, "0x%02X,", d[y]); | ||
1218 | if ((y & 0x0f) == 0x0f) | ||
1219 | BIO_printf(STDout, "\n"); | ||
1220 | } | ||
1221 | if (y % 16 != 0) | ||
1222 | BIO_printf(STDout, "\n"); | ||
1223 | BIO_printf(STDout, "};\n"); | ||
1224 | |||
1225 | z = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &d); | ||
1226 | if (z < 0) { | ||
1227 | free(m); | ||
1228 | goto end; | ||
1229 | } | ||
1230 | BIO_printf(STDout, | ||
1231 | "unsigned char XXX_public_key[%d]={\n", z); | ||
1232 | d = (unsigned char *) m; | ||
1233 | for (y = 0; y < z; y++) { | ||
1234 | BIO_printf(STDout, "0x%02X,", d[y]); | ||
1235 | if ((y & 0x0f) == 0x0f) | ||
1236 | BIO_printf(STDout, "\n"); | ||
1237 | } | ||
1238 | if (y % 16 != 0) | ||
1239 | BIO_printf(STDout, "\n"); | ||
1240 | BIO_printf(STDout, "};\n"); | ||
1241 | |||
1242 | z = i2d_X509(x, &d); | ||
1243 | if (z < 0) { | ||
1244 | free(m); | ||
1245 | goto end; | ||
1246 | } | ||
1247 | BIO_printf(STDout, | ||
1248 | "unsigned char XXX_certificate[%d]={\n", z); | ||
1249 | d = (unsigned char *) m; | ||
1250 | for (y = 0; y < z; y++) { | ||
1251 | BIO_printf(STDout, "0x%02X,", d[y]); | ||
1252 | if ((y & 0x0f) == 0x0f) | ||
1253 | BIO_printf(STDout, "\n"); | ||
1254 | } | ||
1255 | if (y % 16 != 0) | ||
1256 | BIO_printf(STDout, "\n"); | ||
1257 | BIO_printf(STDout, "};\n"); | ||
1258 | |||
1259 | free(m); | ||
1260 | } else if (cfg.text == i) { | 1172 | } else if (cfg.text == i) { |
1261 | if(!X509_print_ex(STDout, x, cfg.nmflag, | 1173 | if(!X509_print_ex(STDout, x, cfg.nmflag, |
1262 | cfg.certflag)) | 1174 | cfg.certflag)) |