5
5
#include " crypto/crypto_util.h"
6
6
#include " env-inl.h"
7
7
#include " memory_tracker-inl.h"
8
+ #include " ncrypto.h"
8
9
#include " node_errors.h"
9
10
#include " threadpoolwork-inl.h"
10
11
#include " v8.h"
@@ -83,7 +84,12 @@ void New(const FunctionCallbackInfo<Value>& args) {
83
84
if (args[0 ]->IsInt32 ()) {
84
85
int32_t bits = args[0 ].As <Int32>()->Value ();
85
86
if (bits < 2 ) {
86
- return THROW_ERR_OUT_OF_RANGE (env, " Invalid prime length" );
87
+ #if OPENSSL_VERSION_MAJOR >= 3
88
+ ERR_raise (ERR_LIB_DH, DH_R_MODULUS_TOO_SMALL);
89
+ #else
90
+ ERR_raise (ERR_LIB_BN, BN_R_BITS_TOO_SMALL);
91
+ #endif
92
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid prime length" );
87
93
}
88
94
89
95
// If the first argument is an Int32 then we are generating a new
@@ -95,7 +101,8 @@ void New(const FunctionCallbackInfo<Value>& args) {
95
101
}
96
102
int32_t generator = args[1 ].As <Int32>()->Value ();
97
103
if (generator < 2 ) {
98
- return THROW_ERR_OUT_OF_RANGE (env, " Invalid generator" );
104
+ ERR_raise (ERR_LIB_DH, DH_R_BAD_GENERATOR);
105
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
99
106
}
100
107
101
108
auto dh = DHPointer::New (bits, generator);
@@ -123,22 +130,26 @@ void New(const FunctionCallbackInfo<Value>& args) {
123
130
if (args[1 ]->IsInt32 ()) {
124
131
int32_t generator = args[1 ].As <Int32>()->Value ();
125
132
if (generator < 2 ) {
126
- return THROW_ERR_OUT_OF_RANGE (env, " Invalid generator" );
133
+ ERR_raise (ERR_LIB_DH, DH_R_BAD_GENERATOR);
134
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
127
135
}
128
136
bn_g = BignumPointer::New ();
129
137
if (!bn_g.setWord (generator)) {
130
- return THROW_ERR_INVALID_ARG_VALUE (env, " Invalid generator" );
138
+ ERR_raise (ERR_LIB_DH, DH_R_BAD_GENERATOR);
139
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
131
140
}
132
141
} else {
133
142
ArrayBufferOrViewContents<char > arg1 (args[1 ]);
134
143
if (UNLIKELY (!arg1.CheckSizeInt32 ()))
135
144
return THROW_ERR_OUT_OF_RANGE (env, " generator is too big" );
136
145
bn_g = BignumPointer (reinterpret_cast <uint8_t *>(arg1.data ()), arg1.size ());
137
146
if (!bn_g) {
138
- return THROW_ERR_INVALID_ARG_VALUE (env, " Invalid generator" );
147
+ ERR_raise (ERR_LIB_DH, DH_R_BAD_GENERATOR);
148
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
139
149
}
140
150
if (bn_g.getWord () < 2 ) {
141
- return THROW_ERR_OUT_OF_RANGE (env, " Invalid generator" );
151
+ ERR_raise (ERR_LIB_DH, DH_R_BAD_GENERATOR);
152
+ return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
142
153
}
143
154
}
144
155
0 commit comments