@whitewall/blip-sdk 0.0.176 → 0.0.177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/sender/http/httpsender.js +20 -10
- package/dist/cjs/sender/http/httpsender.js.map +1 -1
- package/dist/cjs/sender/security.js +6 -0
- package/dist/cjs/sender/security.js.map +1 -1
- package/dist/cjs/sender/sender.js +4 -2
- package/dist/cjs/sender/sender.js.map +1 -1
- package/dist/cjs/sender/sessionnegotiator.js +11 -4
- package/dist/cjs/sender/sessionnegotiator.js.map +1 -1
- package/dist/cjs/sender/tcp/tcpsender.js +60 -15
- package/dist/cjs/sender/tcp/tcpsender.js.map +1 -1
- package/dist/cjs/sender/transporttls.js +16 -0
- package/dist/cjs/sender/transporttls.js.map +1 -0
- package/dist/cjs/sender/websocket/websocketsender.js +2 -0
- package/dist/cjs/sender/websocket/websocketsender.js.map +1 -1
- package/dist/esm/sender/http/httpsender.js +20 -10
- package/dist/esm/sender/http/httpsender.js.map +1 -1
- package/dist/esm/sender/security.js +5 -1
- package/dist/esm/sender/security.js.map +1 -1
- package/dist/esm/sender/sender.js +4 -2
- package/dist/esm/sender/sender.js.map +1 -1
- package/dist/esm/sender/sessionnegotiator.js +11 -4
- package/dist/esm/sender/sessionnegotiator.js.map +1 -1
- package/dist/esm/sender/tcp/tcpsender.js +60 -15
- package/dist/esm/sender/tcp/tcpsender.js.map +1 -1
- package/dist/esm/sender/transporttls.js +13 -0
- package/dist/esm/sender/transporttls.js.map +1 -0
- package/dist/esm/sender/websocket/websocketsender.js +2 -0
- package/dist/esm/sender/websocket/websocketsender.js.map +1 -1
- package/dist/types/sender/http/httpsender.d.ts +2 -1
- package/dist/types/sender/http/httpsender.d.ts.map +1 -1
- package/dist/types/sender/security.d.ts +12 -1
- package/dist/types/sender/security.d.ts.map +1 -1
- package/dist/types/sender/sender.d.ts +2 -2
- package/dist/types/sender/sender.d.ts.map +1 -1
- package/dist/types/sender/sessionnegotiator.d.ts +1 -0
- package/dist/types/sender/sessionnegotiator.d.ts.map +1 -1
- package/dist/types/sender/tcp/tcpsender.d.ts.map +1 -1
- package/dist/types/sender/transporttls.d.ts +13 -0
- package/dist/types/sender/transporttls.d.ts.map +1 -0
- package/dist/types/sender/websocket/websocketsender.d.ts +2 -1
- package/dist/types/sender/websocket/websocketsender.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/sender/http/httpsender.ts +22 -11
- package/src/sender/security.ts +21 -0
- package/src/sender/sender.ts +9 -7
- package/src/sender/sessionnegotiator.ts +19 -5
- package/src/sender/tcp/tcpsender.ts +72 -19
- package/src/sender/transporttls.ts +16 -0
- package/src/sender/websocket/websocketsender.ts +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionnegotiator.js","sourceRoot":"","sources":["../../../src/sender/sessionnegotiator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAiB,MAAM,kBAAkB,CAAA;AAGtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AASlD,MAAM,OAAO,iBAAiB;IAQL;IACA;IARd,KAAK,GAAiC,KAAK,CAAA;IAC3C,OAAO,GAA6B,IAAI,CAAA;IAEvC,eAAe,GAAyB,IAAI,CAAA;IAC5C,sBAAsB,GAAqE,IAAI,CAAA;IAEvG,YACqB,MAA4B,EAC5B,WAAuC;QADvC,WAAM,GAAN,MAAM,CAAsB;QAC5B,gBAAW,GAAX,WAAW,CAA4B;IACzD,CAAC;IAEG,KAAK,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"sessionnegotiator.js","sourceRoot":"","sources":["../../../src/sender/sessionnegotiator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { logger } from "../../utils/logger.js";
|
|
1
2
|
import { BlipError } from "../bliperror.js";
|
|
2
3
|
import { RetryableError } from "../retryableerror.js";
|
|
3
4
|
import { ConnectionSender, OpenConnectionSender } from "../sender.js";
|
|
4
5
|
import { SessionNegotiator } from "../sessionnegotiator.js";
|
|
5
6
|
import { EnvelopeThrottler } from "../throttler.js";
|
|
7
|
+
import { buildTlsConnectOptions } from "../transporttls.js";
|
|
6
8
|
import { tryParseJSON } from "./json-parser.js";
|
|
7
9
|
/**
|
|
8
10
|
* @remarks
|
|
@@ -16,13 +18,21 @@ export class TCPSender extends OpenConnectionSender {
|
|
|
16
18
|
constructor(options) {
|
|
17
19
|
super(options);
|
|
18
20
|
const prefix = options.tenantId ? `${options.tenantId}.` : '';
|
|
19
|
-
|
|
21
|
+
const host = `${prefix}tcp.${this.domain}`;
|
|
22
|
+
const auth = options.authentication;
|
|
23
|
+
const tlsOptions = auth.scheme === 'transport' ? { ...buildTlsConnectOptions(auth), servername: host } : null;
|
|
24
|
+
this.connectionHandle = new TCPHandle(host, 443, () => {
|
|
20
25
|
this.sessionNegotiator = new SessionNegotiator(this, (session) => {
|
|
21
|
-
|
|
26
|
+
this.connectionHandle
|
|
27
|
+
.get()
|
|
28
|
+
.then((s) => s.write(JSON.stringify(session)))
|
|
29
|
+
.catch((err) => logger.warn('TCPSender', 'Failed to write session frame', err));
|
|
22
30
|
});
|
|
31
|
+
const upgradeToTls = tlsOptions ? () => this.connectionHandle.upgradeToTls(tlsOptions) : undefined;
|
|
23
32
|
return this.sessionNegotiator.negotiate({
|
|
24
33
|
node: options.node,
|
|
25
|
-
authentication:
|
|
34
|
+
authentication: auth,
|
|
35
|
+
upgradeToTls,
|
|
26
36
|
});
|
|
27
37
|
}, () => this.envelopeResolver.rejectPendingEnvelopes('Connection was closed'), (envelope) => {
|
|
28
38
|
if (this.sessionNegotiator?.negotiating) {
|
|
@@ -88,8 +98,11 @@ class TCPHandle {
|
|
|
88
98
|
currentSocketPromise = null;
|
|
89
99
|
closing = false;
|
|
90
100
|
connectionAttempts = 0;
|
|
101
|
+
buffer = Buffer.alloc(0);
|
|
102
|
+
onMessage;
|
|
91
103
|
constructor(host, port, onConnected, onClose, onMessage) {
|
|
92
|
-
this.
|
|
104
|
+
this.onMessage = onMessage;
|
|
105
|
+
this.currentSocketPromise = this.connect(host, port, onConnected, onClose);
|
|
93
106
|
}
|
|
94
107
|
get() {
|
|
95
108
|
if (!this.currentSocketPromise) {
|
|
@@ -104,10 +117,43 @@ class TCPHandle {
|
|
|
104
117
|
current.end().removeAllListeners().destroySoon();
|
|
105
118
|
}
|
|
106
119
|
}
|
|
107
|
-
async
|
|
120
|
+
async upgradeToTls(options) {
|
|
121
|
+
if (!this.currentSocketPromise) {
|
|
122
|
+
throw new Error('Cannot upgrade: no active socket.');
|
|
123
|
+
}
|
|
124
|
+
const plain = await this.currentSocketPromise;
|
|
125
|
+
plain.removeAllListeners('data');
|
|
126
|
+
this.buffer = Buffer.alloc(0);
|
|
127
|
+
const { connect: tlsConnect } = await import('node:tls');
|
|
128
|
+
const secured = tlsConnect({ ...options, socket: plain });
|
|
129
|
+
await new Promise((resolve, reject) => {
|
|
130
|
+
const onError = (err) => {
|
|
131
|
+
secured.off('secureConnect', onConnect);
|
|
132
|
+
reject(err);
|
|
133
|
+
};
|
|
134
|
+
const onConnect = () => {
|
|
135
|
+
secured.off('error', onError);
|
|
136
|
+
resolve();
|
|
137
|
+
};
|
|
138
|
+
secured.once('secureConnect', onConnect);
|
|
139
|
+
secured.once('error', onError);
|
|
140
|
+
});
|
|
141
|
+
this.attachDataListener(secured);
|
|
142
|
+
this.currentSocketPromise = Promise.resolve(secured);
|
|
143
|
+
}
|
|
144
|
+
attachDataListener(socket) {
|
|
145
|
+
socket.on('data', (chunk) => {
|
|
146
|
+
const result = tryParseJSON(this.buffer.length === 0 ? chunk : Buffer.concat([this.buffer, chunk]));
|
|
147
|
+
this.buffer = result.remainingBuffer;
|
|
148
|
+
for (const parsed of result.parsedObjects) {
|
|
149
|
+
this.onMessage(parsed);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async connect(host, port, onConnected, onClose) {
|
|
108
154
|
const { connect } = await import('node:net');
|
|
109
155
|
const socket = connect({ host, port }).setKeepAlive(true);
|
|
110
|
-
|
|
156
|
+
this.buffer = Buffer.alloc(0);
|
|
111
157
|
await new Promise((resolve) => {
|
|
112
158
|
socket.once('connect', () => {
|
|
113
159
|
resolve();
|
|
@@ -118,26 +164,25 @@ class TCPHandle {
|
|
|
118
164
|
}
|
|
119
165
|
});
|
|
120
166
|
socket.once('close', () => {
|
|
167
|
+
socket.removeAllListeners('data');
|
|
121
168
|
if (!this.closing) {
|
|
122
169
|
onClose();
|
|
123
170
|
this.connectionAttempts++;
|
|
124
171
|
if (this.connectionAttempts < 3) {
|
|
125
|
-
this.currentSocketPromise = this.connect(host, port, onConnected, onClose
|
|
172
|
+
this.currentSocketPromise = this.connect(host, port, onConnected, onClose);
|
|
126
173
|
}
|
|
127
174
|
else {
|
|
128
175
|
throw new Error('Failed to connect/reconnect to TCP socket');
|
|
129
176
|
}
|
|
130
177
|
}
|
|
131
178
|
});
|
|
132
|
-
|
|
133
|
-
const result = tryParseJSON(buffer.length === 0 ? chunk : Buffer.concat([buffer, chunk]));
|
|
134
|
-
buffer = result.remainingBuffer;
|
|
135
|
-
for (const parsed of result.parsedObjects) {
|
|
136
|
-
onMessage(parsed);
|
|
137
|
-
}
|
|
138
|
-
});
|
|
179
|
+
this.attachDataListener(socket);
|
|
139
180
|
});
|
|
140
|
-
|
|
181
|
+
// sendSession callbacks read currentSocketPromise via .get(); resolve it
|
|
182
|
+
// before onConnected runs so negotiate() can write the 'new' session frame
|
|
183
|
+
// (otherwise we deadlock waiting on the outer connect() promise).
|
|
184
|
+
this.currentSocketPromise = Promise.resolve(socket);
|
|
185
|
+
await onConnected();
|
|
141
186
|
this.connectionAttempts = 0;
|
|
142
187
|
return socket;
|
|
143
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpsender.js","sourceRoot":"","sources":["../../../../src/sender/tcp/tcpsender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tcpsender.js","sourceRoot":"","sources":["../../../../src/sender/tcp/tcpsender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function buildTlsConnectOptions(auth) {
|
|
2
|
+
const toBuf = (v) => (typeof v === 'string' ? v : Buffer.from(v));
|
|
3
|
+
const toBufOrArray = (v) => Array.isArray(v) ? v.map(toBuf) : v !== undefined ? toBuf(v) : undefined;
|
|
4
|
+
return {
|
|
5
|
+
pfx: auth.pfx ? [{ buf: Buffer.from(auth.pfx), passphrase: auth.passphrase }] : undefined,
|
|
6
|
+
cert: auth.cert !== undefined ? toBuf(auth.cert) : undefined,
|
|
7
|
+
key: auth.key !== undefined ? toBuf(auth.key) : undefined,
|
|
8
|
+
ca: toBufOrArray(auth.ca),
|
|
9
|
+
passphrase: auth.passphrase,
|
|
10
|
+
rejectUnauthorized: auth.rejectUnauthorized ?? true,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=transporttls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transporttls.js","sourceRoot":"","sources":["../../../src/sender/transporttls.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,IAA6B;IAChE,MAAM,KAAK,GAAG,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACtF,MAAM,YAAY,GAAG,CAAC,CAAgC,EAAE,EAAE,CACtD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE5E,OAAO;QACH,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACzF,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;KACtD,CAAA;AACL,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { logger } from "../../utils/logger.js";
|
|
2
2
|
import { BlipError } from "../bliperror.js";
|
|
3
3
|
import { RetryableError } from "../retryableerror.js";
|
|
4
|
+
import { assertNonTransportAuth } from "../security.js";
|
|
4
5
|
import { ConnectionSender, OpenConnectionSender } from "../sender.js";
|
|
5
6
|
import { SessionNegotiator } from "../sessionnegotiator.js";
|
|
6
7
|
import { EnvelopeThrottler } from "../throttler.js";
|
|
@@ -9,6 +10,7 @@ export class WebSocketSender extends OpenConnectionSender {
|
|
|
9
10
|
connectionHandle;
|
|
10
11
|
constructor(options) {
|
|
11
12
|
super(options);
|
|
13
|
+
assertNonTransportAuth(options.authentication, 'WebSocketSender');
|
|
12
14
|
const prefix = options.tenantId ? `${options.tenantId}.` : '';
|
|
13
15
|
this.connectionHandle = new WebSocketHandle(`wss://${prefix}ws.${this.domain}`, (webSocket) => {
|
|
14
16
|
this.sessionNegotiator = new SessionNegotiator(this, (session) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocketsender.js","sourceRoot":"","sources":["../../../../src/sender/websocket/websocketsender.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAoC,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,OAAO,eAAgB,SAAQ,oBAAoB;IACpC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAA;IACnC,gBAAgB,CAA2B;IAE5D,
|
|
1
|
+
{"version":3,"file":"websocketsender.js","sourceRoot":"","sources":["../../../../src/sender/websocket/websocketsender.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type Command, type CommandMethods, type Message, type MessageTypes } from '../../types/index.ts';
|
|
2
|
+
import { type NonTransportAuthentication } from '../security.ts';
|
|
2
3
|
import { ConnectionSender, type ConnectionSenderConstructor, type Sender } from '../sender.ts';
|
|
3
4
|
export declare class HttpSender extends ConnectionSender implements Sender {
|
|
4
5
|
private readonly baseurl;
|
|
5
6
|
private readonly authHeaders;
|
|
6
7
|
private readonly throttler;
|
|
7
|
-
constructor(options: ConstructorParameters<ConnectionSenderConstructor
|
|
8
|
+
constructor(options: ConstructorParameters<ConnectionSenderConstructor<HttpSender, NonTransportAuthentication>>[0]);
|
|
8
9
|
sendMessage<Type extends MessageTypes>(message: Message<Type>): Promise<void>;
|
|
9
10
|
sendCommand(command: Command<CommandMethods>): Promise<unknown>;
|
|
10
11
|
static login: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/http/httpsender.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,YAAY,EAGpB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAG9F,qBAAa,UAAW,SAAQ,gBAAiB,YAAW,MAAM;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;
|
|
1
|
+
{"version":3,"file":"httpsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/http/httpsender.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,YAAY,EAGpB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAA0B,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAG9F,qBAAa,UAAW,SAAQ,gBAAiB,YAAW,MAAM;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAGhD,OAAO,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IA+BnG,WAAW,CAAC,IAAI,SAAS,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7E,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtE,OAAc,KAAK;;;MAAqC;YAE1C,KAAK;YAWL,oBAAoB;CAwBrC"}
|
|
@@ -18,5 +18,16 @@ export interface PlainAuthentication {
|
|
|
18
18
|
scheme: 'plain';
|
|
19
19
|
password: string;
|
|
20
20
|
}
|
|
21
|
-
export
|
|
21
|
+
export interface TransportAuthentication {
|
|
22
|
+
scheme: 'transport';
|
|
23
|
+
pfx?: Uint8Array;
|
|
24
|
+
cert?: Uint8Array | string;
|
|
25
|
+
key?: Uint8Array | string;
|
|
26
|
+
ca?: Uint8Array | string | Array<Uint8Array | string>;
|
|
27
|
+
passphrase?: string;
|
|
28
|
+
rejectUnauthorized?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export type Authentication = GuestAuthentication | KeyAuthentication | ExternalAuthentication | PlainAuthentication | TokenAuthentication | TransportAuthentication;
|
|
31
|
+
export type NonTransportAuthentication = Exclude<Authentication, TransportAuthentication>;
|
|
32
|
+
export declare function assertNonTransportAuth(auth: unknown, senderName: string): void;
|
|
22
33
|
//# sourceMappingURL=security.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/sender/security.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,KAAK,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACd;AAGD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,cAAc,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/sender/security.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,KAAK,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACd;AAGD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IACzB,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,MAAM,cAAc,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,uBAAuB,CAAA;AAE7B,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAA;AAEzF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAM9E"}
|
|
@@ -7,9 +7,9 @@ export interface Sender {
|
|
|
7
7
|
sendMessage<Type extends MessageTypes>(message: Message<Type>): Promise<void>;
|
|
8
8
|
sendCommand(command: Command<CommandMethods>): Promise<unknown>;
|
|
9
9
|
}
|
|
10
|
-
export type ConnectionSenderConstructor<TSender = Sender> = new (options: {
|
|
10
|
+
export type ConnectionSenderConstructor<TSender = Sender, TAuth extends Authentication = Authentication> = new (options: {
|
|
11
11
|
node: NodeLike;
|
|
12
|
-
authentication:
|
|
12
|
+
authentication: TAuth;
|
|
13
13
|
tenantId?: string;
|
|
14
14
|
}) => TSender;
|
|
15
15
|
export declare class ConnectionSender {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.d.ts","sourceRoot":"","sources":["../../../src/sender/sender.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,YAAY,EAEjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,WAAW,MAAM;IACnB,WAAW,CAAC,IAAI,SAAS,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAClE;AAED,MAAM,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"sender.d.ts","sourceRoot":"","sources":["../../../src/sender/sender.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export declare class SessionNegotiator {
|
|
|
20
20
|
negotiate(options: {
|
|
21
21
|
node: NodeLike;
|
|
22
22
|
authentication: Authentication;
|
|
23
|
+
upgradeToTls?: () => Promise<void>;
|
|
23
24
|
}): Promise<void>;
|
|
24
25
|
handleEnvelope(envelope: Envelope): void;
|
|
25
26
|
ensurePresence(currentCommandUri?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionnegotiator.d.ts","sourceRoot":"","sources":["../../../src/sender/sessionnegotiator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,UAAU,EAAE,IAAI,CAAA;IAChB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACnC,CAAA;AAED,qBAAa,iBAAiB;IAQtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IARzB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAQ;IAC3C,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAE/C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,sBAAsB,CAAyE;gBAGlF,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;IAG/C,SAAS,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"sessionnegotiator.d.ts","sourceRoot":"","sources":["../../../src/sender/sessionnegotiator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,UAAU,EAAE,IAAI,CAAA;IAChB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACnC,CAAA;AAED,qBAAa,iBAAiB;IAQtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IARzB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAQ;IAC3C,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAE/C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,sBAAsB,CAAyE;gBAGlF,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;IAG/C,SAAS,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,QAAQ,CAAA;QACd,cAAc,EAAE,cAAc,CAAA;QAC9B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KACrC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFV,cAAc,CAAC,QAAQ,EAAE,QAAQ;IAO3B,cAAc,CAAC,iBAAiB,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC3D,MAAM;IAWb,IAAW,WAAW,IAAI,OAAO,CAEhC;YAEa,sBAAsB;CAWvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/tcp/tcpsender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tcpsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/tcp/tcpsender.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,OAAO,EACP,cAAc,EAGd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACzB,MAAM,sBAAsB,CAAA;AAI7B,OAAO,EAAoB,KAAK,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAMvG;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,oBAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;gBAE1C,OAAO,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAoC7D,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,WAAW,CAAC,IAAI,SAAS,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BzD,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,KAAK;IAMlB,OAAc,KAAK;;;MAAoC;YAEzC,eAAe;CAahC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TransportAuthentication } from './security.ts';
|
|
2
|
+
export declare function buildTlsConnectOptions(auth: TransportAuthentication): {
|
|
3
|
+
pfx: {
|
|
4
|
+
buf: Buffer<ArrayBuffer>;
|
|
5
|
+
passphrase: string | undefined;
|
|
6
|
+
}[] | undefined;
|
|
7
|
+
cert: string | Buffer<ArrayBuffer> | undefined;
|
|
8
|
+
key: string | Buffer<ArrayBuffer> | undefined;
|
|
9
|
+
ca: string | Buffer<ArrayBuffer> | (string | Buffer<ArrayBuffer>)[] | undefined;
|
|
10
|
+
passphrase: string | undefined;
|
|
11
|
+
rejectUnauthorized: boolean;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=transporttls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transporttls.d.ts","sourceRoot":"","sources":["../../../src/sender/transporttls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,uBAAuB;;;;;;;;;;EAanE"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Command, CommandMethods, Message, MessageTypes, Notification, UnknownCommandResponse } from '../../types/index.ts';
|
|
2
|
+
import { type NonTransportAuthentication } from '../security.ts';
|
|
2
3
|
import { type ConnectionSenderConstructor, OpenConnectionSender } from '../sender.ts';
|
|
3
4
|
export declare class WebSocketSender extends OpenConnectionSender {
|
|
4
5
|
private readonly throttler;
|
|
5
6
|
private readonly connectionHandle;
|
|
6
|
-
constructor(options: ConstructorParameters<ConnectionSenderConstructor
|
|
7
|
+
constructor(options: ConstructorParameters<ConnectionSenderConstructor<WebSocketSender, NonTransportAuthentication>>[0]);
|
|
7
8
|
sendMessage<Type extends MessageTypes>(message: Message<Type>): Promise<void>;
|
|
8
9
|
sendCommand(command: Command<CommandMethods>): Promise<unknown>;
|
|
9
10
|
sendNotification(notification: Notification): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocketsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/websocket/websocketsender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,cAAc,EAGd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACzB,MAAM,sBAAsB,CAAA;AAI7B,OAAO,EAAoB,KAAK,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIvG,qBAAa,eAAgB,SAAQ,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;
|
|
1
|
+
{"version":3,"file":"websocketsender.d.ts","sourceRoot":"","sources":["../../../../src/sender/websocket/websocketsender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,cAAc,EAGd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACzB,MAAM,sBAAsB,CAAA;AAI7B,OAAO,EAA0B,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AACxF,OAAO,EAAoB,KAAK,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIvG,qBAAa,eAAgB,SAAQ,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;gBAGxD,OAAO,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IA6BlG,WAAW,CAAC,IAAI,SAAS,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBzD,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,KAAK;IAMlB,OAAc,KAAK;;;MAA0C;YAE/C,eAAe;CAehC"}
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from '../../types/index.ts'
|
|
9
9
|
import { BlipError } from '../bliperror.ts'
|
|
10
10
|
import { RetryableError } from '../retryableerror.ts'
|
|
11
|
+
import { assertNonTransportAuth, type NonTransportAuthentication } from '../security.ts'
|
|
11
12
|
import { ConnectionSender, type ConnectionSenderConstructor, type Sender } from '../sender.ts'
|
|
12
13
|
import { EnvelopeThrottler } from '../throttler.ts'
|
|
13
14
|
|
|
@@ -16,25 +17,35 @@ export class HttpSender extends ConnectionSender implements Sender {
|
|
|
16
17
|
private readonly authHeaders: Record<string, string>
|
|
17
18
|
private readonly throttler = new EnvelopeThrottler()
|
|
18
19
|
|
|
19
|
-
constructor(
|
|
20
|
+
constructor(
|
|
21
|
+
options: ConstructorParameters<ConnectionSenderConstructor<HttpSender, NonTransportAuthentication>>[0],
|
|
22
|
+
) {
|
|
20
23
|
super(options)
|
|
24
|
+
assertNonTransportAuth(options.authentication, 'HttpSender')
|
|
21
25
|
|
|
22
26
|
const prefix = options.tenantId ? `${options.tenantId}.` : ''
|
|
23
27
|
this.baseurl = `https://${prefix}http.${this.domain}`
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this.authHeaders = { Authorization: `Key ${options.
|
|
30
|
-
} else if (
|
|
29
|
+
const auth = options.authentication
|
|
30
|
+
const identity = Node.from(options.node).toIdentity()
|
|
31
|
+
|
|
32
|
+
if (auth.scheme === 'key') {
|
|
33
|
+
this.authHeaders = { Authorization: `Key ${HttpSender.createToken(options.node, auth.key)}` }
|
|
34
|
+
} else if (auth.scheme === 'token') {
|
|
35
|
+
this.authHeaders = { Authorization: `Key ${auth.token}` }
|
|
36
|
+
} else if (auth.scheme === 'external') {
|
|
31
37
|
this.authHeaders = {
|
|
32
|
-
Authorization: `Bearer ${
|
|
33
|
-
'http-session-authentication-external-issuer':
|
|
34
|
-
'http-session-identity':
|
|
38
|
+
Authorization: `Bearer ${auth.token}`,
|
|
39
|
+
'http-session-authentication-external-issuer': auth.issuer,
|
|
40
|
+
'http-session-identity': identity,
|
|
35
41
|
}
|
|
42
|
+
} else if (auth.scheme === 'plain') {
|
|
43
|
+
const basicAuth = `${identity}:${auth.password}`
|
|
44
|
+
this.authHeaders = { Authorization: `Basic ${Buffer.from(basicAuth).toString('base64')}` }
|
|
45
|
+
} else if (auth.scheme === 'guest') {
|
|
46
|
+
this.authHeaders = {}
|
|
36
47
|
} else {
|
|
37
|
-
throw new Error('
|
|
48
|
+
throw new Error('Unsupported authentication scheme')
|
|
38
49
|
}
|
|
39
50
|
}
|
|
40
51
|
|
package/src/sender/security.ts
CHANGED
|
@@ -25,9 +25,30 @@ export interface PlainAuthentication {
|
|
|
25
25
|
password: string
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
export interface TransportAuthentication {
|
|
29
|
+
scheme: 'transport'
|
|
30
|
+
pfx?: Uint8Array
|
|
31
|
+
cert?: Uint8Array | string
|
|
32
|
+
key?: Uint8Array | string
|
|
33
|
+
ca?: Uint8Array | string | Array<Uint8Array | string>
|
|
34
|
+
passphrase?: string
|
|
35
|
+
rejectUnauthorized?: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
28
38
|
export type Authentication =
|
|
29
39
|
| GuestAuthentication
|
|
30
40
|
| KeyAuthentication
|
|
31
41
|
| ExternalAuthentication
|
|
32
42
|
| PlainAuthentication
|
|
33
43
|
| TokenAuthentication
|
|
44
|
+
| TransportAuthentication
|
|
45
|
+
|
|
46
|
+
export type NonTransportAuthentication = Exclude<Authentication, TransportAuthentication>
|
|
47
|
+
|
|
48
|
+
export function assertNonTransportAuth(auth: unknown, senderName: string): void {
|
|
49
|
+
if ((auth as { scheme?: string } | null | undefined)?.scheme === 'transport') {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`${senderName} does not support the 'transport' scheme: TLS terminates before any application-layer negotiation, so a client certificate cannot be reliably delivered upstream. Use TCPSender.`,
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
package/src/sender/sender.ts
CHANGED
|
@@ -20,17 +20,20 @@ export interface Sender {
|
|
|
20
20
|
sendCommand(command: Command<CommandMethods>): Promise<unknown>
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export type ConnectionSenderConstructor<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
export type ConnectionSenderConstructor<
|
|
24
|
+
TSender = Sender,
|
|
25
|
+
TAuth extends Authentication = Authentication,
|
|
26
|
+
> = new (options: { node: NodeLike; authentication: TAuth; tenantId?: string }) => TSender
|
|
27
|
+
|
|
28
|
+
const ROOT_AUTHORITIES: ReadonlyArray<BlipDomain> = ['msging.net', 'blip.ai', '0mn.io']
|
|
28
29
|
|
|
29
30
|
export class ConnectionSender {
|
|
30
31
|
private readonly _domain: BlipDomain
|
|
31
32
|
|
|
32
33
|
constructor(options: ConstructorParameters<ConnectionSenderConstructor>[0]) {
|
|
33
|
-
|
|
34
|
+
const nodeDomain = Node.from(options.node).domain ?? 'msging.net'
|
|
35
|
+
this._domain =
|
|
36
|
+
ROOT_AUTHORITIES.find((root) => nodeDomain === root || nodeDomain.endsWith(`.${root}`)) ?? 'msging.net'
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
public get domain() {
|
|
@@ -74,7 +77,6 @@ export class ConnectionSender {
|
|
|
74
77
|
tenantId = tenantIdOrUndefined
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
// biome-ignore lint/complexity/noThisInStatic: fair use-case
|
|
78
80
|
return new this({
|
|
79
81
|
node,
|
|
80
82
|
authentication: {
|
|
@@ -23,7 +23,11 @@ export class SessionNegotiator {
|
|
|
23
23
|
private readonly sendSession: (session: Session) => void,
|
|
24
24
|
) {}
|
|
25
25
|
|
|
26
|
-
public async negotiate(options: {
|
|
26
|
+
public async negotiate(options: {
|
|
27
|
+
node: NodeLike
|
|
28
|
+
authentication: Authentication
|
|
29
|
+
upgradeToTls?: () => Promise<void>
|
|
30
|
+
}): Promise<void> {
|
|
27
31
|
const timeout = setTimeout(async () => {
|
|
28
32
|
if (this.negotiating) {
|
|
29
33
|
await this.sender.close()
|
|
@@ -37,19 +41,27 @@ export class SessionNegotiator {
|
|
|
37
41
|
} as Session)
|
|
38
42
|
|
|
39
43
|
const negotiation = await this.waitForSessionResponse()
|
|
44
|
+
const wantsTls = options.authentication.scheme === 'transport' && !!options.upgradeToTls
|
|
45
|
+
|
|
40
46
|
let authenticating: Session
|
|
41
47
|
if (negotiation.state === 'negotiating') {
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
const desiredEncryption = wantsTls ? 'tls' : 'none'
|
|
49
|
+
if (!negotiation.encryptionOptions?.includes(desiredEncryption)) {
|
|
50
|
+
throw new Error(`Unsupported encryption options (wanted '${desiredEncryption}')`)
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
this.sendSession({
|
|
47
54
|
id: negotiation.id,
|
|
48
55
|
state: 'negotiating',
|
|
49
|
-
encryption:
|
|
56
|
+
encryption: desiredEncryption,
|
|
50
57
|
compression: negotiation.compressionOptions?.at(-1),
|
|
51
58
|
})
|
|
52
59
|
await this.waitForSessionResponse()
|
|
60
|
+
|
|
61
|
+
if (wantsTls) {
|
|
62
|
+
await options.upgradeToTls!()
|
|
63
|
+
}
|
|
64
|
+
|
|
53
65
|
authenticating = await this.waitForSessionResponse()
|
|
54
66
|
} else if (negotiation.state === 'authenticating') {
|
|
55
67
|
authenticating = negotiation
|
|
@@ -71,7 +83,9 @@ export class SessionNegotiator {
|
|
|
71
83
|
)
|
|
72
84
|
}
|
|
73
85
|
|
|
74
|
-
const { scheme, ...
|
|
86
|
+
const { scheme, ...rest } = options.authentication
|
|
87
|
+
// 'transport' authenticates via mTLS; LIME spec requires an empty payload here.
|
|
88
|
+
const authenticationOptions = scheme === 'transport' ? {} : rest
|
|
75
89
|
this.sendSession({
|
|
76
90
|
id: authenticating.id,
|
|
77
91
|
from: options.node,
|