77#include " memory_tracker-inl.h"
88#include " ncrypto.h"
99#include " node_errors.h"
10+ #ifndef OPENSSL_IS_BORINGSSL
1011#include " openssl/bnerr.h"
12+ #endif
1113#include " openssl/dh.h"
1214#include " threadpoolwork-inl.h"
1315#include " v8.h"
@@ -88,11 +90,15 @@ void New(const FunctionCallbackInfo<Value>& args) {
8890 if (args[0 ]->IsInt32 ()) {
8991 int32_t bits = args[0 ].As <Int32>()->Value ();
9092 if (bits < 2 ) {
93+ #ifndef OPENSSL_IS_BORINGSSL
9194#if OPENSSL_VERSION_MAJOR >= 3
9295 ERR_put_error (ERR_LIB_DH, 0 , DH_R_MODULUS_TOO_SMALL, __FILE__, __LINE__);
9396#else
9497 ERR_put_error (ERR_LIB_BN, 0 , BN_R_BITS_TOO_SMALL, __FILE__, __LINE__);
95- #endif
98+ #endif // OPENSSL_VERSION_MAJOR >= 3
99+ #else // OPENSSL_IS_BORINGSSL
100+ OPENSSL_PUT_ERROR (BN, BN_R_BITS_TOO_SMALL);
101+ #endif // OPENSSL_IS_BORINGSSL
96102 return ThrowCryptoError (env, ERR_get_error (), " Invalid prime length" );
97103 }
98104
@@ -105,7 +111,11 @@ void New(const FunctionCallbackInfo<Value>& args) {
105111 }
106112 int32_t generator = args[1 ].As <Int32>()->Value ();
107113 if (generator < 2 ) {
114+ #ifndef OPENSSL_IS_BORINGSSL
108115 ERR_put_error (ERR_LIB_DH, 0 , DH_R_BAD_GENERATOR, __FILE__, __LINE__);
116+ #else
117+ OPENSSL_PUT_ERROR (DH, DH_R_BAD_GENERATOR);
118+ #endif
109119 return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
110120 }
111121
@@ -134,12 +144,20 @@ void New(const FunctionCallbackInfo<Value>& args) {
134144 if (args[1 ]->IsInt32 ()) {
135145 int32_t generator = args[1 ].As <Int32>()->Value ();
136146 if (generator < 2 ) {
147+ #ifndef OPENSSL_IS_BORINGSSL
137148 ERR_put_error (ERR_LIB_DH, 0 , DH_R_BAD_GENERATOR, __FILE__, __LINE__);
149+ #else
150+ OPENSSL_PUT_ERROR (DH, DH_R_BAD_GENERATOR);
151+ #endif
138152 return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
139153 }
140154 bn_g = BignumPointer::New ();
141155 if (!bn_g.setWord (generator)) {
156+ #ifndef OPENSSL_IS_BORINGSSL
142157 ERR_put_error (ERR_LIB_DH, 0 , DH_R_BAD_GENERATOR, __FILE__, __LINE__);
158+ #else
159+ OPENSSL_PUT_ERROR (DH, DH_R_BAD_GENERATOR);
160+ #endif
143161 return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
144162 }
145163 } else {
@@ -148,11 +166,19 @@ void New(const FunctionCallbackInfo<Value>& args) {
148166 return THROW_ERR_OUT_OF_RANGE (env, " generator is too big" );
149167 bn_g = BignumPointer (reinterpret_cast <uint8_t *>(arg1.data ()), arg1.size ());
150168 if (!bn_g) {
169+ #ifndef OPENSSL_IS_BORINGSSL
151170 ERR_put_error (ERR_LIB_DH, 0 , DH_R_BAD_GENERATOR, __FILE__, __LINE__);
171+ #else
172+ OPENSSL_PUT_ERROR (DH, DH_R_BAD_GENERATOR);
173+ #endif
152174 return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
153175 }
154176 if (bn_g.getWord () < 2 ) {
177+ #ifndef OPENSSL_IS_BORINGSSL
155178 ERR_put_error (ERR_LIB_DH, 0 , DH_R_BAD_GENERATOR, __FILE__, __LINE__);
179+ #else
180+ OPENSSL_PUT_ERROR (DH, DH_R_BAD_GENERATOR);
181+ #endif
156182 return ThrowCryptoError (env, ERR_get_error (), " Invalid generator" );
157183 }
158184 }
@@ -398,14 +424,19 @@ EVPKeyCtxPointer DhKeyGenTraits::Setup(DhKeyPairGenConfig* params) {
398424 if (!dh) return {};
399425
400426 key_params = EVPKeyPointer::NewDH (std::move (dh));
401- } else if (int * prime_size = std::get_if<int >(¶ms->params .prime )) {
427+ } else if (std::get_if<int >(¶ms->params .prime )) {
402428 auto param_ctx = EVPKeyCtxPointer::NewFromID (EVP_PKEY_DH);
429+ #ifndef OPENSSL_IS_BORINGSSL
430+ int * prime_size = std::get_if<int >(¶ms->params .prime );
403431 if (!param_ctx.initForParamgen () ||
404432 !param_ctx.setDhParameters (*prime_size, params->params .generator )) {
405433 return {};
406434 }
407435
408436 key_params = param_ctx.paramgen ();
437+ #else
438+ return {};
439+ #endif
409440 } else {
410441 UNREACHABLE ();
411442 }
0 commit comments