src: fix error handling for CryptoJob::ToResult · nodejs/node@6ad0b6f

@@ -602,6 +602,11 @@ size_t ManagedEVPPKey::size_of_public_key() const {

602602

pkey_.get(), nullptr, &len) == 1) ? len : 0;

603603

}

604604605+

// This maps true to Just<bool>(true) and false to Nothing<bool>().

606+

static inline Maybe<bool> Tristate(bool b) {

607+

return b ? Just(true) : Nothing<bool>();

608+

}

609+605610

Maybe<bool> ManagedEVPPKey::ToEncodedPublicKey(

606611

Environment* env,

607612

ManagedEVPPKey key,

@@ -613,9 +618,10 @@ Maybe<bool> ManagedEVPPKey::ToEncodedPublicKey(

613618

// private key.

614619

std::shared_ptr<KeyObjectData> data =

615620

KeyObjectData::CreateAsymmetric(kKeyTypePublic, std::move(key));

616-

return Just(KeyObjectHandle::Create(env, data).ToLocal(out));

621+

return Tristate(KeyObjectHandle::Create(env, data).ToLocal(out));

617622

}

618-

return Just(WritePublicKey(env, key.get(), config).ToLocal(out));

623+624+

return Tristate(WritePublicKey(env, key.get(), config).ToLocal(out));

619625

}

620626621627

Maybe<bool> ManagedEVPPKey::ToEncodedPrivateKey(

@@ -627,10 +633,10 @@ Maybe<bool> ManagedEVPPKey::ToEncodedPrivateKey(

627633

if (config.output_key_object_) {

628634

std::shared_ptr<KeyObjectData> data =

629635

KeyObjectData::CreateAsymmetric(kKeyTypePrivate, std::move(key));

630-

return Just(KeyObjectHandle::Create(env, data).ToLocal(out));

636+

return Tristate(KeyObjectHandle::Create(env, data).ToLocal(out));

631637

}

632638633-

return Just(WritePrivateKey(env, key.get(), config).ToLocal(out));

639+

return Tristate(WritePrivateKey(env, key.get(), config).ToLocal(out));

634640

}

635641636642

NonCopyableMaybe<PrivateKeyEncodingConfig>