Print the curve name, not bit length in EVP_PKEY_print_*
This is a departure from OpenSSL's output (which seems to just append
even more information afterwards), but is a better way to identify the
algorithm.
Change-Id: Iccffdf9297bde5362d902d4de1d99de7b673bed2
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/54952
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/evp/evp_extra_test.cc b/crypto/evp/evp_extra_test.cc
index 1b504aa..e192406 100644
--- a/crypto/evp/evp_extra_test.cc
+++ b/crypto/evp/evp_extra_test.cc
@@ -762,14 +762,13 @@
61
)");
- // TODO(davidben): This output should include the curve name.
bssl::UniquePtr<EVP_PKEY> ec =
ParsePrivateKey(EVP_PKEY_EC, kExampleECKeyDER, sizeof(kExampleECKeyDER));
ASSERT_TRUE(ec);
EXPECT_EQ(PrintToString(ec.get(), /*indent=*/2, &EVP_PKEY_print_params),
- " ECDSA-Parameters: (256 bit)\n");
+ " ECDSA-Parameters: (P-256)\n");
EXPECT_EQ(PrintToString(ec.get(), /*indent=*/2, &EVP_PKEY_print_public),
- R"( Public-Key: (256 bit)
+ R"( Public-Key: (P-256)
pub:
04:e6:2b:69:e2:bf:65:9f:97:be:2f:1e:0d:94:8a:
4c:d5:97:6b:b7:a9:1e:0d:46:fb:dd:a9:a9:1e:9d:
@@ -778,7 +777,7 @@
4b:cf:72:22:c1
)");
EXPECT_EQ(PrintToString(ec.get(), /*indent=*/2, &EVP_PKEY_print_private),
- R"( Private-Key: (256 bit)
+ R"( Private-Key: (P-256)
priv:
07:0f:08:72:7a:d4:a0:4a:9c:dd:59:c9:4d:89:68:
77:08:b5:6f:c9:5d:30:77:0e:e8:d1:c9:ce:0a:8b:
diff --git a/crypto/evp/print.c b/crypto/evp/print.c
index aad1e6d..11fad3c 100644
--- a/crypto/evp/print.c
+++ b/crypto/evp/print.c
@@ -259,8 +259,11 @@
if (!BIO_indent(bp, off, 128)) {
return 0;
}
- if (BIO_printf(bp, "%s: (%u bit)\n", ecstr,
- BN_num_bits(EC_GROUP_get0_order(group))) <= 0) {
+ int curve_name = EC_GROUP_get_curve_name(group);
+ if (BIO_printf(bp, "%s: (%s)\n", ecstr,
+ curve_name == NID_undef
+ ? "unknown curve"
+ : EC_curve_nid2nist(curve_name)) <= 0) {
return 0;
}