@@ -26,6 +26,7 @@ using v8::FunctionTemplate;
2626using v8::Int32;
2727using v8::Isolate;
2828using v8::Just;
29+ using v8::JustVoid;
2930using v8::Local;
3031using v8::Maybe;
3132using v8::MaybeLocal;
@@ -431,10 +432,9 @@ MaybeLocal<Value> WritePublicKey(Environment* env,
431432 return BIOToStringOrBuffer (env, bio.get (), config.format_ );
432433}
433434
434- Maybe<bool > ExportJWKSecretKey (
435- Environment* env,
436- std::shared_ptr<KeyObjectData> key,
437- Local<Object> target) {
435+ Maybe<void > ExportJWKSecretKey (Environment* env,
436+ std::shared_ptr<KeyObjectData> key,
437+ Local<Object> target) {
438438 CHECK_EQ (key->GetKeyType (), kKeyTypeSecret );
439439
440440 Local<Value> error;
@@ -449,10 +449,9 @@ Maybe<bool> ExportJWKSecretKey(
449449 if (key_data.IsEmpty ()) {
450450 CHECK (!error.IsEmpty ());
451451 env->isolate ()->ThrowException (error);
452- return Nothing<bool >();
452+ return Nothing<void >();
453453 }
454- if (!key_data.ToLocal (&raw))
455- return Nothing<bool >();
454+ if (!key_data.ToLocal (&raw)) return Nothing<void >();
456455
457456 if (target->Set (
458457 env->context (),
@@ -462,10 +461,10 @@ Maybe<bool> ExportJWKSecretKey(
462461 env->context (),
463462 env->jwk_k_string (),
464463 raw).IsNothing ()) {
465- return Nothing<bool >();
464+ return Nothing<void >();
466465 }
467466
468- return Just ( true );
467+ return JustVoid ( );
469468}
470469
471470std::shared_ptr<KeyObjectData> ImportJWKSecretKey (
@@ -483,19 +482,18 @@ std::shared_ptr<KeyObjectData> ImportJWKSecretKey(
483482 return KeyObjectData::CreateSecret (std::move (key_data));
484483}
485484
486- Maybe<bool > ExportJWKAsymmetricKey (
487- Environment* env,
488- std::shared_ptr<KeyObjectData> key,
489- Local<Object> target,
490- bool handleRsaPss) {
485+ Maybe<void > ExportJWKAsymmetricKey (Environment* env,
486+ std::shared_ptr<KeyObjectData> key,
487+ Local<Object> target,
488+ bool handleRsaPss) {
491489 switch (EVP_PKEY_id (key->GetAsymmetricKey ().get ())) {
492490 case EVP_PKEY_RSA_PSS: {
493491 if (handleRsaPss) return ExportJWKRsaKey (env, key, target);
494492 break ;
495493 }
496494 case EVP_PKEY_RSA: return ExportJWKRsaKey (env, key, target);
497- case EVP_PKEY_EC: return ExportJWKEcKey (env, key, target). IsJust () ?
498- Just ( true ) : Nothing< bool >( );
495+ case EVP_PKEY_EC:
496+ return ExportJWKEcKey (env, key, target );
499497 case EVP_PKEY_ED25519:
500498 // Fall through
501499 case EVP_PKEY_ED448:
@@ -505,7 +503,7 @@ Maybe<bool> ExportJWKAsymmetricKey(
505503 case EVP_PKEY_X448: return ExportJWKEdKey (env, key, target);
506504 }
507505 THROW_ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE (env);
508- return Nothing<bool >();
506+ return Nothing<void >();
509507}
510508
511509std::shared_ptr<KeyObjectData> ImportJWKAsymmetricKey (
@@ -605,12 +603,12 @@ size_t ManagedEVPPKey::size_of_public_key() const {
605603 pkey_.get (), nullptr , &len) == 1 ) ? len : 0 ;
606604}
607605
608- // This maps true to Just<bool>(true) and false to Nothing<bool >().
609- static inline Maybe<bool > Tristate (bool b) {
610- return b ? Just ( true ) : Nothing<bool >();
606+ // This maps true to JustVoid and false to Nothing<void >().
607+ static inline Maybe<void > NothingIfFalse (bool b) {
608+ return b ? JustVoid ( ) : Nothing<void >();
611609}
612610
613- Maybe<bool > ExportJWKInner (Environment* env,
611+ Maybe<void > ExportJWKInner (Environment* env,
614612 std::shared_ptr<KeyObjectData> key,
615613 Local<Value> result,
616614 bool handleRsaPss) {
@@ -627,44 +625,44 @@ Maybe<bool> ExportJWKInner(Environment* env,
627625 }
628626}
629627
630- Maybe<bool > ManagedEVPPKey::ToEncodedPublicKey (
628+ Maybe<void > ManagedEVPPKey::ToEncodedPublicKey (
631629 Environment* env,
632630 const PublicKeyEncodingConfig& config,
633631 Local<Value>* out) {
634- if (!*this ) return Nothing<bool >();
632+ if (!*this ) return Nothing<void >();
635633 if (config.output_key_object_ ) {
636634 // Note that this has the downside of containing sensitive data of the
637635 // private key.
638636 std::shared_ptr<KeyObjectData> data =
639637 KeyObjectData::CreateAsymmetric (kKeyTypePublic , *this );
640- return Tristate (KeyObjectHandle::Create (env, data).ToLocal (out));
638+ return NothingIfFalse (KeyObjectHandle::Create (env, data).ToLocal (out));
641639 } else if (config.format_ == kKeyFormatJWK ) {
642640 std::shared_ptr<KeyObjectData> data =
643641 KeyObjectData::CreateAsymmetric (kKeyTypePublic , *this );
644642 *out = Object::New (env->isolate ());
645643 return ExportJWKInner (env, data, *out, false );
646644 }
647645
648- return Tristate (WritePublicKey (env, get (), config).ToLocal (out));
646+ return NothingIfFalse (WritePublicKey (env, get (), config).ToLocal (out));
649647}
650648
651- Maybe<bool > ManagedEVPPKey::ToEncodedPrivateKey (
649+ Maybe<void > ManagedEVPPKey::ToEncodedPrivateKey (
652650 Environment* env,
653651 const PrivateKeyEncodingConfig& config,
654652 Local<Value>* out) {
655- if (!*this ) return Nothing<bool >();
653+ if (!*this ) return Nothing<void >();
656654 if (config.output_key_object_ ) {
657655 std::shared_ptr<KeyObjectData> data =
658656 KeyObjectData::CreateAsymmetric (kKeyTypePrivate , *this );
659- return Tristate (KeyObjectHandle::Create (env, data).ToLocal (out));
657+ return NothingIfFalse (KeyObjectHandle::Create (env, data).ToLocal (out));
660658 } else if (config.format_ == kKeyFormatJWK ) {
661659 std::shared_ptr<KeyObjectData> data =
662660 KeyObjectData::CreateAsymmetric (kKeyTypePrivate , *this );
663661 *out = Object::New (env->isolate ());
664662 return ExportJWKInner (env, data, *out, false );
665663 }
666664
667- return Tristate (WritePrivateKey (env, get (), config).ToLocal (out));
665+ return NothingIfFalse (WritePrivateKey (env, get (), config).ToLocal (out));
668666}
669667
670668NonCopyableMaybe<PrivateKeyEncodingConfig>
0 commit comments