◐ Shell
clean mode source ↗

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) {

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 {};

399425400426

key_params = EVPKeyPointer::NewDH(std::move(dh));

401-

} else if (int* prime_size = std::get_if<int>(&params->params.prime)) {

427+

} else if (std::get_if<int>(&params->params.prime)) {

402428

auto param_ctx = EVPKeyCtxPointer::NewFromID(EVP_PKEY_DH);

429+

#ifndef OPENSSL_IS_BORINGSSL

430+

int* prime_size = std::get_if<int>(&params->params.prime);

403431

if (!param_ctx.initForParamgen() ||

404432

!param_ctx.setDhParameters(*prime_size, params->params.generator)) {

405433

return {};

406434

}

407435408436

key_params = param_ctx.paramgen();

437+

#else

438+

return {};

439+

#endif

409440

} else {

410441

UNREACHABLE();

411442

}