diff options
Diffstat (limited to 'src/lib/libssl/src/apps/dsa.c')
| -rw-r--r-- | src/lib/libssl/src/apps/dsa.c | 329 |
1 files changed, 157 insertions, 172 deletions
diff --git a/src/lib/libssl/src/apps/dsa.c b/src/lib/libssl/src/apps/dsa.c index 45bac4a9d1..b2c58d03c1 100644 --- a/src/lib/libssl/src/apps/dsa.c +++ b/src/lib/libssl/src/apps/dsa.c | |||
| @@ -5,21 +5,21 @@ | |||
| 5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
| 6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
| 7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
| 8 | * | 8 | * |
| 9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
| 10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
| 11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
| 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
| 13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
| 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
| 15 | * | 15 | * |
| 16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
| 17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
| 18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
| 19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
| 20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
| 21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
| 22 | * | 22 | * |
| 23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
| 24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
| 25 | * are met: | 25 | * are met: |
| @@ -34,10 +34,10 @@ | |||
| 34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
| 35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
| 36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
| 37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
| 38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
| 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
| 40 | * | 40 | * |
| 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
| 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| @@ -49,7 +49,7 @@ | |||
| 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| 51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
| 52 | * | 52 | * |
| 53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
| 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
| 55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
| @@ -94,240 +94,227 @@ | |||
| 94 | 94 | ||
| 95 | int MAIN(int, char **); | 95 | int MAIN(int, char **); |
| 96 | 96 | ||
| 97 | int MAIN(int argc, char **argv) | 97 | int |
| 98 | { | 98 | MAIN(int argc, char **argv) |
| 99 | { | ||
| 99 | ENGINE *e = NULL; | 100 | ENGINE *e = NULL; |
| 100 | int ret=1; | 101 | int ret = 1; |
| 101 | DSA *dsa=NULL; | 102 | DSA *dsa = NULL; |
| 102 | int i,badops=0; | 103 | int i, badops = 0; |
| 103 | const EVP_CIPHER *enc=NULL; | 104 | const EVP_CIPHER *enc = NULL; |
| 104 | BIO *in=NULL,*out=NULL; | 105 | BIO *in = NULL, *out = NULL; |
| 105 | int informat,outformat,text=0,noout=0; | 106 | int informat, outformat, text = 0, noout = 0; |
| 106 | int pubin = 0, pubout = 0; | 107 | int pubin = 0, pubout = 0; |
| 107 | char *infile,*outfile,*prog; | 108 | char *infile, *outfile, *prog; |
| 108 | #ifndef OPENSSL_NO_ENGINE | 109 | #ifndef OPENSSL_NO_ENGINE |
| 109 | char *engine; | 110 | char *engine; |
| 110 | #endif | 111 | #endif |
| 111 | char *passargin = NULL, *passargout = NULL; | 112 | char *passargin = NULL, *passargout = NULL; |
| 112 | char *passin = NULL, *passout = NULL; | 113 | char *passin = NULL, *passout = NULL; |
| 113 | int modulus=0; | 114 | int modulus = 0; |
| 114 | 115 | ||
| 115 | int pvk_encr = 2; | 116 | int pvk_encr = 2; |
| 116 | 117 | ||
| 117 | apps_startup(); | 118 | apps_startup(); |
| 118 | 119 | ||
| 119 | if (bio_err == NULL) | 120 | if (bio_err == NULL) |
| 120 | if ((bio_err=BIO_new(BIO_s_file())) != NULL) | 121 | if ((bio_err = BIO_new(BIO_s_file())) != NULL) |
| 121 | BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); | 122 | BIO_set_fp(bio_err, stderr, BIO_NOCLOSE|BIO_FP_TEXT); |
| 122 | 123 | ||
| 123 | if (!load_config(bio_err, NULL)) | 124 | if (!load_config(bio_err, NULL)) |
| 124 | goto end; | 125 | goto end; |
| 125 | 126 | ||
| 126 | #ifndef OPENSSL_NO_ENGINE | 127 | #ifndef OPENSSL_NO_ENGINE |
| 127 | engine=NULL; | 128 | engine = NULL; |
| 128 | #endif | 129 | #endif |
| 129 | infile=NULL; | 130 | infile = NULL; |
| 130 | outfile=NULL; | 131 | outfile = NULL; |
| 131 | informat=FORMAT_PEM; | 132 | informat = FORMAT_PEM; |
| 132 | outformat=FORMAT_PEM; | 133 | outformat = FORMAT_PEM; |
| 133 | 134 | ||
| 134 | prog=argv[0]; | 135 | prog = argv[0]; |
| 135 | argc--; | 136 | argc--; |
| 136 | argv++; | 137 | argv++; |
| 137 | while (argc >= 1) | 138 | while (argc >= 1) { |
| 138 | { | 139 | if (strcmp(*argv, "-inform") == 0) { |
| 139 | if (strcmp(*argv,"-inform") == 0) | 140 | if (--argc < 1) |
| 140 | { | 141 | goto bad; |
| 141 | if (--argc < 1) goto bad; | 142 | informat = str2fmt(*(++argv)); |
| 142 | informat=str2fmt(*(++argv)); | 143 | } else if (strcmp(*argv, "-outform") == 0) { |
| 143 | } | 144 | if (--argc < 1) |
| 144 | else if (strcmp(*argv,"-outform") == 0) | 145 | goto bad; |
| 145 | { | 146 | outformat = str2fmt(*(++argv)); |
| 146 | if (--argc < 1) goto bad; | 147 | } else if (strcmp(*argv, "-in") == 0) { |
| 147 | outformat=str2fmt(*(++argv)); | 148 | if (--argc < 1) |
| 148 | } | 149 | goto bad; |
| 149 | else if (strcmp(*argv,"-in") == 0) | ||
| 150 | { | ||
| 151 | if (--argc < 1) goto bad; | ||
| 152 | infile= *(++argv); | 150 | infile= *(++argv); |
| 153 | } | 151 | } |
| 154 | else if (strcmp(*argv,"-out") == 0) | 152 | else if (strcmp(*argv, "-out") == 0) { |
| 155 | { | 153 | if (--argc < 1) |
| 156 | if (--argc < 1) goto bad; | 154 | goto bad; |
| 157 | outfile= *(++argv); | 155 | outfile= *(++argv); |
| 158 | } | 156 | } else if (strcmp(*argv, "-passin") == 0) { |
| 159 | else if (strcmp(*argv,"-passin") == 0) | 157 | if (--argc < 1) |
| 160 | { | 158 | goto bad; |
| 161 | if (--argc < 1) goto bad; | ||
| 162 | passargin= *(++argv); | 159 | passargin= *(++argv); |
| 163 | } | 160 | } else if (strcmp(*argv, "-passout") == 0) { |
| 164 | else if (strcmp(*argv,"-passout") == 0) | 161 | if (--argc < 1) |
| 165 | { | 162 | goto bad; |
| 166 | if (--argc < 1) goto bad; | ||
| 167 | passargout= *(++argv); | 163 | passargout= *(++argv); |
| 168 | } | 164 | } |
| 169 | #ifndef OPENSSL_NO_ENGINE | 165 | #ifndef OPENSSL_NO_ENGINE |
| 170 | else if (strcmp(*argv,"-engine") == 0) | 166 | else if (strcmp(*argv, "-engine") == 0) { |
| 171 | { | 167 | if (--argc < 1) |
| 172 | if (--argc < 1) goto bad; | 168 | goto bad; |
| 173 | engine= *(++argv); | 169 | engine= *(++argv); |
| 174 | } | 170 | } |
| 175 | #endif | 171 | #endif |
| 176 | else if (strcmp(*argv,"-pvk-strong") == 0) | 172 | else if (strcmp(*argv, "-pvk-strong") == 0) |
| 177 | pvk_encr=2; | 173 | pvk_encr = 2; |
| 178 | else if (strcmp(*argv,"-pvk-weak") == 0) | 174 | else if (strcmp(*argv, "-pvk-weak") == 0) |
| 179 | pvk_encr=1; | 175 | pvk_encr = 1; |
| 180 | else if (strcmp(*argv,"-pvk-none") == 0) | 176 | else if (strcmp(*argv, "-pvk-none") == 0) |
| 181 | pvk_encr=0; | 177 | pvk_encr = 0; |
| 182 | else if (strcmp(*argv,"-noout") == 0) | 178 | else if (strcmp(*argv, "-noout") == 0) |
| 183 | noout=1; | 179 | noout = 1; |
| 184 | else if (strcmp(*argv,"-text") == 0) | 180 | else if (strcmp(*argv, "-text") == 0) |
| 185 | text=1; | 181 | text = 1; |
| 186 | else if (strcmp(*argv,"-modulus") == 0) | 182 | else if (strcmp(*argv, "-modulus") == 0) |
| 187 | modulus=1; | 183 | modulus = 1; |
| 188 | else if (strcmp(*argv,"-pubin") == 0) | 184 | else if (strcmp(*argv, "-pubin") == 0) |
| 189 | pubin=1; | 185 | pubin = 1; |
| 190 | else if (strcmp(*argv,"-pubout") == 0) | 186 | else if (strcmp(*argv, "-pubout") == 0) |
| 191 | pubout=1; | 187 | pubout = 1; |
| 192 | else if ((enc=EVP_get_cipherbyname(&(argv[0][1]))) == NULL) | 188 | else if ((enc = EVP_get_cipherbyname(&(argv[0][1]))) == NULL) { |
| 193 | { | 189 | BIO_printf(bio_err, "unknown option %s\n", *argv); |
| 194 | BIO_printf(bio_err,"unknown option %s\n",*argv); | 190 | badops = 1; |
| 195 | badops=1; | ||
| 196 | break; | 191 | break; |
| 197 | } | 192 | } |
| 198 | argc--; | 193 | argc--; |
| 199 | argv++; | 194 | argv++; |
| 200 | } | 195 | } |
| 201 | 196 | ||
| 202 | if (badops) | 197 | if (badops) { |
| 203 | { | ||
| 204 | bad: | 198 | bad: |
| 205 | BIO_printf(bio_err,"%s [options] <infile >outfile\n",prog); | 199 | BIO_printf(bio_err, "%s [options] <infile >outfile\n", prog); |
| 206 | BIO_printf(bio_err,"where options are\n"); | 200 | BIO_printf(bio_err, "where options are\n"); |
| 207 | BIO_printf(bio_err," -inform arg input format - DER or PEM\n"); | 201 | BIO_printf(bio_err, " -inform arg input format - DER or PEM\n"); |
| 208 | BIO_printf(bio_err," -outform arg output format - DER or PEM\n"); | 202 | BIO_printf(bio_err, " -outform arg output format - DER or PEM\n"); |
| 209 | BIO_printf(bio_err," -in arg input file\n"); | 203 | BIO_printf(bio_err, " -in arg input file\n"); |
| 210 | BIO_printf(bio_err," -passin arg input file pass phrase source\n"); | 204 | BIO_printf(bio_err, " -passin arg input file pass phrase source\n"); |
| 211 | BIO_printf(bio_err," -out arg output file\n"); | 205 | BIO_printf(bio_err, " -out arg output file\n"); |
| 212 | BIO_printf(bio_err," -passout arg output file pass phrase source\n"); | 206 | BIO_printf(bio_err, " -passout arg output file pass phrase source\n"); |
| 213 | #ifndef OPENSSL_NO_ENGINE | 207 | #ifndef OPENSSL_NO_ENGINE |
| 214 | BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n"); | 208 | BIO_printf(bio_err, " -engine e use engine e, possibly a hardware device.\n"); |
| 215 | #endif | 209 | #endif |
| 216 | BIO_printf(bio_err," -des encrypt PEM output with cbc des\n"); | 210 | BIO_printf(bio_err, " -des encrypt PEM output with cbc des\n"); |
| 217 | BIO_printf(bio_err," -des3 encrypt PEM output with ede cbc des using 168 bit key\n"); | 211 | BIO_printf(bio_err, " -des3 encrypt PEM output with ede cbc des using 168 bit key\n"); |
| 218 | #ifndef OPENSSL_NO_IDEA | 212 | #ifndef OPENSSL_NO_IDEA |
| 219 | BIO_printf(bio_err," -idea encrypt PEM output with cbc idea\n"); | 213 | BIO_printf(bio_err, " -idea encrypt PEM output with cbc idea\n"); |
| 220 | #endif | 214 | #endif |
| 221 | #ifndef OPENSSL_NO_AES | 215 | #ifndef OPENSSL_NO_AES |
| 222 | BIO_printf(bio_err," -aes128, -aes192, -aes256\n"); | 216 | BIO_printf(bio_err, " -aes128, -aes192, -aes256\n"); |
| 223 | BIO_printf(bio_err," encrypt PEM output with cbc aes\n"); | 217 | BIO_printf(bio_err, " encrypt PEM output with cbc aes\n"); |
| 224 | #endif | 218 | #endif |
| 225 | #ifndef OPENSSL_NO_CAMELLIA | 219 | #ifndef OPENSSL_NO_CAMELLIA |
| 226 | BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n"); | 220 | BIO_printf(bio_err, " -camellia128, -camellia192, -camellia256\n"); |
| 227 | BIO_printf(bio_err," encrypt PEM output with cbc camellia\n"); | 221 | BIO_printf(bio_err, " encrypt PEM output with cbc camellia\n"); |
| 228 | #endif | 222 | #endif |
| 229 | #ifndef OPENSSL_NO_SEED | 223 | #ifndef OPENSSL_NO_SEED |
| 230 | BIO_printf(bio_err," -seed encrypt PEM output with cbc seed\n"); | 224 | BIO_printf(bio_err, " -seed encrypt PEM output with cbc seed\n"); |
| 231 | #endif | 225 | #endif |
| 232 | BIO_printf(bio_err," -text print the key in text\n"); | 226 | BIO_printf(bio_err, " -text print the key in text\n"); |
| 233 | BIO_printf(bio_err," -noout don't print key out\n"); | 227 | BIO_printf(bio_err, " -noout don't print key out\n"); |
| 234 | BIO_printf(bio_err," -modulus print the DSA public value\n"); | 228 | BIO_printf(bio_err, " -modulus print the DSA public value\n"); |
| 235 | goto end; | 229 | goto end; |
| 236 | } | 230 | } |
| 237 | 231 | ||
| 238 | ERR_load_crypto_strings(); | 232 | ERR_load_crypto_strings(); |
| 239 | 233 | ||
| 240 | #ifndef OPENSSL_NO_ENGINE | 234 | #ifndef OPENSSL_NO_ENGINE |
| 241 | e = setup_engine(bio_err, engine, 0); | 235 | e = setup_engine(bio_err, engine, 0); |
| 242 | #endif | 236 | #endif |
| 243 | 237 | ||
| 244 | if(!app_passwd(bio_err, passargin, passargout, &passin, &passout)) { | 238 | if (!app_passwd(bio_err, passargin, passargout, &passin, &passout)) { |
| 245 | BIO_printf(bio_err, "Error getting passwords\n"); | 239 | BIO_printf(bio_err, "Error getting passwords\n"); |
| 246 | goto end; | 240 | goto end; |
| 247 | } | 241 | } |
| 248 | 242 | ||
| 249 | in=BIO_new(BIO_s_file()); | 243 | in = BIO_new(BIO_s_file()); |
| 250 | out=BIO_new(BIO_s_file()); | 244 | out = BIO_new(BIO_s_file()); |
| 251 | if ((in == NULL) || (out == NULL)) | 245 | if ((in == NULL) || (out == NULL)) { |
| 252 | { | ||
| 253 | ERR_print_errors(bio_err); | 246 | ERR_print_errors(bio_err); |
| 254 | goto end; | 247 | goto end; |
| 255 | } | 248 | } |
| 256 | 249 | ||
| 257 | if (infile == NULL) | 250 | if (infile == NULL) |
| 258 | BIO_set_fp(in,stdin,BIO_NOCLOSE); | 251 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
| 259 | else | 252 | else { |
| 260 | { | 253 | if (BIO_read_filename(in, infile) <= 0) { |
| 261 | if (BIO_read_filename(in,infile) <= 0) | ||
| 262 | { | ||
| 263 | perror(infile); | 254 | perror(infile); |
| 264 | goto end; | 255 | goto end; |
| 265 | } | ||
| 266 | } | 256 | } |
| 257 | } | ||
| 267 | 258 | ||
| 268 | BIO_printf(bio_err,"read DSA key\n"); | 259 | BIO_printf(bio_err, "read DSA key\n"); |
| 269 | 260 | ||
| 270 | { | 261 | { |
| 271 | EVP_PKEY *pkey; | 262 | EVP_PKEY *pkey; |
| 272 | 263 | ||
| 273 | if (pubin) | 264 | if (pubin) |
| 274 | pkey = load_pubkey(bio_err, infile, informat, 1, | 265 | pkey = load_pubkey(bio_err, infile, informat, 1, |
| 275 | passin, e, "Public Key"); | 266 | passin, e, "Public Key"); |
| 276 | else | 267 | else |
| 277 | pkey = load_key(bio_err, infile, informat, 1, | 268 | pkey = load_key(bio_err, infile, informat, 1, |
| 278 | passin, e, "Private Key"); | 269 | passin, e, "Private Key"); |
| 279 | 270 | ||
| 280 | if (pkey) | 271 | if (pkey) { |
| 281 | { | ||
| 282 | dsa = EVP_PKEY_get1_DSA(pkey); | 272 | dsa = EVP_PKEY_get1_DSA(pkey); |
| 283 | EVP_PKEY_free(pkey); | 273 | EVP_PKEY_free(pkey); |
| 284 | } | ||
| 285 | } | 274 | } |
| 286 | if (dsa == NULL) | 275 | } |
| 287 | { | 276 | if (dsa == NULL) { |
| 288 | BIO_printf(bio_err,"unable to load Key\n"); | 277 | BIO_printf(bio_err, "unable to load Key\n"); |
| 289 | ERR_print_errors(bio_err); | 278 | ERR_print_errors(bio_err); |
| 290 | goto end; | 279 | goto end; |
| 291 | } | 280 | } |
| 292 | 281 | ||
| 293 | if (outfile == NULL) | 282 | if (outfile == NULL) { |
| 294 | { | 283 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
| 295 | BIO_set_fp(out,stdout,BIO_NOCLOSE); | 284 | } else { |
| 296 | } | 285 | if (BIO_write_filename(out, outfile) <= 0) { |
| 297 | else | ||
| 298 | { | ||
| 299 | if (BIO_write_filename(out,outfile) <= 0) | ||
| 300 | { | ||
| 301 | perror(outfile); | 286 | perror(outfile); |
| 302 | goto end; | 287 | goto end; |
| 303 | } | ||
| 304 | } | 288 | } |
| 289 | } | ||
| 305 | 290 | ||
| 306 | if (text) | 291 | if (text) |
| 307 | if (!DSA_print(out,dsa,0)) | 292 | if (!DSA_print(out, dsa, 0)) { |
| 308 | { | 293 | perror(outfile); |
| 309 | perror(outfile); | 294 | ERR_print_errors(bio_err); |
| 310 | ERR_print_errors(bio_err); | 295 | goto end; |
| 311 | goto end; | 296 | } |
| 312 | } | ||
| 313 | 297 | ||
| 314 | if (modulus) | 298 | if (modulus) { |
| 315 | { | 299 | fprintf(stdout, "Public Key="); |
| 316 | fprintf(stdout,"Public Key="); | 300 | BN_print(out, dsa->pub_key); |
| 317 | BN_print(out,dsa->pub_key); | 301 | fprintf(stdout, "\n"); |
| 318 | fprintf(stdout,"\n"); | 302 | } |
| 319 | } | ||
| 320 | 303 | ||
| 321 | if (noout) goto end; | 304 | if (noout) |
| 322 | BIO_printf(bio_err,"writing DSA key\n"); | 305 | goto end; |
| 323 | if (outformat == FORMAT_ASN1) { | 306 | BIO_printf(bio_err, "writing DSA key\n"); |
| 324 | if(pubin || pubout) i=i2d_DSA_PUBKEY_bio(out,dsa); | 307 | if (outformat == FORMAT_ASN1) { |
| 325 | else i=i2d_DSAPrivateKey_bio(out,dsa); | 308 | if (pubin || pubout) |
| 309 | i = i2d_DSA_PUBKEY_bio(out, dsa); | ||
| 310 | else | ||
| 311 | i = i2d_DSAPrivateKey_bio(out, dsa); | ||
| 326 | } else if (outformat == FORMAT_PEM) { | 312 | } else if (outformat == FORMAT_PEM) { |
| 327 | if(pubin || pubout) | 313 | if (pubin || pubout) |
| 328 | i=PEM_write_bio_DSA_PUBKEY(out,dsa); | 314 | i = PEM_write_bio_DSA_PUBKEY(out, dsa); |
| 329 | else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc, | 315 | else |
| 330 | NULL,0,NULL, passout); | 316 | i = PEM_write_bio_DSAPrivateKey(out, dsa, enc, |
| 317 | NULL, 0, NULL, passout); | ||
| 331 | #if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4) | 318 | #if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4) |
| 332 | } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) { | 319 | } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) { |
| 333 | EVP_PKEY *pk; | 320 | EVP_PKEY *pk; |
| @@ -342,29 +329,27 @@ bad: | |||
| 342 | EVP_PKEY_free(pk); | 329 | EVP_PKEY_free(pk); |
| 343 | #endif | 330 | #endif |
| 344 | } else { | 331 | } else { |
| 345 | BIO_printf(bio_err,"bad output format specified for outfile\n"); | 332 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
| 346 | goto end; | 333 | goto end; |
| 347 | } | 334 | } |
| 348 | if (i <= 0) | 335 | if (i <= 0) { |
| 349 | { | 336 | BIO_printf(bio_err, "unable to write private key\n"); |
| 350 | BIO_printf(bio_err,"unable to write private key\n"); | ||
| 351 | ERR_print_errors(bio_err); | 337 | ERR_print_errors(bio_err); |
| 352 | } | 338 | } else |
| 353 | else | 339 | ret = 0; |
| 354 | ret=0; | ||
| 355 | end: | 340 | end: |
| 356 | if(in != NULL) BIO_free(in); | 341 | if (in != NULL) BIO_free(in); |
| 357 | if(out != NULL) BIO_free_all(out); | 342 | if (out != NULL) BIO_free_all(out); |
| 358 | if(dsa != NULL) DSA_free(dsa); | 343 | if (dsa != NULL) DSA_free(dsa); |
| 359 | if(passin) OPENSSL_free(passin); | 344 | if (passin) OPENSSL_free(passin); |
| 360 | if(passout) OPENSSL_free(passout); | 345 | if (passout) OPENSSL_free(passout); |
| 361 | apps_shutdown(); | 346 | apps_shutdown(); |
| 362 | OPENSSL_EXIT(ret); | 347 | OPENSSL_EXIT(ret); |
| 363 | } | 348 | } |
| 364 | #else /* !OPENSSL_NO_DSA */ | 349 | #else /* !OPENSSL_NO_DSA */ |
| 365 | 350 | ||
| 366 | # if PEDANTIC | 351 | # if PEDANTIC |
| 367 | static void *dummy=&dummy; | 352 | static void *dummy = &dummy; |
| 368 | # endif | 353 | # endif |
| 369 | 354 | ||
| 370 | #endif | 355 | #endif |
