Skip to content

Commit baa5d00

Browse files
tniessenbengl
authored andcommitted
src: refactor GetCipherValue and related functions
Modernize and simplify GetCipherValue and its call sites. PR-URL: #43171 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
1 parent a07f5f2 commit baa5d00

File tree

2 files changed

+12
-43
lines changed

2 files changed

+12
-43
lines changed

src/crypto/crypto_common.cc

+12-31
Original file line numberDiff line numberDiff line change
@@ -314,28 +314,17 @@ bool Set(
314314
return !target->Set(context, name, value).IsNothing();
315315
}
316316

317-
MaybeLocal<Value> GetCipherValue(Environment* env,
318-
const SSL_CIPHER* cipher,
319-
const char* (*getstr)(const SSL_CIPHER* cipher)) {
317+
template <const char* (*getstr)(const SSL_CIPHER* cipher)>
318+
MaybeLocal<Value> GetCipherValue(Environment* env, const SSL_CIPHER* cipher) {
320319
if (cipher == nullptr)
321320
return Undefined(env->isolate());
322321

323322
return OneByteString(env->isolate(), getstr(cipher));
324323
}
325324

326-
MaybeLocal<Value> GetCipherName(Environment* env, const SSL_CIPHER* cipher) {
327-
return GetCipherValue(env, cipher, SSL_CIPHER_get_name);
328-
}
329-
330-
MaybeLocal<Value> GetCipherStandardName(
331-
Environment* env,
332-
const SSL_CIPHER* cipher) {
333-
return GetCipherValue(env, cipher, SSL_CIPHER_standard_name);
334-
}
335-
336-
MaybeLocal<Value> GetCipherVersion(Environment* env, const SSL_CIPHER* cipher) {
337-
return GetCipherValue(env, cipher, SSL_CIPHER_get_version);
338-
}
325+
constexpr auto GetCipherName = GetCipherValue<SSL_CIPHER_get_name>;
326+
constexpr auto GetCipherStandardName = GetCipherValue<SSL_CIPHER_standard_name>;
327+
constexpr auto GetCipherVersion = GetCipherValue<SSL_CIPHER_get_version>;
339328

340329
StackOfX509 CloneSSLCerts(X509Pointer&& cert,
341330
const STACK_OF(X509)* const ssl_certs) {
@@ -1052,18 +1041,10 @@ static MaybeLocal<Value> GetX509NameObject(Environment* env, X509* cert) {
10521041
return result;
10531042
}
10541043

1055-
MaybeLocal<Value> GetCipherName(Environment* env, const SSLPointer& ssl) {
1056-
return GetCipherName(env, SSL_get_current_cipher(ssl.get()));
1057-
}
1058-
1059-
MaybeLocal<Value> GetCipherStandardName(
1060-
Environment* env,
1061-
const SSLPointer& ssl) {
1062-
return GetCipherStandardName(env, SSL_get_current_cipher(ssl.get()));
1063-
}
1064-
1065-
MaybeLocal<Value> GetCipherVersion(Environment* env, const SSLPointer& ssl) {
1066-
return GetCipherVersion(env, SSL_get_current_cipher(ssl.get()));
1044+
template <MaybeLocal<Value> (*Get)(Environment* env, const SSL_CIPHER* cipher)>
1045+
MaybeLocal<Value> GetCurrentCipherValue(Environment* env,
1046+
const SSLPointer& ssl) {
1047+
return Get(env, SSL_get_current_cipher(ssl.get()));
10671048
}
10681049

10691050
MaybeLocal<Array> GetClientHelloCiphers(
@@ -1109,15 +1090,15 @@ MaybeLocal<Object> GetCipherInfo(Environment* env, const SSLPointer& ssl) {
11091090
if (!Set<Value>(env->context(),
11101091
info,
11111092
env->name_string(),
1112-
GetCipherName(env, ssl)) ||
1093+
GetCurrentCipherValue<GetCipherName>(env, ssl)) ||
11131094
!Set<Value>(env->context(),
11141095
info,
11151096
env->standard_name_string(),
1116-
GetCipherStandardName(env, ssl)) ||
1097+
GetCurrentCipherValue<GetCipherStandardName>(env, ssl)) ||
11171098
!Set<Value>(env->context(),
11181099
info,
11191100
env->version_string(),
1120-
GetCipherVersion(env, ssl))) {
1101+
GetCurrentCipherValue<GetCipherVersion>(env, ssl))) {
11211102
return MaybeLocal<Object>();
11221103
}
11231104

src/crypto/crypto_common.h

-12
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,6 @@ v8::MaybeLocal<v8::Value> GetValidationErrorCode(Environment* env, int err);
7474

7575
v8::MaybeLocal<v8::Value> GetCert(Environment* env, const SSLPointer& ssl);
7676

77-
v8::MaybeLocal<v8::Value> GetCipherName(
78-
Environment* env,
79-
const SSLPointer& ssl);
80-
81-
v8::MaybeLocal<v8::Value> GetCipherStandardName(
82-
Environment* env,
83-
const SSLPointer& ssl);
84-
85-
v8::MaybeLocal<v8::Value> GetCipherVersion(
86-
Environment* env,
87-
const SSLPointer& ssl);
88-
8977
v8::MaybeLocal<v8::Object> GetCipherInfo(
9078
Environment* env,
9179
const SSLPointer& ssl);

0 commit comments

Comments
 (0)