@@ -107,6 +107,7 @@ using v8::Maybe;
107
107
using v8::MaybeLocal;
108
108
using v8::Null;
109
109
using v8::Object;
110
+ using v8::ObjectTemplate;
110
111
using v8::Persistent;
111
112
using v8::PropertyAttribute;
112
113
using v8::PropertyCallbackInfo;
@@ -5532,7 +5533,8 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
5532
5533
digest = EVP_sha1 ();
5533
5534
}
5534
5535
5535
- obj = env->NewInternalFieldObject ();
5536
+ obj = env->pbkdf2_constructor_template ()->
5537
+ NewInstance (env->context ()).ToLocalChecked ();
5536
5538
req = new PBKDF2Request (env,
5537
5539
obj,
5538
5540
digest,
@@ -5736,7 +5738,8 @@ void RandomBytes(const FunctionCallbackInfo<Value>& args) {
5736
5738
if (size < 0 || size > Buffer::kMaxLength )
5737
5739
return env->ThrowRangeError (" size is not a valid Smi" );
5738
5740
5739
- Local<Object> obj = env->NewInternalFieldObject ();
5741
+ Local<Object> obj = env->randombytes_constructor_template ()->
5742
+ NewInstance (env->context ()).ToLocalChecked ();
5740
5743
char * data = node::Malloc (size);
5741
5744
RandomBytesRequest* req =
5742
5745
new RandomBytesRequest (env,
@@ -5774,7 +5777,8 @@ void RandomBytesBuffer(const FunctionCallbackInfo<Value>& args) {
5774
5777
int64_t offset = args[1 ]->IntegerValue ();
5775
5778
int64_t size = args[2 ]->IntegerValue ();
5776
5779
5777
- Local<Object> obj = env->NewInternalFieldObject ();
5780
+ Local<Object> obj = env->randombytes_constructor_template ()->
5781
+ NewInstance (env->context ()).ToLocalChecked ();
5778
5782
obj->Set (env->context (), env->buffer_string (), args[0 ]).FromJust ();
5779
5783
char * data = Buffer::Data (args[0 ]);
5780
5784
data += offset;
@@ -6251,6 +6255,18 @@ void InitCrypto(Local<Object> target,
6251
6255
PublicKeyCipher::Cipher<PublicKeyCipher::kPublic ,
6252
6256
EVP_PKEY_verify_recover_init,
6253
6257
EVP_PKEY_verify_recover>);
6258
+
6259
+ Local<FunctionTemplate> pb = FunctionTemplate::New (env->isolate ());
6260
+ pb->SetClassName (FIXED_ONE_BYTE_STRING (env->isolate (), " PBKDF2" ));
6261
+ Local<ObjectTemplate> pbt = pb->InstanceTemplate ();
6262
+ pbt->SetInternalFieldCount (1 );
6263
+ env->set_pbkdf2_constructor_template (pbt);
6264
+
6265
+ Local<FunctionTemplate> rb = FunctionTemplate::New (env->isolate ());
6266
+ rb->SetClassName (FIXED_ONE_BYTE_STRING (env->isolate (), " RandomBytes" ));
6267
+ Local<ObjectTemplate> rbt = rb->InstanceTemplate ();
6268
+ rbt->SetInternalFieldCount (1 );
6269
+ env->set_randombytes_constructor_template (rbt);
6254
6270
}
6255
6271
6256
6272
} // namespace crypto
0 commit comments