@@ -602,6 +602,11 @@ size_t ManagedEVPPKey::size_of_public_key() const {
602602 pkey_.get (), nullptr , &len) == 1 ) ? len : 0 ;
603603}
604604
605+ // 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 =
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}
620626
621627Maybe<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 }
632638
633- return Just (WritePrivateKey (env, key.get (), config).ToLocal (out));
639+ return Tristate (WritePrivateKey (env, key.get (), config).ToLocal (out));
634640}
635641
636642NonCopyableMaybe<PrivateKeyEncodingConfig>
0 commit comments