X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=apps%2Fecparam.c;h=55d71f7fd41e597be45b21f957f00e7834ba25d4;hb=1b4d0e3c1ed556b890b93d8326978a6a90cfc0fe;hp=082df260ab2837bb8dfa0024e81399ca8e2e5b11;hpb=23a1d5e97cd543d2b8e1b01dbf0f619b2e5ce540;p=openssl.git diff --git a/apps/ecparam.c b/apps/ecparam.c index 082df260ab..55d71f7fd4 100644 --- a/apps/ecparam.c +++ b/apps/ecparam.c @@ -69,8 +69,10 @@ */ #include -#ifndef OPENSSL_NO_EC -# include +#ifdef OPENSSL_NO_EC +NON_EMPTY_TRANSLATION_UNIT +#else + # include # include # include @@ -117,14 +119,14 @@ OPTIONS ecparam_options[] = { {NULL} }; -OPT_PAIR forms[] = { +static OPT_PAIR forms[] = { {"compressed", POINT_CONVERSION_COMPRESSED}, {"uncompressed", POINT_CONVERSION_UNCOMPRESSED}, {"hybrid", POINT_CONVERSION_HYBRID}, {NULL} }; -OPT_PAIR encodings[] = { +static OPT_PAIR encodings[] = { {"named_curve", OPENSSL_EC_NAMED_CURVE}, {"explicit", 0}, {NULL} @@ -142,8 +144,8 @@ int ecparam_main(int argc, char **argv) unsigned char *buffer = NULL; OPTION_CHOICE o; int asn1_flag = OPENSSL_EC_NAMED_CURVE, new_asn1_flag = 0; - int informat = FORMAT_PEM, outformat = FORMAT_PEM, noout = 0, C = 0, ret = - 1; + int informat = FORMAT_PEM, outformat = FORMAT_PEM, noout = 0, C = 0; + int ret = 1, private = 0; int list_curves = 0, no_seed = 0, check = 0, new_form = 0; int text = 0, i, need_rand = 0, genkey = 0; @@ -218,12 +220,15 @@ int ecparam_main(int argc, char **argv) } } argc = opt_num_rest(); - argv = opt_rest(); + if (argc != 0) + goto opthelp; + + private = genkey ? 1 : 0; - in = bio_open_default(infile, RB(informat)); + in = bio_open_default(infile, 'r', informat); if (in == NULL) goto end; - out = bio_open_default(outfile, WB(outformat)); + out = bio_open_owner(outfile, outformat, private); if (out == NULL) goto end; @@ -232,7 +237,7 @@ int ecparam_main(int argc, char **argv) size_t crv_len = EC_get_builtin_curves(NULL, 0); size_t n; - curves = app_malloc((int)(sizeof *curves * crv_len), "list curves"); + curves = app_malloc((int)sizeof(*curves) * crv_len, "list curves"); if (!EC_get_builtin_curves(curves, crv_len)) { OPENSSL_free(curves); goto end; @@ -265,11 +270,11 @@ int ecparam_main(int argc, char **argv) * are the same as the curves prime192v1 and prime256v1 defined in * X9.62) */ - if (!strcmp(curve_name, "secp192r1")) { + if (strcmp(curve_name, "secp192r1") == 0) { BIO_printf(bio_err, "using curve name prime192v1 " "instead of secp192r1\n"); nid = NID_X9_62_prime192v1; - } else if (!strcmp(curve_name, "secp256r1")) { + } else if (strcmp(curve_name, "secp256r1") == 0) { BIO_printf(bio_err, "using curve name prime256v1 " "instead of secp256r1\n"); nid = NID_X9_62_prime256v1; @@ -317,14 +322,13 @@ int ecparam_main(int argc, char **argv) } if (check) { - if (group == NULL) - BIO_printf(bio_err, "no elliptic curve parameters\n"); BIO_printf(bio_err, "checking elliptic curve parameters: "); if (!EC_GROUP_check(group, NULL)) { BIO_printf(bio_err, "failed\n"); ERR_print_errors(bio_err); - } else - BIO_printf(bio_err, "ok\n"); + goto end; + } + BIO_printf(bio_err, "ok\n"); } @@ -463,13 +467,20 @@ int ecparam_main(int argc, char **argv) assert(need_rand); - if (EC_KEY_set_group(eckey, group) == 0) + if (EC_KEY_set_group(eckey, group) == 0) { + BIO_printf(bio_err, "unable to set group when generating key\n"); + EC_KEY_free(eckey); + ERR_print_errors(bio_err); goto end; + } if (!EC_KEY_generate_key(eckey)) { + BIO_printf(bio_err, "unable to generate key\n"); EC_KEY_free(eckey); + ERR_print_errors(bio_err); goto end; } + assert(private); if (outformat == FORMAT_ASN1) i = i2d_ECPrivateKey_bio(out, eckey); else @@ -489,18 +500,11 @@ int ecparam_main(int argc, char **argv) BN_free(ec_gen); BN_free(ec_order); BN_free(ec_cofactor); - if (buffer) - OPENSSL_free(buffer); + OPENSSL_free(buffer); BIO_free(in); BIO_free_all(out); EC_GROUP_free(group); return (ret); } -#else /* !OPENSSL_NO_EC */ - -# if PEDANTIC -static void *dummy = &dummy; -# endif - #endif