@@ -61,6 +61,7 @@ using v8::DontDelete;
61
61
using v8::EscapableHandleScope;
62
62
using v8::Exception;
63
63
using v8::External;
64
+ using v8::FunctionCallback;
64
65
using v8::FunctionCallbackInfo;
65
66
using v8::FunctionTemplate;
66
67
using v8::HandleScope;
@@ -3923,67 +3924,44 @@ void PublicKeyCipher::Cipher(const FunctionCallbackInfo<Value>& args) {
3923
3924
3924
3925
3925
3926
void DiffieHellman::Initialize (Environment* env, Local<Object> target) {
3926
- Local<FunctionTemplate> t = env->NewFunctionTemplate (New);
3927
-
3928
- const PropertyAttribute attributes =
3929
- static_cast <PropertyAttribute>(v8::ReadOnly | v8::DontDelete);
3930
-
3931
- t->InstanceTemplate ()->SetInternalFieldCount (1 );
3932
-
3933
- env->SetProtoMethod (t, " generateKeys" , GenerateKeys);
3934
- env->SetProtoMethod (t, " computeSecret" , ComputeSecret);
3935
- env->SetProtoMethodNoSideEffect (t, " getPrime" , GetPrime);
3936
- env->SetProtoMethodNoSideEffect (t, " getGenerator" , GetGenerator);
3937
- env->SetProtoMethodNoSideEffect (t, " getPublicKey" , GetPublicKey);
3938
- env->SetProtoMethodNoSideEffect (t, " getPrivateKey" , GetPrivateKey);
3939
- env->SetProtoMethod (t, " setPublicKey" , SetPublicKey);
3940
- env->SetProtoMethod (t, " setPrivateKey" , SetPrivateKey);
3941
-
3942
- Local<FunctionTemplate> verify_error_getter_templ =
3943
- FunctionTemplate::New (env->isolate (),
3944
- DiffieHellman::VerifyErrorGetter,
3945
- env->as_external (),
3946
- Signature::New (env->isolate (), t),
3947
- /* length */ 0 ,
3948
- ConstructorBehavior::kThrow ,
3949
- SideEffectType::kHasNoSideEffect );
3950
-
3951
- t->InstanceTemplate ()->SetAccessorProperty (
3952
- env->verify_error_string (),
3953
- verify_error_getter_templ,
3954
- Local<FunctionTemplate>(),
3955
- attributes);
3956
-
3957
- target->Set (FIXED_ONE_BYTE_STRING (env->isolate (), " DiffieHellman" ),
3958
- t->GetFunction (env->context ()).ToLocalChecked ());
3959
-
3960
- Local<FunctionTemplate> t2 = env->NewFunctionTemplate (DiffieHellmanGroup);
3961
- t2->InstanceTemplate ()->SetInternalFieldCount (1 );
3962
-
3963
- env->SetProtoMethod (t2, " generateKeys" , GenerateKeys);
3964
- env->SetProtoMethod (t2, " computeSecret" , ComputeSecret);
3965
- env->SetProtoMethodNoSideEffect (t2, " getPrime" , GetPrime);
3966
- env->SetProtoMethodNoSideEffect (t2, " getGenerator" , GetGenerator);
3967
- env->SetProtoMethodNoSideEffect (t2, " getPublicKey" , GetPublicKey);
3968
- env->SetProtoMethodNoSideEffect (t2, " getPrivateKey" , GetPrivateKey);
3969
-
3970
- Local<FunctionTemplate> verify_error_getter_templ2 =
3971
- FunctionTemplate::New (env->isolate (),
3972
- DiffieHellman::VerifyErrorGetter,
3973
- env->as_external (),
3974
- Signature::New (env->isolate (), t2),
3975
- /* length */ 0 ,
3976
- ConstructorBehavior::kThrow ,
3977
- SideEffectType::kHasNoSideEffect );
3978
-
3979
- t2->InstanceTemplate ()->SetAccessorProperty (
3980
- env->verify_error_string (),
3981
- verify_error_getter_templ2,
3982
- Local<FunctionTemplate>(),
3983
- attributes);
3927
+ auto make = [&] (Local<String> name, FunctionCallback callback) {
3928
+ Local<FunctionTemplate> t = env->NewFunctionTemplate (callback);
3929
+
3930
+ const PropertyAttribute attributes =
3931
+ static_cast <PropertyAttribute>(v8::ReadOnly | v8::DontDelete);
3932
+
3933
+ t->InstanceTemplate ()->SetInternalFieldCount (1 );
3934
+
3935
+ env->SetProtoMethod (t, " generateKeys" , GenerateKeys);
3936
+ env->SetProtoMethod (t, " computeSecret" , ComputeSecret);
3937
+ env->SetProtoMethodNoSideEffect (t, " getPrime" , GetPrime);
3938
+ env->SetProtoMethodNoSideEffect (t, " getGenerator" , GetGenerator);
3939
+ env->SetProtoMethodNoSideEffect (t, " getPublicKey" , GetPublicKey);
3940
+ env->SetProtoMethodNoSideEffect (t, " getPrivateKey" , GetPrivateKey);
3941
+ env->SetProtoMethod (t, " setPublicKey" , SetPublicKey);
3942
+ env->SetProtoMethod (t, " setPrivateKey" , SetPrivateKey);
3943
+
3944
+ Local<FunctionTemplate> verify_error_getter_templ =
3945
+ FunctionTemplate::New (env->isolate (),
3946
+ DiffieHellman::VerifyErrorGetter,
3947
+ env->as_external (),
3948
+ Signature::New (env->isolate (), t),
3949
+ /* length */ 0 ,
3950
+ ConstructorBehavior::kThrow ,
3951
+ SideEffectType::kHasNoSideEffect );
3952
+
3953
+ t->InstanceTemplate ()->SetAccessorProperty (
3954
+ env->verify_error_string (),
3955
+ verify_error_getter_templ,
3956
+ Local<FunctionTemplate>(),
3957
+ attributes);
3958
+
3959
+ target->Set (name, t->GetFunction (env->context ()).ToLocalChecked ());
3960
+ };
3984
3961
3985
- target->Set (FIXED_ONE_BYTE_STRING (env->isolate (), " DiffieHellmanGroup" ),
3986
- t2->GetFunction (env->context ()).ToLocalChecked ());
3962
+ make (FIXED_ONE_BYTE_STRING (env->isolate (), " DiffieHellman" ), New);
3963
+ make (FIXED_ONE_BYTE_STRING (env->isolate (), " DiffieHellmanGroup" ),
3964
+ DiffieHellmanGroup);
3987
3965
}
3988
3966
3989
3967
0 commit comments