@@ -90,11 +90,9 @@ extern void UseExtraCaCerts(const std::string& file);
9090
9191void InitCryptoOnce ();
9292
93- class SecureContext : public BaseObject {
93+ class SecureContext final : public BaseObject {
9494 public:
95- ~SecureContext () override {
96- Reset ();
97- }
95+ ~SecureContext () override ;
9896
9997 static void Initialize (Environment* env, v8::Local<v8::Object> target);
10098
@@ -185,20 +183,8 @@ class SecureContext : public BaseObject {
185183 HMAC_CTX* hctx,
186184 int enc);
187185
188- SecureContext (Environment* env, v8::Local<v8::Object> wrap)
189- : BaseObject(env, wrap) {
190- MakeWeak ();
191- env->isolate ()->AdjustAmountOfExternalAllocatedMemory (kExternalSize );
192- }
193-
194- inline void Reset () {
195- if (ctx_ != nullptr ) {
196- env ()->isolate ()->AdjustAmountOfExternalAllocatedMemory (-kExternalSize );
197- }
198- ctx_.reset ();
199- cert_.reset ();
200- issuer_.reset ();
201- }
186+ SecureContext (Environment* env, v8::Local<v8::Object> wrap);
187+ void Reset ();
202188};
203189
204190#define SSLWRAP_TYPES (V ) \
@@ -472,14 +458,7 @@ class KeyObject : public BaseObject {
472458 v8::MaybeLocal<v8::Value> ExportPrivateKey (
473459 const PrivateKeyEncodingConfig& config) const ;
474460
475- KeyObject (Environment* env,
476- v8::Local<v8::Object> wrap,
477- KeyType key_type)
478- : BaseObject(env, wrap),
479- key_type_ (key_type),
480- symmetric_key_(nullptr , nullptr ) {
481- MakeWeak ();
482- }
461+ KeyObject (Environment* env, v8::Local<v8::Object> wrap, KeyType key_type);
483462
484463 private:
485464 const KeyType key_type_;
@@ -553,17 +532,7 @@ class CipherBase : public BaseObject {
553532 static void SetAuthTag (const v8::FunctionCallbackInfo<v8::Value>& args);
554533 static void SetAAD (const v8::FunctionCallbackInfo<v8::Value>& args);
555534
556- CipherBase (Environment* env,
557- v8::Local<v8::Object> wrap,
558- CipherKind kind)
559- : BaseObject(env, wrap),
560- ctx_ (nullptr ),
561- kind_(kind),
562- auth_tag_state_(kAuthTagUnknown ),
563- auth_tag_len_(kNoAuthTagLength ),
564- pending_auth_failed_(false ) {
565- MakeWeak ();
566- }
535+ CipherBase (Environment* env, v8::Local<v8::Object> wrap, CipherKind kind);
567536
568537 private:
569538 DeleteFnPtr<EVP_CIPHER_CTX, EVP_CIPHER_CTX_free> ctx_;
@@ -593,18 +562,16 @@ class Hmac : public BaseObject {
593562 static void HmacUpdate (const v8::FunctionCallbackInfo<v8::Value>& args);
594563 static void HmacDigest (const v8::FunctionCallbackInfo<v8::Value>& args);
595564
596- Hmac (Environment* env, v8::Local<v8::Object> wrap)
597- : BaseObject(env, wrap),
598- ctx_ (nullptr ) {
599- MakeWeak ();
600- }
565+ Hmac (Environment* env, v8::Local<v8::Object> wrap);
601566
602567 private:
603568 DeleteFnPtr<HMAC_CTX, HMAC_CTX_free> ctx_;
604569};
605570
606- class Hash : public BaseObject {
571+ class Hash final : public BaseObject {
607572 public:
573+ ~Hash () override ;
574+
608575 static void Initialize (Environment* env, v8::Local<v8::Object> target);
609576
610577 // TODO(joyeecheung): track the memory used by OpenSSL types
@@ -620,18 +587,7 @@ class Hash : public BaseObject {
620587 static void HashUpdate (const v8::FunctionCallbackInfo<v8::Value>& args);
621588 static void HashDigest (const v8::FunctionCallbackInfo<v8::Value>& args);
622589
623- Hash (Environment* env, v8::Local<v8::Object> wrap)
624- : BaseObject(env, wrap),
625- mdctx_ (nullptr ),
626- has_md_(false ),
627- md_value_(nullptr ) {
628- MakeWeak ();
629- }
630-
631- ~Hash () override {
632- if (md_value_ != nullptr )
633- OPENSSL_clear_free (md_value_, md_len_);
634- }
590+ Hash (Environment* env, v8::Local<v8::Object> wrap);
635591
636592 private:
637593 EVPMDPointer mdctx_;
@@ -653,9 +609,7 @@ class SignBase : public BaseObject {
653609 kSignMalformedSignature
654610 } Error;
655611
656- SignBase (Environment* env, v8::Local<v8::Object> wrap)
657- : BaseObject(env, wrap) {
658- }
612+ SignBase (Environment* env, v8::Local<v8::Object> wrap);
659613
660614 Error Init (const char * sign_type);
661615 Error Update (const char * data, int len);
@@ -701,9 +655,7 @@ class Sign : public SignBase {
701655 static void SignUpdate (const v8::FunctionCallbackInfo<v8::Value>& args);
702656 static void SignFinal (const v8::FunctionCallbackInfo<v8::Value>& args);
703657
704- Sign (Environment* env, v8::Local<v8::Object> wrap) : SignBase(env, wrap) {
705- MakeWeak ();
706- }
658+ Sign (Environment* env, v8::Local<v8::Object> wrap);
707659};
708660
709661class Verify : public SignBase {
@@ -723,9 +675,7 @@ class Verify : public SignBase {
723675 static void VerifyUpdate (const v8::FunctionCallbackInfo<v8::Value>& args);
724676 static void VerifyFinal (const v8::FunctionCallbackInfo<v8::Value>& args);
725677
726- Verify (Environment* env, v8::Local<v8::Object> wrap) : SignBase(env, wrap) {
727- MakeWeak ();
728- }
678+ Verify (Environment* env, v8::Local<v8::Object> wrap);
729679};
730680
731681class PublicKeyCipher {
@@ -782,11 +732,7 @@ class DiffieHellman : public BaseObject {
782732 static void VerifyErrorGetter (
783733 const v8::FunctionCallbackInfo<v8::Value>& args);
784734
785- DiffieHellman (Environment* env, v8::Local<v8::Object> wrap)
786- : BaseObject(env, wrap),
787- verifyError_ (0 ) {
788- MakeWeak ();
789- }
735+ DiffieHellman (Environment* env, v8::Local<v8::Object> wrap);
790736
791737 // TODO(joyeecheung): track the memory used by OpenSSL types
792738 SET_NO_MEMORY_INFO ()
@@ -805,11 +751,9 @@ class DiffieHellman : public BaseObject {
805751 DHPointer dh_;
806752};
807753
808- class ECDH : public BaseObject {
754+ class ECDH final : public BaseObject {
809755 public:
810- ~ECDH () override {
811- group_ = nullptr ;
812- }
756+ ~ECDH () override ;
813757
814758 static void Initialize (Environment* env, v8::Local<v8::Object> target);
815759 static ECPointPointer BufferToPoint (Environment* env,
@@ -822,13 +766,7 @@ class ECDH : public BaseObject {
822766 SET_SELF_SIZE (ECDH)
823767
824768 protected:
825- ECDH (Environment* env, v8::Local<v8::Object> wrap, ECKeyPointer&& key)
826- : BaseObject(env, wrap),
827- key_ (std::move(key)),
828- group_(EC_KEY_get0_group(key_.get())) {
829- MakeWeak ();
830- CHECK_NOT_NULL (group_);
831- }
769+ ECDH (Environment* env, v8::Local<v8::Object> wrap, ECKeyPointer&& key);
832770
833771 static void New (const v8::FunctionCallbackInfo<v8::Value>& args);
834772 static void GenerateKeys (const v8::FunctionCallbackInfo<v8::Value>& args);
0 commit comments