summaryrefslogtreecommitdiff
path: root/src/usr.bin/openssl/pkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr.bin/openssl/pkey.c')
-rw-r--r--src/usr.bin/openssl/pkey.c84
1 files changed, 42 insertions, 42 deletions
diff --git a/src/usr.bin/openssl/pkey.c b/src/usr.bin/openssl/pkey.c
index 2d9b69f5c3..cb558f5ac8 100644
--- a/src/usr.bin/openssl/pkey.c
+++ b/src/usr.bin/openssl/pkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pkey.c,v 1.18 2022/11/11 17:07:39 joshua Exp $ */ 1/* $OpenBSD: pkey.c,v 1.19 2023/03/06 14:32:06 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006 3 * project 2006
4 */ 4 */
@@ -80,7 +80,7 @@ static struct {
80 int pubout; 80 int pubout;
81 int pubtext; 81 int pubtext;
82 int text; 82 int text;
83} pkey_config; 83} cfg;
84 84
85static int 85static int
86pkey_opt_cipher(int argc, char **argv, int *argsused) 86pkey_opt_cipher(int argc, char **argv, int *argsused)
@@ -90,7 +90,7 @@ pkey_opt_cipher(int argc, char **argv, int *argsused)
90 if (*name++ != '-') 90 if (*name++ != '-')
91 return (1); 91 return (1);
92 92
93 if ((pkey_config.cipher = EVP_get_cipherbyname(name)) == NULL) { 93 if ((cfg.cipher = EVP_get_cipherbyname(name)) == NULL) {
94 BIO_printf(bio_err, "Unknown cipher %s\n", name); 94 BIO_printf(bio_err, "Unknown cipher %s\n", name);
95 return (1); 95 return (1);
96 } 96 }
@@ -104,87 +104,87 @@ static const struct option pkey_options[] = {
104 .name = "check", 104 .name = "check",
105 .desc = "Check validity of key", 105 .desc = "Check validity of key",
106 .type = OPTION_FLAG, 106 .type = OPTION_FLAG,
107 .opt.flag = &pkey_config.check, 107 .opt.flag = &cfg.check,
108 }, 108 },
109 { 109 {
110 .name = "in", 110 .name = "in",
111 .argname = "file", 111 .argname = "file",
112 .desc = "Input file (default stdin)", 112 .desc = "Input file (default stdin)",
113 .type = OPTION_ARG, 113 .type = OPTION_ARG,
114 .opt.arg = &pkey_config.infile, 114 .opt.arg = &cfg.infile,
115 }, 115 },
116 { 116 {
117 .name = "inform", 117 .name = "inform",
118 .argname = "format", 118 .argname = "format",
119 .desc = "Input format (DER or PEM (default))", 119 .desc = "Input format (DER or PEM (default))",
120 .type = OPTION_ARG_FORMAT, 120 .type = OPTION_ARG_FORMAT,
121 .opt.value = &pkey_config.informat, 121 .opt.value = &cfg.informat,
122 }, 122 },
123 { 123 {
124 .name = "noout", 124 .name = "noout",
125 .desc = "Do not print encoded version of the key", 125 .desc = "Do not print encoded version of the key",
126 .type = OPTION_FLAG, 126 .type = OPTION_FLAG,
127 .opt.flag = &pkey_config.noout, 127 .opt.flag = &cfg.noout,
128 }, 128 },
129 { 129 {
130 .name = "out", 130 .name = "out",
131 .argname = "file", 131 .argname = "file",
132 .desc = "Output file (default stdout)", 132 .desc = "Output file (default stdout)",
133 .type = OPTION_ARG, 133 .type = OPTION_ARG,
134 .opt.arg = &pkey_config.outfile, 134 .opt.arg = &cfg.outfile,
135 }, 135 },
136 { 136 {
137 .name = "outform", 137 .name = "outform",
138 .argname = "format", 138 .argname = "format",
139 .desc = "Output format (DER or PEM (default))", 139 .desc = "Output format (DER or PEM (default))",
140 .type = OPTION_ARG_FORMAT, 140 .type = OPTION_ARG_FORMAT,
141 .opt.value = &pkey_config.outformat, 141 .opt.value = &cfg.outformat,
142 }, 142 },
143 { 143 {
144 .name = "passin", 144 .name = "passin",
145 .argname = "src", 145 .argname = "src",
146 .desc = "Input file passphrase source", 146 .desc = "Input file passphrase source",
147 .type = OPTION_ARG, 147 .type = OPTION_ARG,
148 .opt.arg = &pkey_config.passargin, 148 .opt.arg = &cfg.passargin,
149 }, 149 },
150 { 150 {
151 .name = "passout", 151 .name = "passout",
152 .argname = "src", 152 .argname = "src",
153 .desc = "Output file passphrase source", 153 .desc = "Output file passphrase source",
154 .type = OPTION_ARG, 154 .type = OPTION_ARG,
155 .opt.arg = &pkey_config.passargout, 155 .opt.arg = &cfg.passargout,
156 }, 156 },
157 { 157 {
158 .name = "pubcheck", 158 .name = "pubcheck",
159 .desc = "Check validity of public key", 159 .desc = "Check validity of public key",
160 .type = OPTION_FLAG, 160 .type = OPTION_FLAG,
161 .opt.flag = &pkey_config.pubcheck, 161 .opt.flag = &cfg.pubcheck,
162 }, 162 },
163 { 163 {
164 .name = "pubin", 164 .name = "pubin",
165 .desc = "Expect a public key (default private key)", 165 .desc = "Expect a public key (default private key)",
166 .type = OPTION_VALUE, 166 .type = OPTION_VALUE,
167 .value = 1, 167 .value = 1,
168 .opt.value = &pkey_config.pubin, 168 .opt.value = &cfg.pubin,
169 }, 169 },
170 { 170 {
171 .name = "pubout", 171 .name = "pubout",
172 .desc = "Output a public key (default private key)", 172 .desc = "Output a public key (default private key)",
173 .type = OPTION_VALUE, 173 .type = OPTION_VALUE,
174 .value = 1, 174 .value = 1,
175 .opt.value = &pkey_config.pubout, 175 .opt.value = &cfg.pubout,
176 }, 176 },
177 { 177 {
178 .name = "text", 178 .name = "text",
179 .desc = "Print the public/private key in plain text", 179 .desc = "Print the public/private key in plain text",
180 .type = OPTION_FLAG, 180 .type = OPTION_FLAG,
181 .opt.flag = &pkey_config.text, 181 .opt.flag = &cfg.text,
182 }, 182 },
183 { 183 {
184 .name = "text_pub", 184 .name = "text_pub",
185 .desc = "Print out only public key in plain text", 185 .desc = "Print out only public key in plain text",
186 .type = OPTION_FLAG, 186 .type = OPTION_FLAG,
187 .opt.flag = &pkey_config.pubtext, 187 .opt.flag = &cfg.pubtext,
188 }, 188 },
189 { 189 {
190 .name = NULL, 190 .name = NULL,
@@ -226,61 +226,61 @@ pkey_main(int argc, char **argv)
226 exit(1); 226 exit(1);
227 } 227 }
228 228
229 memset(&pkey_config, 0, sizeof(pkey_config)); 229 memset(&cfg, 0, sizeof(cfg));
230 pkey_config.informat = FORMAT_PEM; 230 cfg.informat = FORMAT_PEM;
231 pkey_config.outformat = FORMAT_PEM; 231 cfg.outformat = FORMAT_PEM;
232 232
233 if (options_parse(argc, argv, pkey_options, NULL, NULL) != 0) { 233 if (options_parse(argc, argv, pkey_options, NULL, NULL) != 0) {
234 pkey_usage(); 234 pkey_usage();
235 goto end; 235 goto end;
236 } 236 }
237 237
238 if (pkey_config.pubtext) 238 if (cfg.pubtext)
239 pkey_config.text = 1; 239 cfg.text = 1;
240 if (pkey_config.pubin) 240 if (cfg.pubin)
241 pkey_config.pubout = pkey_config.pubtext = 1; 241 cfg.pubout = cfg.pubtext = 1;
242 242
243 if (!app_passwd(bio_err, pkey_config.passargin, pkey_config.passargout, 243 if (!app_passwd(bio_err, cfg.passargin, cfg.passargout,
244 &passin, &passout)) { 244 &passin, &passout)) {
245 BIO_printf(bio_err, "Error getting passwords\n"); 245 BIO_printf(bio_err, "Error getting passwords\n");
246 goto end; 246 goto end;
247 } 247 }
248 if (pkey_config.outfile) { 248 if (cfg.outfile) {
249 if (!(out = BIO_new_file(pkey_config.outfile, "wb"))) { 249 if (!(out = BIO_new_file(cfg.outfile, "wb"))) {
250 BIO_printf(bio_err, 250 BIO_printf(bio_err,
251 "Can't open output file %s\n", pkey_config.outfile); 251 "Can't open output file %s\n", cfg.outfile);
252 goto end; 252 goto end;
253 } 253 }
254 } else { 254 } else {
255 out = BIO_new_fp(stdout, BIO_NOCLOSE); 255 out = BIO_new_fp(stdout, BIO_NOCLOSE);
256 } 256 }
257 257
258 if (pkey_config.pubin) 258 if (cfg.pubin)
259 pkey = load_pubkey(bio_err, pkey_config.infile, 259 pkey = load_pubkey(bio_err, cfg.infile,
260 pkey_config.informat, 1, passin, "Public Key"); 260 cfg.informat, 1, passin, "Public Key");
261 else 261 else
262 pkey = load_key(bio_err, pkey_config.infile, 262 pkey = load_key(bio_err, cfg.infile,
263 pkey_config.informat, 1, passin, "key"); 263 cfg.informat, 1, passin, "key");
264 if (!pkey) 264 if (!pkey)
265 goto end; 265 goto end;
266 266
267 if (pkey_config.check) { 267 if (cfg.check) {
268 if (!pkey_check(out, pkey, EVP_PKEY_check, "Key pair")) 268 if (!pkey_check(out, pkey, EVP_PKEY_check, "Key pair"))
269 goto end; 269 goto end;
270 } else if (pkey_config.pubcheck) { 270 } else if (cfg.pubcheck) {
271 if (!pkey_check(out, pkey, EVP_PKEY_public_check, "Public key")) 271 if (!pkey_check(out, pkey, EVP_PKEY_public_check, "Public key"))
272 goto end; 272 goto end;
273 } 273 }
274 274
275 if (!pkey_config.noout) { 275 if (!cfg.noout) {
276 if (pkey_config.outformat == FORMAT_PEM) { 276 if (cfg.outformat == FORMAT_PEM) {
277 if (pkey_config.pubout) 277 if (cfg.pubout)
278 PEM_write_bio_PUBKEY(out, pkey); 278 PEM_write_bio_PUBKEY(out, pkey);
279 else 279 else
280 PEM_write_bio_PrivateKey(out, pkey, 280 PEM_write_bio_PrivateKey(out, pkey,
281 pkey_config.cipher, NULL, 0, NULL, passout); 281 cfg.cipher, NULL, 0, NULL, passout);
282 } else if (pkey_config.outformat == FORMAT_ASN1) { 282 } else if (cfg.outformat == FORMAT_ASN1) {
283 if (pkey_config.pubout) 283 if (cfg.pubout)
284 i2d_PUBKEY_bio(out, pkey); 284 i2d_PUBKEY_bio(out, pkey);
285 else 285 else
286 i2d_PrivateKey_bio(out, pkey); 286 i2d_PrivateKey_bio(out, pkey);
@@ -290,8 +290,8 @@ pkey_main(int argc, char **argv)
290 } 290 }
291 291
292 } 292 }
293 if (pkey_config.text) { 293 if (cfg.text) {
294 if (pkey_config.pubtext) 294 if (cfg.pubtext)
295 EVP_PKEY_print_public(out, pkey, 0, NULL); 295 EVP_PKEY_print_public(out, pkey, 0, NULL);
296 else 296 else
297 EVP_PKEY_print_private(out, pkey, 0, NULL); 297 EVP_PKEY_print_private(out, pkey, 0, NULL);