aboutsummaryrefslogtreecommitdiff
path: root/src/js/out/modules/node/tls.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/out/modules/node/tls.js')
-rw-r--r--src/js/out/modules/node/tls.js460
1 files changed, 0 insertions, 460 deletions
diff --git a/src/js/out/modules/node/tls.js b/src/js/out/modules/node/tls.js
deleted file mode 100644
index 245699578..000000000
--- a/src/js/out/modules/node/tls.js
+++ /dev/null
@@ -1,460 +0,0 @@
-import {isArrayBufferView, isTypedArray} from "node:util/types";
-import net, {Server as NetServer} from "node:net";
-var parseCertString = function() {
- throwNotImplemented("Not implemented");
-}, isValidTLSArray = function(obj) {
- if (typeof obj === "string" || isTypedArray(obj) || obj instanceof ArrayBuffer || obj instanceof Blob)
- return !0;
- if (Array.isArray(obj)) {
- for (var i = 0;i < obj.length; i++)
- if (typeof obj !== "string" && !isTypedArray(obj) && !(obj instanceof ArrayBuffer) && !(obj instanceof Blob))
- return !1;
- return !0;
- }
-}, unfqdn = function(host2) {
- return RegExpPrototypeSymbolReplace.call(/[.]$/, host2, "");
-}, toLowerCase = function(c) {
- return StringFromCharCode.call(32 + StringPrototypeCharCodeAt.call(c, 0));
-}, splitHost = function(host2) {
- return StringPrototypeSplit.call(RegExpPrototypeSymbolReplace.call(/[A-Z]/g, unfqdn(host2), toLowerCase), ".");
-}, check = function(hostParts, pattern, wildcards) {
- if (!pattern)
- return !1;
- const patternParts = splitHost(pattern);
- if (hostParts.length !== patternParts.length)
- return !1;
- if (ArrayPrototypeIncludes.call(patternParts, ""))
- return !1;
- const isBad = (s) => RegExpPrototypeExec.call(/[^\u0021-\u007F]/u, s) !== null;
- if (ArrayPrototypeSome.call(patternParts, isBad))
- return !1;
- for (let i = hostParts.length - 1;i > 0; i -= 1)
- if (hostParts[i] !== patternParts[i])
- return !1;
- const hostSubdomain = hostParts[0], patternSubdomain = patternParts[0], patternSubdomainParts = StringPrototypeSplit.call(patternSubdomain, "*");
- if (patternSubdomainParts.length === 1 || StringPrototypeIncludes.call(patternSubdomain, "xn--"))
- return hostSubdomain === patternSubdomain;
- if (!wildcards)
- return !1;
- if (patternSubdomainParts.length > 2)
- return !1;
- if (patternParts.length <= 2)
- return !1;
- const { 0: prefix, 1: suffix } = patternSubdomainParts;
- if (prefix.length + suffix.length > hostSubdomain.length)
- return !1;
- if (!StringPrototypeStartsWith.call(hostSubdomain, prefix))
- return !1;
- if (!StringPrototypeEndsWith.call(hostSubdomain, suffix))
- return !1;
- return !0;
-}, splitEscapedAltNames = function(altNames) {
- const result = [];
- let currentToken = "", offset = 0;
- while (offset !== altNames.length) {
- const nextSep = StringPrototypeIndexOf.call(altNames, ", ", offset), nextQuote = StringPrototypeIndexOf.call(altNames, '"', offset);
- if (nextQuote !== -1 && (nextSep === -1 || nextQuote < nextSep)) {
- currentToken += StringPrototypeSubstring.call(altNames, offset, nextQuote);
- const match = RegExpPrototypeExec.call(jsonStringPattern, StringPrototypeSubstring.call(altNames, nextQuote));
- if (!match) {
- let error = new SyntaxError("ERR_TLS_CERT_ALTNAME_FORMAT: Invalid subject alternative name string");
- throw error.name = ERR_TLS_CERT_ALTNAME_FORMAT, error;
- }
- currentToken += JSON.parse(match[0]), offset = nextQuote + match[0].length;
- } else if (nextSep !== -1)
- currentToken += StringPrototypeSubstring.call(altNames, offset, nextSep), ArrayPrototypePush.call(result, currentToken), currentToken = "", offset = nextSep + 2;
- else
- currentToken += StringPrototypeSubstring.call(altNames, offset), offset = altNames.length;
- }
- return ArrayPrototypePush.call(result, currentToken), result;
-}, checkServerIdentity = function(hostname, cert) {
- const { subject, subjectaltname: altNames } = cert, dnsNames = [], ips = [];
- if (hostname = "" + hostname, altNames) {
- const splitAltNames = StringPrototypeIncludes.call(altNames, '"') ? splitEscapedAltNames(altNames) : StringPrototypeSplit.call(altNames, ", ");
- ArrayPrototypeForEach.call(splitAltNames, (name) => {
- if (StringPrototypeStartsWith.call(name, "DNS:"))
- ArrayPrototypePush.call(dnsNames, StringPrototypeSlice.call(name, 4));
- else if (StringPrototypeStartsWith.call(name, "IP Address:"))
- ArrayPrototypePush.call(ips, canonicalizeIP(StringPrototypeSlice.call(name, 11)));
- });
- }
- let valid = !1, reason = "Unknown reason";
- if (hostname = unfqdn(hostname), net.isIP(hostname)) {
- if (valid = ArrayPrototypeIncludes.call(ips, canonicalizeIP(hostname)), !valid)
- reason = `IP: ${hostname} is not in the cert's list: ` + ArrayPrototypeJoin.call(ips, ", ");
- } else if (dnsNames.length > 0 || subject?.CN) {
- const hostParts = splitHost(hostname), wildcard = (pattern) => check(hostParts, pattern, !0);
- if (dnsNames.length > 0) {
- if (valid = ArrayPrototypeSome.call(dnsNames, wildcard), !valid)
- reason = `Host: ${hostname}. is not in the cert's altnames: ${altNames}`;
- } else {
- const cn = subject.CN;
- if (Array.isArray(cn))
- valid = ArrayPrototypeSome.call(cn, wildcard);
- else if (cn)
- valid = wildcard(cn);
- if (!valid)
- reason = `Host: ${hostname}. is not cert's CN: ${cn}`;
- }
- } else
- reason = "Cert does not contain a DNS name";
- if (!valid) {
- let error = new Error(`ERR_TLS_CERT_ALTNAME_INVALID: Hostname/IP does not match certificate's altnames: ${reason}`);
- return error.name = "ERR_TLS_CERT_ALTNAME_INVALID", error.reason = reason, error.host = host, error.cert = cert, error;
- }
-}, SecureContext = function(options) {
- return new InternalSecureContext(options);
-}, createSecureContext = function(options) {
- return new SecureContext(options);
-}, translatePeerCertificate = function(c) {
- if (!c)
- return null;
- if (c.issuerCertificate != null && c.issuerCertificate !== c)
- c.issuerCertificate = translatePeerCertificate(c.issuerCertificate);
- if (c.infoAccess != null) {
- const info = c.infoAccess;
- c.infoAccess = { __proto__: null }, RegExpPrototypeSymbolReplace.call(/([^\n:]*):([^\n]*)(?:\n|$)/g, info, (all, key, val) => {
- if (val.charCodeAt(0) === 34)
- val = JSONParse(val);
- if (key in c.infoAccess)
- ArrayPrototypePush.call(c.infoAccess[key], val);
- else
- c.infoAccess[key] = [val];
- });
- }
- return c;
-}, createServer = function(options, connectionListener) {
- return new Server(options, connectionListener);
-}, getCiphers = function() {
- return DEFAULT_CIPHERS.split(":");
-}, getCurves = function() {
- return;
-}, convertProtocols = function(protocols) {
- const lens = new Array(protocols.length), buff = Buffer.allocUnsafe(ArrayPrototypeReduce.call(protocols, (p, c, i) => {
- const len = Buffer.byteLength(c);
- if (len > 255)
- throw new RangeError("The byte length of the protocol at index " + `${i} exceeds the maximum length.`, "<= 255", len, !0);
- return lens[i] = len, p + 1 + len;
- }, 0));
- let offset = 0;
- for (let i = 0, c = protocols.length;i < c; i++)
- buff[offset++] = lens[i], buff.write(protocols[i], offset), offset += lens[i];
- return buff;
-}, convertALPNProtocols = function(protocols, out) {
- if (Array.isArray(protocols))
- out.ALPNProtocols = convertProtocols(protocols);
- else if (isTypedArray(protocols))
- out.ALPNProtocols = Buffer.from(protocols);
- else if (isArrayBufferView(protocols))
- out.ALPNProtocols = Buffer.from(protocols.buffer.slice(protocols.byteOffset, protocols.byteOffset + protocols.byteLength));
- else if (Buffer.isBuffer(protocols))
- out.ALPNProtocols = protocols;
-}, InternalTCPSocket = net[Symbol.for("::bunternal::")], bunSocketInternal = Symbol.for("::bunnetsocketinternal::"), { RegExp, Array, String } = globalThis[Symbol.for("Bun.lazy")]("primordials"), { rootCertificates, canonicalizeIP } = globalThis[Symbol.for("Bun.lazy")]("internal/tls"), SymbolReplace = Symbol.replace, RegExpPrototypeSymbolReplace = RegExp.prototype[SymbolReplace], RegExpPrototypeExec = RegExp.prototype.exec, StringPrototypeStartsWith = String.prototype.startsWith, StringPrototypeSlice = String.prototype.slice, StringPrototypeIncludes = String.prototype.includes, StringPrototypeSplit = String.prototype.split, StringPrototypeIndexOf = String.prototype.indexOf, StringPrototypeSubstring = String.prototype.substring, StringPrototypeEndsWith = String.prototype.endsWith, StringFromCharCode = String.fromCharCode, StringPrototypeCharCodeAt = String.prototype.charCodeAt, ArrayPrototypeIncludes = Array.prototype.includes, ArrayPrototypeJoin = Array.prototype.join, ArrayPrototypeForEach = Array.prototype.forEach, ArrayPrototypePush = Array.prototype.push, ArrayPrototypeSome = Array.prototype.some, ArrayPrototypeReduce = Array.prototype.reduce, jsonStringPattern = /^"(?:[^"\\\u0000-\u001f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*"/, InternalSecureContext = class SecureContext2 {
- context;
- constructor(options) {
- const context = {};
- if (options) {
- let key = options.key;
- if (key) {
- if (!isValidTLSArray(key))
- throw new TypeError("key argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.key = key;
- }
- let cert = options.cert;
- if (cert) {
- if (!isValidTLSArray(cert))
- throw new TypeError("cert argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.cert = cert;
- }
- let ca = options.ca;
- if (ca) {
- if (!isValidTLSArray(ca))
- throw new TypeError("ca argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.ca = ca;
- }
- let passphrase = options.passphrase;
- if (passphrase && typeof passphrase !== "string")
- throw new TypeError("passphrase argument must be an string");
- this.passphrase = passphrase;
- let servername = options.servername;
- if (servername && typeof servername !== "string")
- throw new TypeError("servername argument must be an string");
- this.servername = servername;
- let secureOptions = options.secureOptions || 0;
- if (secureOptions && typeof secureOptions !== "number")
- throw new TypeError("secureOptions argument must be an number");
- this.secureOptions = secureOptions;
- }
- this.context = context;
- }
-}, buntls = Symbol.for("::buntls::"), SocketClass, TLSSocket = function(InternalTLSSocket) {
- return SocketClass = InternalTLSSocket, Object.defineProperty(SocketClass.prototype, Symbol.toStringTag, {
- value: "TLSSocket",
- enumerable: !1
- }), Object.defineProperty(function Socket(options) {
- return new InternalTLSSocket(options);
- }, Symbol.hasInstance, {
- value(instance) {
- return instance instanceof InternalTLSSocket;
- }
- });
-}(class TLSSocket2 extends InternalTCPSocket {
- #secureContext;
- ALPNProtocols;
- #socket;
- #checkServerIdentity;
- #session;
- constructor(socket, options) {
- super(socket instanceof InternalTCPSocket ? options : options || socket);
- if (options = options || socket || {}, typeof options === "object") {
- const { ALPNProtocols } = options;
- if (ALPNProtocols)
- convertALPNProtocols(ALPNProtocols, this);
- if (socket instanceof InternalTCPSocket)
- this.#socket = socket;
- }
- this.#secureContext = options.secureContext || createSecureContext(options), this.authorized = !1, this.secureConnecting = !0, this._secureEstablished = !1, this._securePending = !0, this.#checkServerIdentity = options.checkServerIdentity || checkServerIdentity, this.#session = options.session || null;
- }
- _secureEstablished = !1;
- _securePending = !0;
- _newSessionPending;
- _controlReleased;
- secureConnecting = !1;
- _SNICallback;
- servername;
- authorized = !1;
- authorizationError;
- #renegotiationDisabled = !1;
- encrypted = !0;
- _start() {
- this.connect();
- }
- getSession() {
- return this[bunSocketInternal]?.getSession();
- }
- getEphemeralKeyInfo() {
- return this[bunSocketInternal]?.getEphemeralKeyInfo();
- }
- getCipher() {
- return this[bunSocketInternal]?.getCipher();
- }
- getSharedSigalgs() {
- return this[bunSocketInternal]?.getSharedSigalgs();
- }
- getProtocol() {
- return this[bunSocketInternal]?.getTLSVersion();
- }
- getFinished() {
- return this[bunSocketInternal]?.getTLSFinishedMessage() || void 0;
- }
- getPeerFinished() {
- return this[bunSocketInternal]?.getTLSPeerFinishedMessage() || void 0;
- }
- isSessionReused() {
- return !!this.#session;
- }
- renegotiate() {
- if (this.#renegotiationDisabled) {
- const error = new Error("ERR_TLS_RENEGOTIATION_DISABLED: TLS session renegotiation disabled for this socket");
- throw error.name = "ERR_TLS_RENEGOTIATION_DISABLED", error;
- }
- throw Error("Not implented in Bun yet");
- }
- disableRenegotiation() {
- this.#renegotiationDisabled = !0;
- }
- getTLSTicket() {
- return this[bunSocketInternal]?.getTLSTicket();
- }
- exportKeyingMaterial(length, label, context) {
- if (context)
- return this[bunSocketInternal]?.exportKeyingMaterial(length, label, context);
- return this[bunSocketInternal]?.exportKeyingMaterial(length, label);
- }
- setMaxSendFragment(size) {
- return this[bunSocketInternal]?.setMaxSendFragment(size) || !1;
- }
- enableTrace() {
- }
- setServername(name) {
- if (this.isServer) {
- let error = new Error("ERR_TLS_SNI_FROM_SERVER: Cannot issue SNI from a TLS server-side socket");
- throw error.name = "ERR_TLS_SNI_FROM_SERVER", error;
- }
- this.servername = name, this[bunSocketInternal]?.setServername(name);
- }
- setSession(session) {
- if (this.#session = session, typeof session === "string")
- session = Buffer.from(session, "latin1");
- return this[bunSocketInternal]?.setSession(session);
- }
- getPeerCertificate(abbreviated) {
- const cert = arguments.length < 1 ? this[bunSocketInternal]?.getPeerCertificate() : this[bunSocketInternal]?.getPeerCertificate(abbreviated);
- if (cert)
- return translatePeerCertificate(cert);
- }
- getCertificate() {
- const cert = this[bunSocketInternal]?.getCertificate();
- if (cert)
- return translatePeerCertificate(cert);
- }
- getPeerX509Certificate() {
- throw Error("Not implented in Bun yet");
- }
- getX509Certificate() {
- throw Error("Not implented in Bun yet");
- }
- get alpnProtocol() {
- return this[bunSocketInternal]?.alpnProtocol;
- }
- [buntls](port, host2) {
- return {
- socket: this.#socket,
- ALPNProtocols: this.ALPNProtocols,
- serverName: this.servername || host2 || "localhost",
- checkServerIdentity: this.#checkServerIdentity,
- session: this.#session,
- ...this.#secureContext
- };
- }
-});
-
-class Server extends NetServer {
- key;
- cert;
- ca;
- passphrase;
- secureOptions;
- _rejectUnauthorized;
- _requestCert;
- servername;
- ALPNProtocols;
- constructor(options, secureConnectionListener) {
- super(options, secureConnectionListener);
- this.setSecureContext(options);
- }
- setSecureContext(options) {
- if (options instanceof InternalSecureContext)
- options = options.context;
- if (options) {
- const { ALPNProtocols } = options;
- if (ALPNProtocols)
- convertALPNProtocols(ALPNProtocols, this);
- let key = options.key;
- if (key) {
- if (!isValidTLSArray(key))
- throw new TypeError("key argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.key = key;
- }
- let cert = options.cert;
- if (cert) {
- if (!isValidTLSArray(cert))
- throw new TypeError("cert argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.cert = cert;
- }
- let ca = options.ca;
- if (ca) {
- if (!isValidTLSArray(ca))
- throw new TypeError("ca argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile");
- this.ca = ca;
- }
- let passphrase = options.passphrase;
- if (passphrase && typeof passphrase !== "string")
- throw new TypeError("passphrase argument must be an string");
- this.passphrase = passphrase;
- let servername = options.servername;
- if (servername && typeof servername !== "string")
- throw new TypeError("servername argument must be an string");
- this.servername = servername;
- let secureOptions = options.secureOptions || 0;
- if (secureOptions && typeof secureOptions !== "number")
- throw new TypeError("secureOptions argument must be an number");
- this.secureOptions = secureOptions;
- const requestCert = options.requestCert || !1;
- if (requestCert)
- this._requestCert = requestCert;
- else
- this._requestCert = void 0;
- const rejectUnauthorized = options.rejectUnauthorized || !1;
- if (rejectUnauthorized)
- this._rejectUnauthorized = rejectUnauthorized;
- else
- this._rejectUnauthorized = void 0;
- }
- }
- getTicketKeys() {
- throw Error("Not implented in Bun yet");
- }
- setTicketKeys() {
- throw Error("Not implented in Bun yet");
- }
- [buntls](port, host2, isClient) {
- return [
- {
- serverName: this.servername || host2 || "localhost",
- key: this.key,
- cert: this.cert,
- ca: this.ca,
- passphrase: this.passphrase,
- secureOptions: this.secureOptions,
- rejectUnauthorized: isClient ? !1 : this._rejectUnauthorized,
- requestCert: isClient ? !1 : this._requestCert,
- ALPNProtocols: this.ALPNProtocols
- },
- SocketClass
- ];
- }
-}
-var CLIENT_RENEG_LIMIT = 3, CLIENT_RENEG_WINDOW = 600, DEFAULT_ECDH_CURVE = "auto", DEFAULT_CIPHERS = "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", DEFAULT_MIN_VERSION = "TLSv1.2", DEFAULT_MAX_VERSION = "TLSv1.3", createConnection = (port, host2, connectListener) => {
- if (typeof port === "object") {
- port.checkServerIdentity;
- const { ALPNProtocols } = port;
- if (ALPNProtocols)
- convertALPNProtocols(ALPNProtocols, port);
- return new TLSSocket(port).connect(port, host2, connectListener);
- }
- return new TLSSocket().connect(port, host2, connectListener);
-}, connect = createConnection, exports = {
- [Symbol.for("CommonJS")]: 0,
- CLIENT_RENEG_LIMIT,
- CLIENT_RENEG_WINDOW,
- connect,
- convertALPNProtocols,
- createConnection,
- createSecureContext,
- createServer,
- DEFAULT_CIPHERS,
- DEFAULT_ECDH_CURVE,
- DEFAULT_MAX_VERSION,
- DEFAULT_MIN_VERSION,
- getCiphers,
- getCurves,
- parseCertString,
- SecureContext,
- Server,
- TLSSocket,
- checkServerIdentity,
- rootCertificates
-};
-export {
- rootCertificates,
- parseCertString,
- getCurves,
- getCiphers,
- exports as default,
- createServer,
- createSecureContext,
- createConnection,
- convertALPNProtocols,
- connect,
- checkServerIdentity,
- TLSSocket,
- Server,
- SecureContext,
- DEFAULT_MIN_VERSION,
- DEFAULT_MAX_VERSION,
- DEFAULT_ECDH_CURVE,
- DEFAULT_CIPHERS,
- CLIENT_RENEG_WINDOW,
- CLIENT_RENEG_LIMIT
-};