Commit dca5eeb4 authored by Rich Salz's avatar Rich Salz Committed by Rich Salz
Browse files

RT2680: Public EC key is shown as private



Re-implemented as suggested by Steve Henson.
Also change ECParameters_print the same way.

Reviewed-by: default avatarDr. Stephen Henson <steve@openssl.org>
parent 5d28ff38
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -543,6 +543,19 @@ const EVP_PKEY_ASN1_METHOD eckey_asn1_meth = {
    old_ec_priv_encode
};

int EC_KEY_print(BIO *bp, const EC_KEY *x, int off)
{
    int private = EC_KEY_get0_private_key(x) != NULL;

    return do_EC_KEY_print(bp, x, off,
                private ? EC_KEY_PRINT_PUBLIC : EC_KEY_PRINT_PUBLIC);
}

int ECParameters_print(BIO *bp, const EC_KEY *x)
{
    return do_EC_KEY_print(bp, x, 4, EC_KEY_PRINT_PARAM);
}

#ifndef OPENSSL_NO_CMS

static int ecdh_cms_set_peerkey(EVP_PKEY_CTX *pctx,
+0 −24
Original line number Diff line number Diff line
@@ -66,30 +66,6 @@ int ECParameters_print_fp(FILE *fp, const EC_KEY *x)
}
#endif

int EC_KEY_print(BIO *bp, const EC_KEY *x, int off)
{
    EVP_PKEY *pk;
    int ret;
    pk = EVP_PKEY_new();
    if (pk == NULL || !EVP_PKEY_set1_EC_KEY(pk, (EC_KEY *)x))
        return 0;
    ret = EVP_PKEY_print_private(bp, pk, off, NULL);
    EVP_PKEY_free(pk);
    return ret;
}

int ECParameters_print(BIO *bp, const EC_KEY *x)
{
    EVP_PKEY *pk;
    int ret;
    pk = EVP_PKEY_new();
    if (pk == NULL || !EVP_PKEY_set1_EC_KEY(pk, (EC_KEY *)x))
        return 0;
    ret = EVP_PKEY_print_params(bp, pk, 4, NULL);
    EVP_PKEY_free(pk);
    return ret;
}

static int print_bin(BIO *fp, const char *str, const unsigned char *num,
                     size_t len, int off);