diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 21 | ||||
m--------- | src/deps/uws | 0 | ||||
-rw-r--r-- | src/js/node/tls.js | 4 | ||||
-rw-r--r-- | src/js/out/modules/node/tls.js | 6 |
4 files changed, 28 insertions, 3 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)); } diff --git a/src/deps/uws b/src/deps/uws -Subproject 875948226eede72861a5170212ff6b43c4b7d7f +Subproject f29c6e24c33483c342bbc83c41cc032f42fbf77 diff --git a/src/js/node/tls.js b/src/js/node/tls.js index 0966b584b..e8c2dd998 100644 --- a/src/js/node/tls.js +++ b/src/js/node/tls.js @@ -677,7 +677,7 @@ function convertALPNProtocols(protocols, out) { out.ALPNProtocols = protocols; } } - +var rootCertificates = $lazy("rootCertificates"); var exports = { [Symbol.for("CommonJS")]: 0, CLIENT_RENEG_LIMIT, @@ -698,6 +698,7 @@ var exports = { Server, TLSSocket, checkServerIdentity, + rootCertificates, }; export { @@ -719,5 +720,6 @@ export { checkServerIdentity, Server, TLSSocket, + rootCertificates, exports as default, }; diff --git a/src/js/out/modules/node/tls.js b/src/js/out/modules/node/tls.js index d994a6244..fba1e413a 100644 --- a/src/js/out/modules/node/tls.js +++ b/src/js/out/modules/node/tls.js @@ -414,7 +414,7 @@ var CLIENT_RENEG_LIMIT = 3, CLIENT_RENEG_WINDOW = 600, DEFAULT_ECDH_CURVE = "aut return new TLSSocket(port).connect(port, host2, connectListener); } return new TLSSocket().connect(port, host2, connectListener); -}, connect = createConnection, exports = { +}, connect = createConnection, rootCertificates = globalThis[Symbol.for("Bun.lazy")]("rootCertificates"), exports = { [Symbol.for("CommonJS")]: 0, CLIENT_RENEG_LIMIT, CLIENT_RENEG_WINDOW, @@ -433,9 +433,11 @@ var CLIENT_RENEG_LIMIT = 3, CLIENT_RENEG_WINDOW = 600, DEFAULT_ECDH_CURVE = "aut SecureContext, Server, TLSSocket, - checkServerIdentity + checkServerIdentity, + rootCertificates }; export { + rootCertificates, parseCertString, getCurves, getCiphers, |