Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-12-06 15:45:40 +0300
committerJames M Snell <jasnell@gmail.com>2020-02-24 18:55:49 +0300
commit2035e3d6cb3071dfbe142f8351cde3d883626a38 (patch)
tree5b75909beae7e61ba3b28250a85836fce370e0ca /src/node_crypto.cc
parentbe2f3a3bf88fd728799d1917f7d82428f53183f0 (diff)
src: move BaseObject subclass dtors/ctors out of node_crypto.h
Originally landed in the QUIC repo Move constructor and destructors for subclasses of `BaseObject` from node_crypto.h to node_crypto.cc. This removes the need to include base_object-inl.h when using node_crypto.h in some cases. Original review metadata: ``` PR-URL: https://github.com/nodejs/quic/pull/220 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> ``` PR-URL: https://github.com/nodejs/node/pull/31872 Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'src/node_crypto.cc')
-rw-r--r--src/node_crypto.cc79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
index e129c7f3f59..a8a067086f6 100644
--- a/src/node_crypto.cc
+++ b/src/node_crypto.cc
@@ -531,6 +531,24 @@ void SecureContext::Initialize(Environment* env, Local<Object> target) {
env->set_secure_context_constructor_template(t);
}
+SecureContext::SecureContext(Environment* env, v8::Local<v8::Object> wrap)
+ : BaseObject(env, wrap) {
+ MakeWeak();
+ env->isolate()->AdjustAmountOfExternalAllocatedMemory(kExternalSize);
+}
+
+inline void SecureContext::Reset() {
+ if (ctx_ != nullptr) {
+ env()->isolate()->AdjustAmountOfExternalAllocatedMemory(-kExternalSize);
+ }
+ ctx_.reset();
+ cert_.reset();
+ issuer_.reset();
+}
+
+SecureContext::~SecureContext() {
+ Reset();
+}
void SecureContext::New(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
@@ -3854,6 +3872,15 @@ KeyType KeyObject::GetKeyType() const {
return this->key_type_;
}
+KeyObject::KeyObject(Environment* env,
+ v8::Local<v8::Object> wrap,
+ KeyType key_type)
+ : BaseObject(env, wrap),
+ key_type_(key_type),
+ symmetric_key_(nullptr, nullptr) {
+ MakeWeak();
+}
+
void KeyObject::Init(const FunctionCallbackInfo<Value>& args) {
KeyObject* key;
ASSIGN_OR_RETURN_UNWRAP(&key, args.Holder());
@@ -3998,6 +4025,17 @@ MaybeLocal<Value> KeyObject::ExportPrivateKey(
return WritePrivateKey(env(), asymmetric_key_.get(), config);
}
+CipherBase::CipherBase(Environment* env,
+ v8::Local<v8::Object> wrap,
+ CipherKind kind)
+ : BaseObject(env, wrap),
+ ctx_(nullptr),
+ kind_(kind),
+ auth_tag_state_(kAuthTagUnknown),
+ auth_tag_len_(kNoAuthTagLength),
+ pending_auth_failed_(false) {
+ MakeWeak();
+}
void CipherBase::Initialize(Environment* env, Local<Object> target) {
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
@@ -4620,6 +4658,11 @@ void CipherBase::Final(const FunctionCallbackInfo<Value>& args) {
args.GetReturnValue().Set(out.ToBuffer().ToLocalChecked());
}
+Hmac::Hmac(Environment* env, v8::Local<v8::Object> wrap)
+ : BaseObject(env, wrap),
+ ctx_(nullptr) {
+ MakeWeak();
+}
void Hmac::Initialize(Environment* env, Local<Object> target) {
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
@@ -4739,6 +4782,13 @@ void Hmac::HmacDigest(const FunctionCallbackInfo<Value>& args) {
args.GetReturnValue().Set(rc.ToLocalChecked());
}
+Hash::Hash(Environment* env, v8::Local<v8::Object> wrap)
+ : BaseObject(env, wrap),
+ mdctx_(nullptr),
+ has_md_(false),
+ md_value_(nullptr) {
+ MakeWeak();
+}
void Hash::Initialize(Environment* env, Local<Object> target) {
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
@@ -4753,6 +4803,10 @@ void Hash::Initialize(Environment* env, Local<Object> target) {
t->GetFunction(env->context()).ToLocalChecked()).Check();
}
+Hash::~Hash() {
+ if (md_value_ != nullptr)
+ OPENSSL_clear_free(md_value_, md_len_);
+}
void Hash::New(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
@@ -4977,6 +5031,10 @@ void CheckThrow(Environment* env, SignBase::Error error) {
}
}
+SignBase::SignBase(Environment* env, v8::Local<v8::Object> wrap)
+ : BaseObject(env, wrap) {
+}
+
void SignBase::CheckThrow(SignBase::Error error) {
node::crypto::CheckThrow(env(), error);
}
@@ -5000,6 +5058,9 @@ static bool ApplyRSAOptions(const ManagedEVPPKey& pkey,
}
+Sign::Sign(Environment* env, v8::Local<v8::Object> wrap) : SignBase(env, wrap) {
+ MakeWeak();
+}
void Sign::Initialize(Environment* env, Local<Object> target) {
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
@@ -5320,6 +5381,11 @@ void SignOneShot(const FunctionCallbackInfo<Value>& args) {
args.GetReturnValue().Set(signature.ToBuffer().ToLocalChecked());
}
+Verify::Verify(Environment* env, v8::Local<v8::Object> wrap) :
+ SignBase(env, wrap) {
+ MakeWeak();
+}
+
void Verify::Initialize(Environment* env, Local<Object> target) {
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
@@ -5623,6 +5689,10 @@ void PublicKeyCipher::Cipher(const FunctionCallbackInfo<Value>& args) {
args.GetReturnValue().Set(out.ToBuffer().ToLocalChecked());
}
+DiffieHellman::DiffieHellman(Environment* env, v8::Local<v8::Object> wrap)
+ : BaseObject(env, wrap), verifyError_(0) {
+ MakeWeak();
+}
void DiffieHellman::Initialize(Environment* env, Local<Object> target) {
auto make = [&] (Local<String> name, FunctionCallback callback) {
@@ -5992,6 +6062,15 @@ void ECDH::Initialize(Environment* env, Local<Object> target) {
t->GetFunction(env->context()).ToLocalChecked()).Check();
}
+ECDH::ECDH(Environment* env, v8::Local<v8::Object> wrap, ECKeyPointer&& key)
+ : BaseObject(env, wrap),
+ key_(std::move(key)),
+ group_(EC_KEY_get0_group(key_.get())) {
+ MakeWeak();
+ CHECK_NOT_NULL(group_);
+}
+
+ECDH::~ECDH() {}
void ECDH::New(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);