Bläddra i källkod

Handle NULL public key in |EC_KEY_set_public_key|.

Node.js expects to be able to pass NULL to this function to clear the
current public key:
adbe3b837e/src/node_crypto.cc (L5316)

Change-Id: Id4e34d8e8b556c28000e4df12ff6f4432ad9220c
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/35124
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: Adam Langley <agl@google.com>
kris/onging/CECPQ3_patch15
Jeremy Apthorp 5 år sedan
committed by CQ bot account: commit-bot@chromium.org
förälder
incheckning
19220dd6af
2 ändrade filer med 15 tillägg och 1 borttagningar
  1. +1
    -1
      crypto/fipsmodule/ec/ec_key.c
  2. +14
    -0
      crypto/fipsmodule/ec/ec_test.cc

+ 1
- 1
crypto/fipsmodule/ec/ec_key.c Visa fil

@@ -267,7 +267,7 @@ int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub_key) {
return 0;
}

if (EC_GROUP_cmp(key->group, pub_key->group, NULL) != 0) {
if (pub_key != NULL && EC_GROUP_cmp(key->group, pub_key->group, NULL) != 0) {
OPENSSL_PUT_ERROR(EC, EC_R_GROUP_MISMATCH);
return 0;
}


+ 14
- 0
crypto/fipsmodule/ec/ec_test.cc Visa fil

@@ -347,6 +347,20 @@ TEST(ECTest, SetKeyWithoutGroup) {
EC_KEY_set_public_key(key.get(), EC_GROUP_get0_generator(group.get())));
}

TEST(ECTest, SetNULLKey) {
bssl::UniquePtr<EC_KEY> key(EC_KEY_new_by_curve_name(NID_X9_62_prime256v1));
ASSERT_TRUE(key);

EXPECT_TRUE(EC_KEY_set_public_key(
key.get(), EC_GROUP_get0_generator(EC_KEY_get0_group(key.get()))));
EXPECT_TRUE(EC_KEY_get0_public_key(key.get()));

// Setting a NULL public-key should clear the public-key and return zero, in
// order to match OpenSSL behaviour exactly.
EXPECT_FALSE(EC_KEY_set_public_key(key.get(), nullptr));
EXPECT_FALSE(EC_KEY_get0_public_key(key.get()));
}

TEST(ECTest, GroupMismatch) {
bssl::UniquePtr<EC_KEY> key(EC_KEY_new_by_curve_name(NID_secp384r1));
ASSERT_TRUE(key);


Laddar…
Avbryt
Spara