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+605610Maybe<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 =
615620KeyObjectData::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}
620626621627Maybe<bool> ManagedEVPPKey::ToEncodedPrivateKey(
@@ -627,10 +633,10 @@ Maybe<bool> ManagedEVPPKey::ToEncodedPrivateKey(
627633if (config.output_key_object_) {
628634 std::shared_ptr<KeyObjectData> data =
629635KeyObjectData::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}
635641636642NonCopyableMaybe<PrivateKeyEncodingConfig>