diff --git a/src/crypto/crypto_ec.cc b/src/crypto/crypto_ec.cc index e9fe65ffd571ca..d3840d77ff1660 100644 --- a/src/crypto/crypto_ec.cc +++ b/src/crypto/crypto_ec.cc @@ -104,23 +104,14 @@ void ECDH::RegisterExternalReferences(ExternalReferenceRegistry* registry) { void ECDH::GetCurves(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); const size_t num_curves = EC_get_builtin_curves(nullptr, 0); - - if (num_curves) { - std::vector curves(num_curves); - - if (EC_get_builtin_curves(curves.data(), num_curves)) { - std::vector> arr(num_curves); - - for (size_t i = 0; i < num_curves; i++) - arr[i] = OneByteString(env->isolate(), OBJ_nid2sn(curves[i].nid)); - - args.GetReturnValue().Set( - Array::New(env->isolate(), arr.data(), arr.size())); - return; - } - } - - args.GetReturnValue().Set(Array::New(env->isolate())); + std::vector curves(num_curves); + CHECK_EQ(EC_get_builtin_curves(curves.data(), num_curves), num_curves); + + std::vector> arr(num_curves); + std::transform(curves.begin(), curves.end(), arr.begin(), [env](auto& curve) { + return OneByteString(env->isolate(), OBJ_nid2sn(curve.nid)); + }); + args.GetReturnValue().Set(Array::New(env->isolate(), arr.data(), arr.size())); } ECDH::ECDH(Environment* env, Local wrap, ECKeyPointer&& key)