Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openssl/openssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/fips
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-08-29 20:09:07 +0400
committerDr. Stephen Henson <steve@openssl.org>2011-08-29 20:09:07 +0400
commitd35c284b7329f54e398ee8b9eac15ce9a3a1b972 (patch)
treef51e30b4d65616342c81b9e2d43f01cab70600c7 /fips
parent00220f81111828cfb360a935fabcbb035ae743b7 (diff)
Print private key component is -exout parameter is given.
Diffstat (limited to 'fips')
-rw-r--r--fips/ecdh/fips_ecdhvs.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/fips/ecdh/fips_ecdhvs.c b/fips/ecdh/fips_ecdhvs.c
index d459fbd986..72ebe815dd 100644
--- a/fips/ecdh/fips_ecdhvs.c
+++ b/fips/ecdh/fips_ecdhvs.c
@@ -196,13 +196,14 @@ static EC_POINT *make_peer(EC_GROUP *group, BIGNUM *x, BIGNUM *y)
return NULL;
}
-static int ec_print_pubkey(FILE *out, EC_KEY *key, int add_e)
+static int ec_print_key(FILE *out, EC_KEY *key, int add_e, int exout)
{
const EC_POINT *pt;
const EC_GROUP *grp;
const EC_METHOD *meth;
int rv;
BIGNUM *tx, *ty;
+ const BIGNUM *d = NULL;
BN_CTX *ctx;
ctx = BN_CTX_new();
if (!ctx)
@@ -213,6 +214,8 @@ static int ec_print_pubkey(FILE *out, EC_KEY *key, int add_e)
return 0;
grp = EC_KEY_get0_group(key);
pt = EC_KEY_get0_public_key(key);
+ if (exout)
+ d = EC_KEY_get0_private_key(key);
meth = EC_GROUP_method_of(grp);
if (EC_METHOD_get_field_type(meth) == NID_X9_62_prime_field)
rv = EC_POINT_get_affine_coordinates_GFp(grp, pt, tx, ty, ctx);
@@ -230,11 +233,15 @@ static int ec_print_pubkey(FILE *out, EC_KEY *key, int add_e)
{
do_bn_print_name(out, "QeIUTx", tx);
do_bn_print_name(out, "QeIUTy", ty);
+ if (d)
+ do_bn_print_name(out, "QeIUTd", d);
}
else
{
do_bn_print_name(out, "QIUTx", tx);
do_bn_print_name(out, "QIUTy", ty);
+ if (d)
+ do_bn_print_name(out, "QIUTd", d);
}
BN_CTX_free(ctx);
@@ -261,7 +268,7 @@ static void ec_output_Zhash(FILE *out, int exout, EC_GROUP *group,
if (md)
rhashlen = M_EVP_MD_size(md);
EC_KEY_generate_key(ec);
- ec_print_pubkey(out, ec, md ? 1 : 0);
+ ec_print_key(out, ec, md ? 1 : 0, exout);
}
else
{