Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7bb3d43

Browse filesBrowse files
joyeecheungBethGriggs
authored andcommitted
src: register external references in crypto bindings
PR-URL: #40239 Refs: #38905 Refs: #37476 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent af4e682 commit 7bb3d43
Copy full SHA for 7bb3d43
Expand file treeCollapse file tree

38 files changed

+405
-33
lines changed
Open diff view settings
Collapse file

‎src/crypto/crypto_aes.cc‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_aes.cc
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,5 +603,9 @@ void AES::Initialize(Environment* env, Local<Object> target) {
603603
#undef V
604604
}
605605

606+
void AES::RegisterExternalReferences(ExternalReferenceRegistry* registry) {
607+
AESCryptoJob::RegisterExternalReferences(registry);
608+
}
609+
606610
} // namespace crypto
607611
} // namespace node
Collapse file

‎src/crypto/crypto_aes.h‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_aes.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ using AESCryptoJob = CipherJob<AESCipherTraits>;
8181

8282
namespace AES {
8383
void Initialize(Environment* env, v8::Local<v8::Object> target);
84+
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
8485
} // namespace AES
8586
} // namespace crypto
8687
} // namespace node
Collapse file

‎src/crypto/crypto_cipher.cc‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_cipher.cc
+32Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,38 @@ void CipherBase::Initialize(Environment* env, Local<Object> target) {
297297
NODE_DEFINE_CONSTANT(target, kWebCryptoCipherDecrypt);
298298
}
299299

300+
void CipherBase::RegisterExternalReferences(
301+
ExternalReferenceRegistry* registry) {
302+
registry->Register(New);
303+
304+
registry->Register(Init);
305+
registry->Register(InitIv);
306+
registry->Register(Update);
307+
registry->Register(Final);
308+
registry->Register(SetAutoPadding);
309+
registry->Register(GetAuthTag);
310+
registry->Register(SetAuthTag);
311+
registry->Register(SetAAD);
312+
313+
registry->Register(GetSSLCiphers);
314+
registry->Register(GetCiphers);
315+
316+
registry->Register(PublicKeyCipher::Cipher<PublicKeyCipher::kPublic,
317+
EVP_PKEY_encrypt_init,
318+
EVP_PKEY_encrypt>);
319+
registry->Register(PublicKeyCipher::Cipher<PublicKeyCipher::kPrivate,
320+
EVP_PKEY_decrypt_init,
321+
EVP_PKEY_decrypt>);
322+
registry->Register(PublicKeyCipher::Cipher<PublicKeyCipher::kPrivate,
323+
EVP_PKEY_sign_init,
324+
EVP_PKEY_sign>);
325+
registry->Register(PublicKeyCipher::Cipher<PublicKeyCipher::kPublic,
326+
EVP_PKEY_verify_recover_init,
327+
EVP_PKEY_verify_recover>);
328+
329+
registry->Register(GetCipherInfo);
330+
}
331+
300332
void CipherBase::New(const FunctionCallbackInfo<Value>& args) {
301333
CHECK(args.IsConstructCall());
302334
Environment* env = Environment::GetCurrent(args);
Collapse file

‎src/crypto/crypto_cipher.h‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_cipher.h
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class CipherBase : public BaseObject {
2121
static void GetCiphers(const v8::FunctionCallbackInfo<v8::Value>& args);
2222

2323
static void Initialize(Environment* env, v8::Local<v8::Object> target);
24+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
2425

2526
void MemoryInfo(MemoryTracker* tracker) const override;
2627
SET_MEMORY_INFO_NAME(CipherBase)
@@ -190,6 +191,10 @@ class CipherJob final : public CryptoJob<CipherTraits> {
190191
CryptoJob<CipherTraits>::Initialize(New, env, target);
191192
}
192193

194+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
195+
CryptoJob<CipherTraits>::RegisterExternalReferences(New, registry);
196+
}
197+
193198
CipherJob(
194199
Environment* env,
195200
v8::Local<v8::Object> object,
Collapse file

‎src/crypto/crypto_context.cc‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_context.cc
+41Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,47 @@ void SecureContext::Initialize(Environment* env, Local<Object> target) {
339339
IsExtraRootCertsFileLoaded);
340340
}
341341

342+
void SecureContext::RegisterExternalReferences(
343+
ExternalReferenceRegistry* registry) {
344+
registry->Register(New);
345+
registry->Register(Init);
346+
registry->Register(SetKey);
347+
registry->Register(SetCert);
348+
registry->Register(AddCACert);
349+
registry->Register(AddCRL);
350+
registry->Register(AddRootCerts);
351+
registry->Register(SetCipherSuites);
352+
registry->Register(SetCiphers);
353+
registry->Register(SetSigalgs);
354+
registry->Register(SetECDHCurve);
355+
registry->Register(SetDHParam);
356+
registry->Register(SetMaxProto);
357+
registry->Register(SetMinProto);
358+
registry->Register(GetMaxProto);
359+
registry->Register(GetMinProto);
360+
registry->Register(SetOptions);
361+
registry->Register(SetSessionIdContext);
362+
registry->Register(SetSessionTimeout);
363+
registry->Register(Close);
364+
registry->Register(LoadPKCS12);
365+
registry->Register(SetTicketKeys);
366+
registry->Register(SetFreeListLength);
367+
registry->Register(EnableTicketKeyCallback);
368+
registry->Register(GetTicketKeys);
369+
registry->Register(GetCertificate<true>);
370+
registry->Register(GetCertificate<false>);
371+
372+
#ifndef OPENSSL_NO_ENGINE
373+
registry->Register(SetEngineKey);
374+
registry->Register(SetClientCertEngine);
375+
#endif // !OPENSSL_NO_ENGINE
376+
377+
registry->Register(CtxGetter);
378+
379+
registry->Register(GetRootCertificates);
380+
registry->Register(IsExtraRootCertsFileLoaded);
381+
}
382+
342383
SecureContext* SecureContext::Create(Environment* env) {
343384
Local<Object> obj;
344385
if (!GetConstructorTemplate(env)
Collapse file

‎src/crypto/crypto_context.h‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_context.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class SecureContext final : public BaseObject {
3838
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
3939
Environment* env);
4040
static void Initialize(Environment* env, v8::Local<v8::Object> target);
41+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
4142
static SecureContext* Create(Environment* env);
4243

4344
SSL_CTX* operator*() const { return ctx_.get(); }
Collapse file

‎src/crypto/crypto_dh.cc‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_dh.cc
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,28 @@ void DiffieHellman::Initialize(Environment* env, Local<Object> target) {
108108
DHBitsJob::Initialize(env, target);
109109
}
110110

111+
void DiffieHellman::RegisterExternalReferences(
112+
ExternalReferenceRegistry* registry) {
113+
registry->Register(New);
114+
registry->Register(DiffieHellmanGroup);
115+
116+
registry->Register(GenerateKeys);
117+
registry->Register(ComputeSecret);
118+
registry->Register(GetPrime);
119+
registry->Register(GetGenerator);
120+
registry->Register(GetPublicKey);
121+
registry->Register(GetPrivateKey);
122+
registry->Register(SetPublicKey);
123+
registry->Register(SetPrivateKey);
124+
125+
registry->Register(DiffieHellman::VerifyErrorGetter);
126+
registry->Register(DiffieHellman::Stateless);
127+
128+
DHKeyPairGenJob::RegisterExternalReferences(registry);
129+
DHKeyExportJob::RegisterExternalReferences(registry);
130+
DHBitsJob::RegisterExternalReferences(registry);
131+
}
132+
111133
bool DiffieHellman::Init(int primeLength, int g) {
112134
dh_.reset(DH_new());
113135
if (!DH_generate_parameters_ex(dh_.get(), primeLength, g, nullptr))
Collapse file

‎src/crypto/crypto_dh.h‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_dh.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace crypto {
1717
class DiffieHellman : public BaseObject {
1818
public:
1919
static void Initialize(Environment* env, v8::Local<v8::Object> target);
20+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
2021

2122
bool Init(int primeLength, int g);
2223
bool Init(const char* p, int p_len, int g);
Collapse file

‎src/crypto/crypto_dsa.cc‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_dsa.cc
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ void Initialize(Environment* env, Local<Object> target) {
167167
DsaKeyPairGenJob::Initialize(env, target);
168168
DSAKeyExportJob::Initialize(env, target);
169169
}
170+
171+
void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
172+
DsaKeyPairGenJob::RegisterExternalReferences(registry);
173+
DSAKeyExportJob::RegisterExternalReferences(registry);
174+
}
170175
} // namespace DSAAlg
171176
} // namespace crypto
172177
} // namespace node
Collapse file

‎src/crypto/crypto_dsa.h‎

Copy file name to clipboardExpand all lines: src/crypto/crypto_dsa.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ v8::Maybe<bool> GetDsaKeyDetail(
6868

6969
namespace DSAAlg {
7070
void Initialize(Environment* env, v8::Local<v8::Object> target);
71+
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
7172
} // namespace DSAAlg
7273
} // namespace crypto
7374
} // namespace node

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.