@@ -944,6 +944,24 @@ static X509_STORE* NewRootCertStore() {
944944}
945945
946946
947+ void GetRootCertificates (const FunctionCallbackInfo<Value>& args) {
948+ Environment* env = Environment::GetCurrent (args);
949+ Local<Array> result = Array::New (env->isolate (), arraysize (root_certs));
950+
951+ for (size_t i = 0 ; i < arraysize (root_certs); i++) {
952+ Local<Value> value;
953+ if (!String::NewFromOneByte (env->isolate (),
954+ reinterpret_cast <const uint8_t *>(root_certs[i]),
955+ NewStringType::kNormal ).ToLocal (&value) ||
956+ !result->Set (env->context (), i, value).FromMaybe (false )) {
957+ return ;
958+ }
959+ }
960+
961+ args.GetReturnValue ().Set (result);
962+ }
963+
964+
947965void SecureContext::AddCACert (const FunctionCallbackInfo<Value>& args) {
948966 Environment* env = Environment::GetCurrent (args);
949967
@@ -6870,6 +6888,8 @@ void Initialize(Local<Object> target,
68706888 env->SetMethodNoSideEffect (target, " certVerifySpkac" , VerifySpkac);
68716889 env->SetMethodNoSideEffect (target, " certExportPublicKey" , ExportPublicKey);
68726890 env->SetMethodNoSideEffect (target, " certExportChallenge" , ExportChallenge);
6891+ env->SetMethodNoSideEffect (target, " getRootCertificates" ,
6892+ GetRootCertificates);
68736893 // Exposed for testing purposes only.
68746894 env->SetMethodNoSideEffect (target, " isExtraRootCertsFileLoaded" ,
68756895 IsExtraRootCertsFileLoaded);
0 commit comments