aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 0262050ff..34ef5e38a 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -199,6 +199,7 @@ namespace JSCastingHelpers = JSC::JSCastingHelpers;
#include <wtf/RAMSize.h>
#include <wtf/text/Base64.h>
#include "simdutf.h"
+#include "libusockets.h"
constexpr size_t DEFAULT_ERROR_STACK_TRACE_LIMIT = 10;
@@ -1641,6 +1642,26 @@ JSC:
return JSValue::encode(obj);
}
+ if(string == "rootCertificates"_s) {
+ auto sourceOrigin = callFrame->callerSourceOrigin(vm).url();
+ bool isBuiltin = sourceOrigin.protocolIs("builtin"_s);
+ if (!isBuiltin) {
+ return JSC::JSValue::encode(JSC::jsUndefined());
+ }
+ struct us_cert_string_t* out;
+ auto size = us_raw_root_certs(&out);
+ if (size < 0) {
+ return JSValue::encode(JSC::jsUndefined());
+ }
+ auto rootCertificates = JSC::JSArray::create(vm, globalObject->arrayStructureForIndexingTypeDuringAllocation(JSC::ArrayWithContiguous), size);
+ for(auto i = 0; i < size; i++) {
+ auto raw = out[i];
+ auto str = WTF::String::fromUTF8(raw.str, raw.len);
+ rootCertificates->putDirectIndex(globalObject, i, JSC::jsString(vm, str));
+ }
+ return JSValue::encode(rootCertificates);
+ }
+
if (string == "masqueradesAsUndefined"_s) {
return JSValue::encode(InternalFunction::createFunctionThatMasqueradesAsUndefined(vm, globalObject, 0, String(), functionCallNotImplemented));
}