diff options
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 21 |
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)); } |