diff options
author | tb <> | 2023-03-06 14:32:06 +0000 |
---|---|---|
committer | tb <> | 2023-03-06 14:32:06 +0000 |
commit | 6c965e26b1a93da63948edae6b68564be1ded507 (patch) | |
tree | bbe07d6e06b695cebe22802551f2db0a61354d7c /src/usr.bin/openssl/enc.c | |
parent | 48e828ea26ee91710242131cd75cd9d1d20b773c (diff) | |
download | openbsd-6c965e26b1a93da63948edae6b68564be1ded507.tar.gz openbsd-6c965e26b1a93da63948edae6b68564be1ded507.tar.bz2 openbsd-6c965e26b1a93da63948edae6b68564be1ded507.zip |
Rename struct ${app}_config to plain cfg
All the structs are static and we need to reach into them many times.
Having a shorter name is more concise and results in less visual clutter.
It also avoids many overlong lines and we will be able to get rid of some
unfortunate line wrapping down the road.
Discussed with jsing
Diffstat (limited to 'src/usr.bin/openssl/enc.c')
-rw-r--r-- | src/usr.bin/openssl/enc.c | 232 |
1 files changed, 116 insertions, 116 deletions
diff --git a/src/usr.bin/openssl/enc.c b/src/usr.bin/openssl/enc.c index 6be0a30dec..b80a177cd8 100644 --- a/src/usr.bin/openssl/enc.c +++ b/src/usr.bin/openssl/enc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: enc.c,v 1.26 2023/03/04 21:58:54 tb Exp $ */ | 1 | /* $OpenBSD: enc.c,v 1.27 2023/03/06 14:32:06 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 | * |
@@ -100,7 +100,7 @@ static struct { | |||
100 | int pbkdf2; | 100 | int pbkdf2; |
101 | int printkey; | 101 | int printkey; |
102 | int verbose; | 102 | int verbose; |
103 | } enc_config; | 103 | } cfg; |
104 | 104 | ||
105 | static int | 105 | static int |
106 | enc_opt_cipher(int argc, char **argv, int *argsused) | 106 | enc_opt_cipher(int argc, char **argv, int *argsused) |
@@ -111,12 +111,12 @@ enc_opt_cipher(int argc, char **argv, int *argsused) | |||
111 | return (1); | 111 | return (1); |
112 | 112 | ||
113 | if (strcmp(name, "none") == 0) { | 113 | if (strcmp(name, "none") == 0) { |
114 | enc_config.cipher = NULL; | 114 | cfg.cipher = NULL; |
115 | *argsused = 1; | 115 | *argsused = 1; |
116 | return (0); | 116 | return (0); |
117 | } | 117 | } |
118 | 118 | ||
119 | if ((enc_config.cipher = EVP_get_cipherbyname(name)) != NULL) { | 119 | if ((cfg.cipher = EVP_get_cipherbyname(name)) != NULL) { |
120 | *argsused = 1; | 120 | *argsused = 1; |
121 | return (0); | 121 | return (0); |
122 | } | 122 | } |
@@ -129,44 +129,44 @@ static const struct option enc_options[] = { | |||
129 | .name = "A", | 129 | .name = "A", |
130 | .desc = "Process base64 data on one line (requires -a)", | 130 | .desc = "Process base64 data on one line (requires -a)", |
131 | .type = OPTION_FLAG, | 131 | .type = OPTION_FLAG, |
132 | .opt.flag = &enc_config.olb64, | 132 | .opt.flag = &cfg.olb64, |
133 | }, | 133 | }, |
134 | { | 134 | { |
135 | .name = "a", | 135 | .name = "a", |
136 | .desc = "Perform base64 encoding/decoding (alias -base64)", | 136 | .desc = "Perform base64 encoding/decoding (alias -base64)", |
137 | .type = OPTION_FLAG, | 137 | .type = OPTION_FLAG, |
138 | .opt.flag = &enc_config.base64, | 138 | .opt.flag = &cfg.base64, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "base64", | 141 | .name = "base64", |
142 | .type = OPTION_FLAG, | 142 | .type = OPTION_FLAG, |
143 | .opt.flag = &enc_config.base64, | 143 | .opt.flag = &cfg.base64, |
144 | }, | 144 | }, |
145 | { | 145 | { |
146 | .name = "bufsize", | 146 | .name = "bufsize", |
147 | .argname = "size", | 147 | .argname = "size", |
148 | .desc = "Specify the buffer size to use for I/O", | 148 | .desc = "Specify the buffer size to use for I/O", |
149 | .type = OPTION_ARG, | 149 | .type = OPTION_ARG, |
150 | .opt.arg = &enc_config.bufsize, | 150 | .opt.arg = &cfg.bufsize, |
151 | }, | 151 | }, |
152 | { | 152 | { |
153 | .name = "d", | 153 | .name = "d", |
154 | .desc = "Decrypt the input data", | 154 | .desc = "Decrypt the input data", |
155 | .type = OPTION_VALUE, | 155 | .type = OPTION_VALUE, |
156 | .opt.value = &enc_config.enc, | 156 | .opt.value = &cfg.enc, |
157 | .value = 0, | 157 | .value = 0, |
158 | }, | 158 | }, |
159 | { | 159 | { |
160 | .name = "debug", | 160 | .name = "debug", |
161 | .desc = "Print debugging information", | 161 | .desc = "Print debugging information", |
162 | .type = OPTION_FLAG, | 162 | .type = OPTION_FLAG, |
163 | .opt.flag = &enc_config.debug, | 163 | .opt.flag = &cfg.debug, |
164 | }, | 164 | }, |
165 | { | 165 | { |
166 | .name = "e", | 166 | .name = "e", |
167 | .desc = "Encrypt the input data (default)", | 167 | .desc = "Encrypt the input data (default)", |
168 | .type = OPTION_VALUE, | 168 | .type = OPTION_VALUE, |
169 | .opt.value = &enc_config.enc, | 169 | .opt.value = &cfg.enc, |
170 | .value = 1, | 170 | .value = 1, |
171 | }, | 171 | }, |
172 | { | 172 | { |
@@ -174,45 +174,45 @@ static const struct option enc_options[] = { | |||
174 | .argname = "file", | 174 | .argname = "file", |
175 | .desc = "Input file to read from (default stdin)", | 175 | .desc = "Input file to read from (default stdin)", |
176 | .type = OPTION_ARG, | 176 | .type = OPTION_ARG, |
177 | .opt.arg = &enc_config.inf, | 177 | .opt.arg = &cfg.inf, |
178 | }, | 178 | }, |
179 | { | 179 | { |
180 | .name = "iter", | 180 | .name = "iter", |
181 | .argname = "iterations", | 181 | .argname = "iterations", |
182 | .desc = "Specify iteration count and force use of PBKDF2", | 182 | .desc = "Specify iteration count and force use of PBKDF2", |
183 | .type = OPTION_ARG_INT, | 183 | .type = OPTION_ARG_INT, |
184 | .opt.value = &enc_config.iter, | 184 | .opt.value = &cfg.iter, |
185 | }, | 185 | }, |
186 | { | 186 | { |
187 | .name = "iv", | 187 | .name = "iv", |
188 | .argname = "IV", | 188 | .argname = "IV", |
189 | .desc = "IV to use, specified as a hexadecimal string", | 189 | .desc = "IV to use, specified as a hexadecimal string", |
190 | .type = OPTION_ARG, | 190 | .type = OPTION_ARG, |
191 | .opt.arg = &enc_config.hiv, | 191 | .opt.arg = &cfg.hiv, |
192 | }, | 192 | }, |
193 | { | 193 | { |
194 | .name = "K", | 194 | .name = "K", |
195 | .argname = "key", | 195 | .argname = "key", |
196 | .desc = "Key to use, specified as a hexadecimal string", | 196 | .desc = "Key to use, specified as a hexadecimal string", |
197 | .type = OPTION_ARG, | 197 | .type = OPTION_ARG, |
198 | .opt.arg = &enc_config.hkey, | 198 | .opt.arg = &cfg.hkey, |
199 | }, | 199 | }, |
200 | { | 200 | { |
201 | .name = "k", /* Superseded by -pass. */ | 201 | .name = "k", /* Superseded by -pass. */ |
202 | .type = OPTION_ARG, | 202 | .type = OPTION_ARG, |
203 | .opt.arg = &enc_config.keystr, | 203 | .opt.arg = &cfg.keystr, |
204 | }, | 204 | }, |
205 | { | 205 | { |
206 | .name = "kfile", /* Superseded by -pass. */ | 206 | .name = "kfile", /* Superseded by -pass. */ |
207 | .type = OPTION_ARG, | 207 | .type = OPTION_ARG, |
208 | .opt.arg = &enc_config.keyfile, | 208 | .opt.arg = &cfg.keyfile, |
209 | }, | 209 | }, |
210 | { | 210 | { |
211 | .name = "md", | 211 | .name = "md", |
212 | .argname = "digest", | 212 | .argname = "digest", |
213 | .desc = "Digest to use to create a key from the passphrase", | 213 | .desc = "Digest to use to create a key from the passphrase", |
214 | .type = OPTION_ARG, | 214 | .type = OPTION_ARG, |
215 | .opt.arg = &enc_config.md, | 215 | .opt.arg = &cfg.md, |
216 | }, | 216 | }, |
217 | { | 217 | { |
218 | .name = "none", | 218 | .name = "none", |
@@ -224,12 +224,12 @@ static const struct option enc_options[] = { | |||
224 | .name = "nopad", | 224 | .name = "nopad", |
225 | .desc = "Disable standard block padding", | 225 | .desc = "Disable standard block padding", |
226 | .type = OPTION_FLAG, | 226 | .type = OPTION_FLAG, |
227 | .opt.flag = &enc_config.nopad, | 227 | .opt.flag = &cfg.nopad, |
228 | }, | 228 | }, |
229 | { | 229 | { |
230 | .name = "nosalt", | 230 | .name = "nosalt", |
231 | .type = OPTION_VALUE, | 231 | .type = OPTION_VALUE, |
232 | .opt.value = &enc_config.nosalt, | 232 | .opt.value = &cfg.nosalt, |
233 | .value = 1, | 233 | .value = 1, |
234 | }, | 234 | }, |
235 | { | 235 | { |
@@ -237,21 +237,21 @@ static const struct option enc_options[] = { | |||
237 | .argname = "file", | 237 | .argname = "file", |
238 | .desc = "Output file to write to (default stdout)", | 238 | .desc = "Output file to write to (default stdout)", |
239 | .type = OPTION_ARG, | 239 | .type = OPTION_ARG, |
240 | .opt.arg = &enc_config.outf, | 240 | .opt.arg = &cfg.outf, |
241 | }, | 241 | }, |
242 | { | 242 | { |
243 | .name = "P", | 243 | .name = "P", |
244 | .desc = "Print out the salt, key and IV used, then exit\n" | 244 | .desc = "Print out the salt, key and IV used, then exit\n" |
245 | " (no encryption or decryption is performed)", | 245 | " (no encryption or decryption is performed)", |
246 | .type = OPTION_VALUE, | 246 | .type = OPTION_VALUE, |
247 | .opt.value = &enc_config.printkey, | 247 | .opt.value = &cfg.printkey, |
248 | .value = 2, | 248 | .value = 2, |
249 | }, | 249 | }, |
250 | { | 250 | { |
251 | .name = "p", | 251 | .name = "p", |
252 | .desc = "Print out the salt, key and IV used", | 252 | .desc = "Print out the salt, key and IV used", |
253 | .type = OPTION_VALUE, | 253 | .type = OPTION_VALUE, |
254 | .opt.value = &enc_config.printkey, | 254 | .opt.value = &cfg.printkey, |
255 | .value = 1, | 255 | .value = 1, |
256 | }, | 256 | }, |
257 | { | 257 | { |
@@ -259,40 +259,40 @@ static const struct option enc_options[] = { | |||
259 | .argname = "source", | 259 | .argname = "source", |
260 | .desc = "Password source", | 260 | .desc = "Password source", |
261 | .type = OPTION_ARG, | 261 | .type = OPTION_ARG, |
262 | .opt.arg = &enc_config.passarg, | 262 | .opt.arg = &cfg.passarg, |
263 | }, | 263 | }, |
264 | { | 264 | { |
265 | .name = "pbkdf2", | 265 | .name = "pbkdf2", |
266 | .desc = "Use the pbkdf2 key derivation function", | 266 | .desc = "Use the pbkdf2 key derivation function", |
267 | .type = OPTION_FLAG, | 267 | .type = OPTION_FLAG, |
268 | .opt.flag = &enc_config.pbkdf2, | 268 | .opt.flag = &cfg.pbkdf2, |
269 | }, | 269 | }, |
270 | { | 270 | { |
271 | .name = "S", | 271 | .name = "S", |
272 | .argname = "salt", | 272 | .argname = "salt", |
273 | .desc = "Salt to use, specified as a hexadecimal string", | 273 | .desc = "Salt to use, specified as a hexadecimal string", |
274 | .type = OPTION_ARG, | 274 | .type = OPTION_ARG, |
275 | .opt.arg = &enc_config.hsalt, | 275 | .opt.arg = &cfg.hsalt, |
276 | }, | 276 | }, |
277 | { | 277 | { |
278 | .name = "salt", | 278 | .name = "salt", |
279 | .desc = "Use a salt in the key derivation routines (default)", | 279 | .desc = "Use a salt in the key derivation routines (default)", |
280 | .type = OPTION_VALUE, | 280 | .type = OPTION_VALUE, |
281 | .opt.value = &enc_config.nosalt, | 281 | .opt.value = &cfg.nosalt, |
282 | .value = 0, | 282 | .value = 0, |
283 | }, | 283 | }, |
284 | { | 284 | { |
285 | .name = "v", | 285 | .name = "v", |
286 | .desc = "Verbose", | 286 | .desc = "Verbose", |
287 | .type = OPTION_FLAG, | 287 | .type = OPTION_FLAG, |
288 | .opt.flag = &enc_config.verbose, | 288 | .opt.flag = &cfg.verbose, |
289 | }, | 289 | }, |
290 | #ifdef ZLIB | 290 | #ifdef ZLIB |
291 | { | 291 | { |
292 | .name = "z", | 292 | .name = "z", |
293 | .desc = "Perform zlib compression/decompression", | 293 | .desc = "Perform zlib compression/decompression", |
294 | .type = OPTION_FLAG, | 294 | .type = OPTION_FLAG, |
295 | .opt.flag = &enc_config.do_zlib, | 295 | .opt.flag = &cfg.do_zlib, |
296 | }, | 296 | }, |
297 | #endif | 297 | #endif |
298 | { | 298 | { |
@@ -365,27 +365,27 @@ enc_main(int argc, char **argv) | |||
365 | exit(1); | 365 | exit(1); |
366 | } | 366 | } |
367 | 367 | ||
368 | memset(&enc_config, 0, sizeof(enc_config)); | 368 | memset(&cfg, 0, sizeof(cfg)); |
369 | enc_config.enc = 1; | 369 | cfg.enc = 1; |
370 | 370 | ||
371 | /* first check the program name */ | 371 | /* first check the program name */ |
372 | program_name(argv[0], pname, sizeof(pname)); | 372 | program_name(argv[0], pname, sizeof(pname)); |
373 | 373 | ||
374 | if (strcmp(pname, "base64") == 0) | 374 | if (strcmp(pname, "base64") == 0) |
375 | enc_config.base64 = 1; | 375 | cfg.base64 = 1; |
376 | 376 | ||
377 | #ifdef ZLIB | 377 | #ifdef ZLIB |
378 | if (strcmp(pname, "zlib") == 0) | 378 | if (strcmp(pname, "zlib") == 0) |
379 | enc_config.do_zlib = 1; | 379 | cfg.do_zlib = 1; |
380 | #endif | 380 | #endif |
381 | 381 | ||
382 | enc_config.cipher = EVP_get_cipherbyname(pname); | 382 | cfg.cipher = EVP_get_cipherbyname(pname); |
383 | 383 | ||
384 | #ifdef ZLIB | 384 | #ifdef ZLIB |
385 | if (!enc_config.do_zlib && !enc_config.base64 && | 385 | if (!cfg.do_zlib && !cfg.base64 && |
386 | enc_config.cipher == NULL && strcmp(pname, "enc") != 0) | 386 | cfg.cipher == NULL && strcmp(pname, "enc") != 0) |
387 | #else | 387 | #else |
388 | if (!enc_config.base64 && enc_config.cipher == NULL && | 388 | if (!cfg.base64 && cfg.cipher == NULL && |
389 | strcmp(pname, "enc") != 0) | 389 | strcmp(pname, "enc") != 0) |
390 | #endif | 390 | #endif |
391 | { | 391 | { |
@@ -398,20 +398,20 @@ enc_main(int argc, char **argv) | |||
398 | goto end; | 398 | goto end; |
399 | } | 399 | } |
400 | 400 | ||
401 | if (enc_config.keyfile != NULL) { | 401 | if (cfg.keyfile != NULL) { |
402 | static char buf[128]; | 402 | static char buf[128]; |
403 | FILE *infile; | 403 | FILE *infile; |
404 | 404 | ||
405 | infile = fopen(enc_config.keyfile, "r"); | 405 | infile = fopen(cfg.keyfile, "r"); |
406 | if (infile == NULL) { | 406 | if (infile == NULL) { |
407 | BIO_printf(bio_err, "unable to read key from '%s'\n", | 407 | BIO_printf(bio_err, "unable to read key from '%s'\n", |
408 | enc_config.keyfile); | 408 | cfg.keyfile); |
409 | goto end; | 409 | goto end; |
410 | } | 410 | } |
411 | buf[0] = '\0'; | 411 | buf[0] = '\0'; |
412 | if (!fgets(buf, sizeof buf, infile)) { | 412 | if (!fgets(buf, sizeof buf, infile)) { |
413 | BIO_printf(bio_err, "unable to read key from '%s'\n", | 413 | BIO_printf(bio_err, "unable to read key from '%s'\n", |
414 | enc_config.keyfile); | 414 | cfg.keyfile); |
415 | fclose(infile); | 415 | fclose(infile); |
416 | goto end; | 416 | goto end; |
417 | } | 417 | } |
@@ -425,34 +425,34 @@ enc_main(int argc, char **argv) | |||
425 | BIO_printf(bio_err, "zero length password\n"); | 425 | BIO_printf(bio_err, "zero length password\n"); |
426 | goto end; | 426 | goto end; |
427 | } | 427 | } |
428 | enc_config.keystr = buf; | 428 | cfg.keystr = buf; |
429 | } | 429 | } |
430 | 430 | ||
431 | if (enc_config.cipher != NULL && | 431 | if (cfg.cipher != NULL && |
432 | (EVP_CIPHER_flags(enc_config.cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) != 0) { | 432 | (EVP_CIPHER_flags(cfg.cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) != 0) { |
433 | BIO_printf(bio_err, "enc does not support AEAD ciphers\n"); | 433 | BIO_printf(bio_err, "enc does not support AEAD ciphers\n"); |
434 | goto end; | 434 | goto end; |
435 | } | 435 | } |
436 | 436 | ||
437 | if (enc_config.cipher != NULL && | 437 | if (cfg.cipher != NULL && |
438 | EVP_CIPHER_mode(enc_config.cipher) == EVP_CIPH_XTS_MODE) { | 438 | EVP_CIPHER_mode(cfg.cipher) == EVP_CIPH_XTS_MODE) { |
439 | BIO_printf(bio_err, "enc does not support XTS mode\n"); | 439 | BIO_printf(bio_err, "enc does not support XTS mode\n"); |
440 | goto end; | 440 | goto end; |
441 | } | 441 | } |
442 | 442 | ||
443 | if (enc_config.md != NULL && | 443 | if (cfg.md != NULL && |
444 | (dgst = EVP_get_digestbyname(enc_config.md)) == NULL) { | 444 | (dgst = EVP_get_digestbyname(cfg.md)) == NULL) { |
445 | BIO_printf(bio_err, | 445 | BIO_printf(bio_err, |
446 | "%s is an unsupported message digest type\n", | 446 | "%s is an unsupported message digest type\n", |
447 | enc_config.md); | 447 | cfg.md); |
448 | goto end; | 448 | goto end; |
449 | } | 449 | } |
450 | if (dgst == NULL) { | 450 | if (dgst == NULL) { |
451 | dgst = EVP_sha256(); | 451 | dgst = EVP_sha256(); |
452 | } | 452 | } |
453 | 453 | ||
454 | if (enc_config.bufsize != NULL) { | 454 | if (cfg.bufsize != NULL) { |
455 | char *p = enc_config.bufsize; | 455 | char *p = cfg.bufsize; |
456 | unsigned long n; | 456 | unsigned long n; |
457 | 457 | ||
458 | /* XXX - provide an OPTION_ARG_DISKUNIT. */ | 458 | /* XXX - provide an OPTION_ARG_DISKUNIT. */ |
@@ -471,11 +471,11 @@ enc_main(int argc, char **argv) | |||
471 | goto end; | 471 | goto end; |
472 | } | 472 | } |
473 | /* It must be large enough for a base64 encoded line. */ | 473 | /* It must be large enough for a base64 encoded line. */ |
474 | if (enc_config.base64 && n < 80) | 474 | if (cfg.base64 && n < 80) |
475 | n = 80; | 475 | n = 80; |
476 | 476 | ||
477 | bsize = (int)n; | 477 | bsize = (int)n; |
478 | if (enc_config.verbose) | 478 | if (cfg.verbose) |
479 | BIO_printf(bio_err, "bufsize=%d\n", bsize); | 479 | BIO_printf(bio_err, "bufsize=%d\n", bsize); |
480 | } | 480 | } |
481 | strbuf = malloc(SIZE); | 481 | strbuf = malloc(SIZE); |
@@ -490,41 +490,41 @@ enc_main(int argc, char **argv) | |||
490 | ERR_print_errors(bio_err); | 490 | ERR_print_errors(bio_err); |
491 | goto end; | 491 | goto end; |
492 | } | 492 | } |
493 | if (enc_config.debug) { | 493 | if (cfg.debug) { |
494 | BIO_set_callback(in, BIO_debug_callback); | 494 | BIO_set_callback(in, BIO_debug_callback); |
495 | BIO_set_callback(out, BIO_debug_callback); | 495 | BIO_set_callback(out, BIO_debug_callback); |
496 | BIO_set_callback_arg(in, (char *) bio_err); | 496 | BIO_set_callback_arg(in, (char *) bio_err); |
497 | BIO_set_callback_arg(out, (char *) bio_err); | 497 | BIO_set_callback_arg(out, (char *) bio_err); |
498 | } | 498 | } |
499 | if (enc_config.inf == NULL) { | 499 | if (cfg.inf == NULL) { |
500 | if (enc_config.bufsize != NULL) | 500 | if (cfg.bufsize != NULL) |
501 | setvbuf(stdin, (char *) NULL, _IONBF, 0); | 501 | setvbuf(stdin, (char *) NULL, _IONBF, 0); |
502 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 502 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
503 | } else { | 503 | } else { |
504 | if (BIO_read_filename(in, enc_config.inf) <= 0) { | 504 | if (BIO_read_filename(in, cfg.inf) <= 0) { |
505 | perror(enc_config.inf); | 505 | perror(cfg.inf); |
506 | goto end; | 506 | goto end; |
507 | } | 507 | } |
508 | } | 508 | } |
509 | 509 | ||
510 | if (!enc_config.keystr && enc_config.passarg) { | 510 | if (!cfg.keystr && cfg.passarg) { |
511 | if (!app_passwd(bio_err, enc_config.passarg, NULL, | 511 | if (!app_passwd(bio_err, cfg.passarg, NULL, |
512 | &pass, NULL)) { | 512 | &pass, NULL)) { |
513 | BIO_printf(bio_err, "Error getting password\n"); | 513 | BIO_printf(bio_err, "Error getting password\n"); |
514 | goto end; | 514 | goto end; |
515 | } | 515 | } |
516 | enc_config.keystr = pass; | 516 | cfg.keystr = pass; |
517 | } | 517 | } |
518 | if (enc_config.keystr == NULL && enc_config.cipher != NULL && | 518 | if (cfg.keystr == NULL && cfg.cipher != NULL && |
519 | enc_config.hkey == NULL) { | 519 | cfg.hkey == NULL) { |
520 | for (;;) { | 520 | for (;;) { |
521 | char buf[200]; | 521 | char buf[200]; |
522 | int retval; | 522 | int retval; |
523 | 523 | ||
524 | retval = snprintf(buf, sizeof buf, | 524 | retval = snprintf(buf, sizeof buf, |
525 | "enter %s %s password:", | 525 | "enter %s %s password:", |
526 | OBJ_nid2ln(EVP_CIPHER_nid(enc_config.cipher)), | 526 | OBJ_nid2ln(EVP_CIPHER_nid(cfg.cipher)), |
527 | enc_config.enc ? "encryption" : "decryption"); | 527 | cfg.enc ? "encryption" : "decryption"); |
528 | if ((size_t)retval >= sizeof buf) { | 528 | if ((size_t)retval >= sizeof buf) { |
529 | BIO_printf(bio_err, | 529 | BIO_printf(bio_err, |
530 | "Password prompt too long\n"); | 530 | "Password prompt too long\n"); |
@@ -532,13 +532,13 @@ enc_main(int argc, char **argv) | |||
532 | } | 532 | } |
533 | strbuf[0] = '\0'; | 533 | strbuf[0] = '\0'; |
534 | i = EVP_read_pw_string((char *)strbuf, SIZE, buf, | 534 | i = EVP_read_pw_string((char *)strbuf, SIZE, buf, |
535 | enc_config.enc); | 535 | cfg.enc); |
536 | if (i == 0) { | 536 | if (i == 0) { |
537 | if (strbuf[0] == '\0') { | 537 | if (strbuf[0] == '\0') { |
538 | ret = 1; | 538 | ret = 1; |
539 | goto end; | 539 | goto end; |
540 | } | 540 | } |
541 | enc_config.keystr = strbuf; | 541 | cfg.keystr = strbuf; |
542 | break; | 542 | break; |
543 | } | 543 | } |
544 | if (i < 0) { | 544 | if (i < 0) { |
@@ -547,13 +547,13 @@ enc_main(int argc, char **argv) | |||
547 | } | 547 | } |
548 | } | 548 | } |
549 | } | 549 | } |
550 | if (enc_config.outf == NULL) { | 550 | if (cfg.outf == NULL) { |
551 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 551 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
552 | if (enc_config.bufsize != NULL) | 552 | if (cfg.bufsize != NULL) |
553 | setvbuf(stdout, (char *)NULL, _IONBF, 0); | 553 | setvbuf(stdout, (char *)NULL, _IONBF, 0); |
554 | } else { | 554 | } else { |
555 | if (BIO_write_filename(out, enc_config.outf) <= 0) { | 555 | if (BIO_write_filename(out, cfg.outf) <= 0) { |
556 | perror(enc_config.outf); | 556 | perror(cfg.outf); |
557 | goto end; | 557 | goto end; |
558 | } | 558 | } |
559 | } | 559 | } |
@@ -572,38 +572,38 @@ enc_main(int argc, char **argv) | |||
572 | } | 572 | } |
573 | #endif | 573 | #endif |
574 | 574 | ||
575 | if (enc_config.base64) { | 575 | if (cfg.base64) { |
576 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) | 576 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) |
577 | goto end; | 577 | goto end; |
578 | if (enc_config.debug) { | 578 | if (cfg.debug) { |
579 | BIO_set_callback(b64, BIO_debug_callback); | 579 | BIO_set_callback(b64, BIO_debug_callback); |
580 | BIO_set_callback_arg(b64, (char *) bio_err); | 580 | BIO_set_callback_arg(b64, (char *) bio_err); |
581 | } | 581 | } |
582 | if (enc_config.olb64) | 582 | if (cfg.olb64) |
583 | BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); | 583 | BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); |
584 | if (enc_config.enc) | 584 | if (cfg.enc) |
585 | wbio = BIO_push(b64, wbio); | 585 | wbio = BIO_push(b64, wbio); |
586 | else | 586 | else |
587 | rbio = BIO_push(b64, rbio); | 587 | rbio = BIO_push(b64, rbio); |
588 | } | 588 | } |
589 | if (enc_config.cipher != NULL) { | 589 | if (cfg.cipher != NULL) { |
590 | /* | 590 | /* |
591 | * Note that keystr is NULL if a key was passed on the command | 591 | * Note that keystr is NULL if a key was passed on the command |
592 | * line, so we get no salt in that case. Is this a bug? | 592 | * line, so we get no salt in that case. Is this a bug? |
593 | */ | 593 | */ |
594 | if (enc_config.keystr != NULL) { | 594 | if (cfg.keystr != NULL) { |
595 | /* | 595 | /* |
596 | * Salt handling: if encrypting generate a salt and | 596 | * Salt handling: if encrypting generate a salt and |
597 | * write to output BIO. If decrypting read salt from | 597 | * write to output BIO. If decrypting read salt from |
598 | * input BIO. | 598 | * input BIO. |
599 | */ | 599 | */ |
600 | unsigned char *sptr; | 600 | unsigned char *sptr; |
601 | if (enc_config.nosalt) | 601 | if (cfg.nosalt) |
602 | sptr = NULL; | 602 | sptr = NULL; |
603 | else { | 603 | else { |
604 | if (enc_config.enc) { | 604 | if (cfg.enc) { |
605 | if (enc_config.hsalt) { | 605 | if (cfg.hsalt) { |
606 | if (!set_hex(enc_config.hsalt, salt, sizeof salt)) { | 606 | if (!set_hex(cfg.hsalt, salt, sizeof salt)) { |
607 | BIO_printf(bio_err, | 607 | BIO_printf(bio_err, |
608 | "invalid hex salt value\n"); | 608 | "invalid hex salt value\n"); |
609 | goto end; | 609 | goto end; |
@@ -615,7 +615,7 @@ enc_main(int argc, char **argv) | |||
615 | * If -P option then don't bother | 615 | * If -P option then don't bother |
616 | * writing | 616 | * writing |
617 | */ | 617 | */ |
618 | if ((enc_config.printkey != 2) | 618 | if ((cfg.printkey != 2) |
619 | && (BIO_write(wbio, magic, | 619 | && (BIO_write(wbio, magic, |
620 | sizeof magic - 1) != sizeof magic - 1 | 620 | sizeof magic - 1) != sizeof magic - 1 |
621 | || BIO_write(wbio, | 621 | || BIO_write(wbio, |
@@ -636,23 +636,23 @@ enc_main(int argc, char **argv) | |||
636 | } | 636 | } |
637 | sptr = salt; | 637 | sptr = salt; |
638 | } | 638 | } |
639 | if (enc_config.pbkdf2 == 1 || enc_config.iter > 0) { | 639 | if (cfg.pbkdf2 == 1 || cfg.iter > 0) { |
640 | /* | 640 | /* |
641 | * derive key and default iv | 641 | * derive key and default iv |
642 | * concatenated into a temporary buffer | 642 | * concatenated into a temporary buffer |
643 | */ | 643 | */ |
644 | unsigned char tmpkeyiv[EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH]; | 644 | unsigned char tmpkeyiv[EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH]; |
645 | int iklen = EVP_CIPHER_key_length(enc_config.cipher); | 645 | int iklen = EVP_CIPHER_key_length(cfg.cipher); |
646 | int ivlen = EVP_CIPHER_iv_length(enc_config.cipher); | 646 | int ivlen = EVP_CIPHER_iv_length(cfg.cipher); |
647 | /* not needed if HASH_UPDATE() is fixed : */ | 647 | /* not needed if HASH_UPDATE() is fixed : */ |
648 | int islen = (sptr != NULL ? sizeof(salt) : 0); | 648 | int islen = (sptr != NULL ? sizeof(salt) : 0); |
649 | 649 | ||
650 | if (enc_config.iter == 0) | 650 | if (cfg.iter == 0) |
651 | enc_config.iter = 10000; | 651 | cfg.iter = 10000; |
652 | 652 | ||
653 | if (!PKCS5_PBKDF2_HMAC(enc_config.keystr, | 653 | if (!PKCS5_PBKDF2_HMAC(cfg.keystr, |
654 | strlen(enc_config.keystr), sptr, islen, | 654 | strlen(cfg.keystr), sptr, islen, |
655 | enc_config.iter, dgst, iklen+ivlen, tmpkeyiv)) { | 655 | cfg.iter, dgst, iklen+ivlen, tmpkeyiv)) { |
656 | BIO_printf(bio_err, "PKCS5_PBKDF2_HMAC failed\n"); | 656 | BIO_printf(bio_err, "PKCS5_PBKDF2_HMAC failed\n"); |
657 | goto end; | 657 | goto end; |
658 | } | 658 | } |
@@ -661,9 +661,9 @@ enc_main(int argc, char **argv) | |||
661 | memcpy(iv, tmpkeyiv + iklen, ivlen); | 661 | memcpy(iv, tmpkeyiv + iklen, ivlen); |
662 | explicit_bzero(tmpkeyiv, sizeof tmpkeyiv); | 662 | explicit_bzero(tmpkeyiv, sizeof tmpkeyiv); |
663 | } else { | 663 | } else { |
664 | EVP_BytesToKey(enc_config.cipher, dgst, sptr, | 664 | EVP_BytesToKey(cfg.cipher, dgst, sptr, |
665 | (unsigned char *)enc_config.keystr, | 665 | (unsigned char *)cfg.keystr, |
666 | strlen(enc_config.keystr), 1, key, iv); | 666 | strlen(cfg.keystr), 1, key, iv); |
667 | } | 667 | } |
668 | 668 | ||
669 | /* | 669 | /* |
@@ -671,19 +671,19 @@ enc_main(int argc, char **argv) | |||
671 | * the command line bug picked up by Larry J. Hughes | 671 | * the command line bug picked up by Larry J. Hughes |
672 | * Jr. <hughes@indiana.edu> | 672 | * Jr. <hughes@indiana.edu> |
673 | */ | 673 | */ |
674 | if (enc_config.keystr == strbuf) | 674 | if (cfg.keystr == strbuf) |
675 | explicit_bzero(enc_config.keystr, SIZE); | 675 | explicit_bzero(cfg.keystr, SIZE); |
676 | else | 676 | else |
677 | explicit_bzero(enc_config.keystr, | 677 | explicit_bzero(cfg.keystr, |
678 | strlen(enc_config.keystr)); | 678 | strlen(cfg.keystr)); |
679 | } | 679 | } |
680 | if (enc_config.hiv != NULL && | 680 | if (cfg.hiv != NULL && |
681 | !set_hex(enc_config.hiv, iv, sizeof iv)) { | 681 | !set_hex(cfg.hiv, iv, sizeof iv)) { |
682 | BIO_printf(bio_err, "invalid hex iv value\n"); | 682 | BIO_printf(bio_err, "invalid hex iv value\n"); |
683 | goto end; | 683 | goto end; |
684 | } | 684 | } |
685 | if (enc_config.hiv == NULL && enc_config.keystr == NULL && | 685 | if (cfg.hiv == NULL && cfg.keystr == NULL && |
686 | EVP_CIPHER_iv_length(enc_config.cipher) != 0) { | 686 | EVP_CIPHER_iv_length(cfg.cipher) != 0) { |
687 | /* | 687 | /* |
688 | * No IV was explicitly set and no IV was generated | 688 | * No IV was explicitly set and no IV was generated |
689 | * during EVP_BytesToKey. Hence the IV is undefined, | 689 | * during EVP_BytesToKey. Hence the IV is undefined, |
@@ -692,8 +692,8 @@ enc_main(int argc, char **argv) | |||
692 | BIO_printf(bio_err, "iv undefined\n"); | 692 | BIO_printf(bio_err, "iv undefined\n"); |
693 | goto end; | 693 | goto end; |
694 | } | 694 | } |
695 | if (enc_config.hkey != NULL && | 695 | if (cfg.hkey != NULL && |
696 | !set_hex(enc_config.hkey, key, sizeof key)) { | 696 | !set_hex(cfg.hkey, key, sizeof key)) { |
697 | BIO_printf(bio_err, "invalid hex key value\n"); | 697 | BIO_printf(bio_err, "invalid hex key value\n"); |
698 | goto end; | 698 | goto end; |
699 | } | 699 | } |
@@ -707,51 +707,51 @@ enc_main(int argc, char **argv) | |||
707 | 707 | ||
708 | BIO_get_cipher_ctx(benc, &ctx); | 708 | BIO_get_cipher_ctx(benc, &ctx); |
709 | 709 | ||
710 | if (!EVP_CipherInit_ex(ctx, enc_config.cipher, NULL, NULL, | 710 | if (!EVP_CipherInit_ex(ctx, cfg.cipher, NULL, NULL, |
711 | NULL, enc_config.enc)) { | 711 | NULL, cfg.enc)) { |
712 | BIO_printf(bio_err, "Error setting cipher %s\n", | 712 | BIO_printf(bio_err, "Error setting cipher %s\n", |
713 | EVP_CIPHER_name(enc_config.cipher)); | 713 | EVP_CIPHER_name(cfg.cipher)); |
714 | ERR_print_errors(bio_err); | 714 | ERR_print_errors(bio_err); |
715 | goto end; | 715 | goto end; |
716 | } | 716 | } |
717 | if (enc_config.nopad) | 717 | if (cfg.nopad) |
718 | EVP_CIPHER_CTX_set_padding(ctx, 0); | 718 | EVP_CIPHER_CTX_set_padding(ctx, 0); |
719 | 719 | ||
720 | if (!EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, | 720 | if (!EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, |
721 | enc_config.enc)) { | 721 | cfg.enc)) { |
722 | BIO_printf(bio_err, "Error setting cipher %s\n", | 722 | BIO_printf(bio_err, "Error setting cipher %s\n", |
723 | EVP_CIPHER_name(enc_config.cipher)); | 723 | EVP_CIPHER_name(cfg.cipher)); |
724 | ERR_print_errors(bio_err); | 724 | ERR_print_errors(bio_err); |
725 | goto end; | 725 | goto end; |
726 | } | 726 | } |
727 | if (enc_config.debug) { | 727 | if (cfg.debug) { |
728 | BIO_set_callback(benc, BIO_debug_callback); | 728 | BIO_set_callback(benc, BIO_debug_callback); |
729 | BIO_set_callback_arg(benc, (char *) bio_err); | 729 | BIO_set_callback_arg(benc, (char *) bio_err); |
730 | } | 730 | } |
731 | if (enc_config.printkey) { | 731 | if (cfg.printkey) { |
732 | int key_len, iv_len; | 732 | int key_len, iv_len; |
733 | 733 | ||
734 | if (!enc_config.nosalt) { | 734 | if (!cfg.nosalt) { |
735 | printf("salt="); | 735 | printf("salt="); |
736 | for (i = 0; i < (int) sizeof(salt); i++) | 736 | for (i = 0; i < (int) sizeof(salt); i++) |
737 | printf("%02X", salt[i]); | 737 | printf("%02X", salt[i]); |
738 | printf("\n"); | 738 | printf("\n"); |
739 | } | 739 | } |
740 | key_len = EVP_CIPHER_key_length(enc_config.cipher); | 740 | key_len = EVP_CIPHER_key_length(cfg.cipher); |
741 | if (key_len > 0) { | 741 | if (key_len > 0) { |
742 | printf("key="); | 742 | printf("key="); |
743 | for (i = 0; i < key_len; i++) | 743 | for (i = 0; i < key_len; i++) |
744 | printf("%02X", key[i]); | 744 | printf("%02X", key[i]); |
745 | printf("\n"); | 745 | printf("\n"); |
746 | } | 746 | } |
747 | iv_len = EVP_CIPHER_iv_length(enc_config.cipher); | 747 | iv_len = EVP_CIPHER_iv_length(cfg.cipher); |
748 | if (iv_len > 0) { | 748 | if (iv_len > 0) { |
749 | printf("iv ="); | 749 | printf("iv ="); |
750 | for (i = 0; i < iv_len; i++) | 750 | for (i = 0; i < iv_len; i++) |
751 | printf("%02X", iv[i]); | 751 | printf("%02X", iv[i]); |
752 | printf("\n"); | 752 | printf("\n"); |
753 | } | 753 | } |
754 | if (enc_config.printkey == 2) { | 754 | if (cfg.printkey == 2) { |
755 | ret = 0; | 755 | ret = 0; |
756 | goto end; | 756 | goto end; |
757 | } | 757 | } |
@@ -775,7 +775,7 @@ enc_main(int argc, char **argv) | |||
775 | goto end; | 775 | goto end; |
776 | } | 776 | } |
777 | ret = 0; | 777 | ret = 0; |
778 | if (enc_config.verbose) { | 778 | if (cfg.verbose) { |
779 | BIO_printf(bio_err, "bytes read :%8ld\n", BIO_number_read(in)); | 779 | BIO_printf(bio_err, "bytes read :%8ld\n", BIO_number_read(in)); |
780 | BIO_printf(bio_err, "bytes written:%8ld\n", BIO_number_written(out)); | 780 | BIO_printf(bio_err, "bytes written:%8ld\n", BIO_number_written(out)); |
781 | } | 781 | } |