@@ -314,28 +314,17 @@ bool Set(
314
314
return !target->Set (context, name, value).IsNothing ();
315
315
}
316
316
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) {
320
319
if (cipher == nullptr )
321
320
return Undefined (env->isolate ());
322
321
323
322
return OneByteString (env->isolate (), getstr (cipher));
324
323
}
325
324
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>;
339
328
340
329
StackOfX509 CloneSSLCerts (X509Pointer&& cert,
341
330
const STACK_OF (X509)* const ssl_certs) {
@@ -1052,18 +1041,10 @@ static MaybeLocal<Value> GetX509NameObject(Environment* env, X509* cert) {
1052
1041
return result;
1053
1042
}
1054
1043
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 ()));
1067
1048
}
1068
1049
1069
1050
MaybeLocal<Array> GetClientHelloCiphers (
@@ -1109,15 +1090,15 @@ MaybeLocal<Object> GetCipherInfo(Environment* env, const SSLPointer& ssl) {
1109
1090
if (!Set<Value>(env->context (),
1110
1091
info,
1111
1092
env->name_string (),
1112
- GetCipherName (env, ssl)) ||
1093
+ GetCurrentCipherValue< GetCipherName> (env, ssl)) ||
1113
1094
!Set<Value>(env->context (),
1114
1095
info,
1115
1096
env->standard_name_string (),
1116
- GetCipherStandardName (env, ssl)) ||
1097
+ GetCurrentCipherValue< GetCipherStandardName> (env, ssl)) ||
1117
1098
!Set<Value>(env->context (),
1118
1099
info,
1119
1100
env->version_string (),
1120
- GetCipherVersion (env, ssl))) {
1101
+ GetCurrentCipherValue< GetCipherVersion> (env, ssl))) {
1121
1102
return MaybeLocal<Object>();
1122
1103
}
1123
1104
0 commit comments