src: pull in more electron boringssl adjustments · nodejs/node@9624049
@@ -7,7 +7,9 @@
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) {
8890if (args[0]->IsInt32()) {
8991int32_t bits = args[0].As<Int32>()->Value();
9092if (bits < 2) {
93+#ifndef OPENSSL_IS_BORINGSSL
9194#if OPENSSL_VERSION_MAJOR >= 3
9295ERR_put_error(ERR_LIB_DH, 0, DH_R_MODULUS_TOO_SMALL, __FILE__, __LINE__);
9396#else
9497ERR_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
96102return ThrowCryptoError(env, ERR_get_error(), "Invalid prime length");
97103 }
98104@@ -105,7 +111,11 @@ void New(const FunctionCallbackInfo<Value>& args) {
105111 }
106112int32_t generator = args[1].As<Int32>()->Value();
107113if (generator < 2) {
114+#ifndef OPENSSL_IS_BORINGSSL
108115ERR_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
109119return ThrowCryptoError(env, ERR_get_error(), "Invalid generator");
110120 }
111121@@ -134,12 +144,20 @@ void New(const FunctionCallbackInfo<Value>& args) {
134144if (args[1]->IsInt32()) {
135145int32_t generator = args[1].As<Int32>()->Value();
136146if (generator < 2) {
147+#ifndef OPENSSL_IS_BORINGSSL
137148ERR_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
138152return ThrowCryptoError(env, ERR_get_error(), "Invalid generator");
139153 }
140154 bn_g = BignumPointer::New();
141155if (!bn_g.setWord(generator)) {
156+#ifndef OPENSSL_IS_BORINGSSL
142157ERR_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
143161return ThrowCryptoError(env, ERR_get_error(), "Invalid generator");
144162 }
145163 } else {
@@ -148,11 +166,19 @@ void New(const FunctionCallbackInfo<Value>& args) {
148166return THROW_ERR_OUT_OF_RANGE(env, "generator is too big");
149167 bn_g = BignumPointer(reinterpret_cast<uint8_t*>(arg1.data()), arg1.size());
150168if (!bn_g) {
169+#ifndef OPENSSL_IS_BORINGSSL
151170ERR_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
152174return ThrowCryptoError(env, ERR_get_error(), "Invalid generator");
153175 }
154176if (bn_g.getWord() < 2) {
177+#ifndef OPENSSL_IS_BORINGSSL
155178ERR_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
156182return ThrowCryptoError(env, ERR_get_error(), "Invalid generator");
157183 }
158184 }
@@ -398,14 +424,19 @@ EVPKeyCtxPointer DhKeyGenTraits::Setup(DhKeyPairGenConfig* params) {
398424if (!dh) return {};
399425400426 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)) {
402428auto param_ctx = EVPKeyCtxPointer::NewFromID(EVP_PKEY_DH);
429+#ifndef OPENSSL_IS_BORINGSSL
430+int* prime_size = std::get_if<int>(¶ms->params.prime);
403431if (!param_ctx.initForParamgen() ||
404432 !param_ctx.setDhParameters(*prime_size, params->params.generator)) {
405433return {};
406434 }
407435408436 key_params = param_ctx.paramgen();
437+#else
438+return {};
439+#endif
409440 } else {
410441UNREACHABLE();
411442 }