@@ -386,7 +386,10 @@ bool KeyObjectData::ToEncodedPublicKey(
386386 const auto & pkey = GetAsymmetricKey ();
387387 if (pkey.id () == EVP_PKEY_EC ) {
388388 ECKeyPointer ec_key (pkey);
389- CHECK (ec_key);
389+ if (!ec_key) {
390+ THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS (env);
391+ return false ;
392+ }
390393 auto form = static_cast <point_conversion_form_t >(config.ec_point_form );
391394 const auto group = ec_key.getGroup ();
392395 const auto point = ec_key.getPublicKey ();
@@ -432,13 +435,22 @@ bool KeyObjectData::ToEncodedPrivateKey(
432435 const auto & pkey = GetAsymmetricKey ();
433436 if (pkey.id () == EVP_PKEY_EC ) {
434437 ECKeyPointer ec_key (pkey);
435- CHECK (ec_key);
438+ if (!ec_key) {
439+ THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS (env);
440+ return false ;
441+ }
436442 const BIGNUM * private_key = ec_key.getPrivateKey ();
437- CHECK_NOT_NULL (private_key);
443+ if (private_key == nullptr ) {
444+ THROW_ERR_CRYPTO_OPERATION_FAILED (env, " Failed to get EC private key" );
445+ return false ;
446+ }
438447 const auto group = ec_key.getGroup ();
439448 auto order = BignumPointer::New ();
440- CHECK (order);
441- CHECK (EC_GROUP_get_order (group, order.get (), nullptr ));
449+ if (!order || !EC_GROUP_get_order (group, order.get (), nullptr )) {
450+ THROW_ERR_CRYPTO_OPERATION_FAILED (env,
451+ " Failed to export EC private key" );
452+ return false ;
453+ }
442454 auto buf = BignumPointer::EncodePadded (private_key, order.byteLength ());
443455 if (!buf) {
444456 THROW_ERR_CRYPTO_OPERATION_FAILED (env,
@@ -1463,7 +1475,9 @@ void KeyObjectHandle::ExportECPublicRaw(
14631475 }
14641476
14651477 ECKeyPointer ec_key (m_pkey);
1466- CHECK (ec_key);
1478+ if (!ec_key) {
1479+ return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS (env);
1480+ }
14671481
14681482 CHECK (args[0 ]->IsInt32 ());
14691483 auto form =
@@ -1494,15 +1508,22 @@ void KeyObjectHandle::ExportECPrivateRaw(
14941508 }
14951509
14961510 ECKeyPointer ec_key (m_pkey);
1497- CHECK (ec_key);
1511+ if (!ec_key) {
1512+ return THROW_ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS (env);
1513+ }
14981514
14991515 const BIGNUM * private_key = ec_key.getPrivateKey ();
1500- CHECK_NOT_NULL (private_key);
1516+ if (private_key == nullptr ) {
1517+ return THROW_ERR_CRYPTO_OPERATION_FAILED (env,
1518+ " Failed to get EC private key" );
1519+ }
15011520
15021521 const auto group = ec_key.getGroup ();
15031522 auto order = BignumPointer::New ();
1504- CHECK (order);
1505- CHECK (EC_GROUP_get_order (group, order.get (), nullptr ));
1523+ if (!order || !EC_GROUP_get_order (group, order.get (), nullptr )) {
1524+ return THROW_ERR_CRYPTO_OPERATION_FAILED (env,
1525+ " Failed to export EC private key" );
1526+ }
15061527
15071528 auto buf = BignumPointer::EncodePadded (private_key, order.byteLength ());
15081529 if (!buf) {
0 commit comments