@floegence/flowersec-core 3.2.1 → 4.0.0

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.
Files changed (133) hide show
  1. package/README.md +57 -200
  2. package/THIRD_PARTY_NOTICES.md +11 -11
  3. package/dist/browser/index.d.ts +0 -5
  4. package/dist/browser/index.js +0 -3
  5. package/dist/cli.js +93 -64
  6. package/dist/facade.d.ts +0 -17
  7. package/dist/facade.js +0 -11
  8. package/dist/generated/unicode151.d.ts +2 -0
  9. package/dist/generated/unicode151.js +83 -0
  10. package/dist/interop/proxyServerPeer.js +34 -20
  11. package/dist/interop/serverParityPeer.js +11 -252
  12. package/dist/node/acceptor.d.ts +1 -57
  13. package/dist/node/acceptor.js +3 -420
  14. package/dist/node/acceptorV3.js +2 -2
  15. package/dist/node/connectSessionV3.js +2 -2
  16. package/dist/node/index.d.ts +2 -17
  17. package/dist/node/index.js +1 -9
  18. package/dist/node/nativeTransportAddon.d.ts +7 -36
  19. package/dist/node/nativeTransportAddon.js +7 -27
  20. package/dist/node/proxyServer.d.ts +2 -2
  21. package/dist/node/proxyServer.js +2 -2
  22. package/dist/node/rawQuicAdapterV3.d.ts +2 -2
  23. package/dist/node/rawQuicAdapterV3.js +1 -1
  24. package/dist/node/rawQuicServerV3.d.ts +2 -2
  25. package/dist/node/rawQuicServerV3.js +1 -1
  26. package/dist/node/rawQuicTls.d.ts +2 -0
  27. package/dist/node/{rawQuicAdapter.js → rawQuicTls.js} +30 -45
  28. package/dist/node/tunnelRuntimeV3.js +2 -2
  29. package/dist/proxy/integration.d.ts +5 -5
  30. package/dist/proxy/integration.js +2 -2
  31. package/dist/public/streamHandlers.d.ts +0 -3
  32. package/dist/public/streamHandlers.js +2 -4
  33. package/dist/public/streamMetadata.js +2 -2
  34. package/dist/runtime/errors.d.ts +2 -2
  35. package/dist/testSupport/tlsFixture.d.ts +2 -0
  36. package/dist/testSupport/tlsFixture.js +8 -0
  37. package/dist/utils/errors.d.ts +0 -2
  38. package/dist/utils/errors.js +0 -80
  39. package/dist/v3/artifact.js +17 -3
  40. package/dist/v3/carrier.d.ts +2 -2
  41. package/dist/v3/protocol.js +2 -103
  42. package/dist/v3/retryDisposition.d.ts +2 -2
  43. package/dist/v3/retryDisposition.js +0 -7
  44. package/dist/vendor/tr46.d.ts +4 -0
  45. package/dist/vendor/tr46.js +37 -32
  46. package/package.json +19 -17
  47. package/sbom/cyclonedx.json +62 -62
  48. package/sbom/spdx.json +65 -65
  49. package/dist/browser/connectSession.d.ts +0 -13
  50. package/dist/browser/connectSession.js +0 -40
  51. package/dist/browser/runtimeCapability.d.ts +0 -13
  52. package/dist/browser/runtimeCapability.js +0 -27
  53. package/dist/browser/sessionRuntime.d.ts +0 -2
  54. package/dist/browser/sessionRuntime.js +0 -21
  55. package/dist/browser/v2.d.ts +0 -3
  56. package/dist/browser/v2.js +0 -2
  57. package/dist/browser/webTransportClient.d.ts +0 -8
  58. package/dist/browser/webTransportClient.js +0 -55
  59. package/dist/connectionController.d.ts +0 -55
  60. package/dist/connectionController.js +0 -441
  61. package/dist/connector/adapters/rawQuicCandidate.d.ts +0 -5
  62. package/dist/connector/adapters/rawQuicCandidate.js +0 -71
  63. package/dist/connector/adapters/webSocketCandidate.d.ts +0 -7
  64. package/dist/connector/adapters/webSocketCandidate.js +0 -116
  65. package/dist/connector/adapters/webTransportCandidate.d.ts +0 -5
  66. package/dist/connector/adapters/webTransportCandidate.js +0 -73
  67. package/dist/connector/admissionCommit.d.ts +0 -31
  68. package/dist/connector/admissionCommit.js +0 -239
  69. package/dist/connector/sessionAcceptor.d.ts +0 -38
  70. package/dist/connector/sessionAcceptor.js +0 -158
  71. package/dist/connector/sessionConfig.d.ts +0 -3
  72. package/dist/connector/sessionConfig.js +0 -30
  73. package/dist/connector/sessionConnector.d.ts +0 -47
  74. package/dist/connector/sessionConnector.js +0 -606
  75. package/dist/node/connectSession.d.ts +0 -23
  76. package/dist/node/connectSession.js +0 -93
  77. package/dist/node/controlplane.d.ts +0 -137
  78. package/dist/node/controlplane.js +0 -443
  79. package/dist/node/rawQuicAdapter.d.ts +0 -9
  80. package/dist/node/rawQuicServer.d.ts +0 -24
  81. package/dist/node/rawQuicServer.js +0 -37
  82. package/dist/node/runtimeCapability.d.ts +0 -14
  83. package/dist/node/runtimeCapability.js +0 -24
  84. package/dist/node/sessionRuntime.d.ts +0 -2
  85. package/dist/node/sessionRuntime.js +0 -13
  86. package/dist/node/tunnelRuntime.d.ts +0 -42
  87. package/dist/node/tunnelRuntime.js +0 -559
  88. package/dist/node/v2.d.ts +0 -11
  89. package/dist/node/v2.js +0 -6
  90. package/dist/node/webSocketServer.d.ts +0 -24
  91. package/dist/node/webSocketServer.js +0 -135
  92. package/dist/public/artifact.d.ts +0 -11
  93. package/dist/public/artifact.js +0 -44
  94. package/dist/public/artifactLease.d.ts +0 -10
  95. package/dist/public/artifactLease.js +0 -41
  96. package/dist/public/connectError.d.ts +0 -6
  97. package/dist/public/connectError.js +0 -9
  98. package/dist/transport/webSocketAdapter.d.ts +0 -31
  99. package/dist/transport/webSocketAdapter.js +0 -370
  100. package/dist/transport/webTransportAdapter.d.ts +0 -27
  101. package/dist/transport/webTransportAdapter.js +0 -534
  102. package/dist/v2/admissionError.d.ts +0 -4
  103. package/dist/v2/admissionError.js +0 -8
  104. package/dist/v2/artifact.d.ts +0 -128
  105. package/dist/v2/artifact.js +0 -1131
  106. package/dist/v2/artifactLease.d.ts +0 -1
  107. package/dist/v2/artifactLease.js +0 -7
  108. package/dist/v2/capability.d.ts +0 -29
  109. package/dist/v2/capability.js +0 -190
  110. package/dist/v2/carrier.d.ts +0 -84
  111. package/dist/v2/carrier.js +0 -411
  112. package/dist/v2/contract.d.ts +0 -46
  113. package/dist/v2/contract.js +0 -1
  114. package/dist/v2/handshake.d.ts +0 -80
  115. package/dist/v2/handshake.js +0 -470
  116. package/dist/v2/index.d.ts +0 -14
  117. package/dist/v2/index.js +0 -7
  118. package/dist/v2/opaqueArtifact.d.ts +0 -1
  119. package/dist/v2/opaqueArtifact.js +0 -2
  120. package/dist/v2/protocol.d.ts +0 -99
  121. package/dist/v2/protocol.js +0 -737
  122. package/dist/v2/publicSession.d.ts +0 -1
  123. package/dist/v2/publicSession.js +0 -281
  124. package/dist/v2/retryDisposition.d.ts +0 -16
  125. package/dist/v2/retryDisposition.js +0 -30
  126. package/dist/v2/session.d.ts +0 -310
  127. package/dist/v2/session.js +0 -2127
  128. package/dist/v2/streamLifetimeLedger.d.ts +0 -31
  129. package/dist/v2/streamLifetimeLedger.js +0 -131
  130. package/dist/v2/streamMetadata.d.ts +0 -1
  131. package/dist/v2/streamMetadata.js +0 -7
  132. package/dist/v2/unreliableMessage.d.ts +0 -43
  133. package/dist/v2/unreliableMessage.js +0 -254
@@ -1,411 +0,0 @@
1
- export class CarrierError extends Error {
2
- code;
3
- cause;
4
- constructor(code, message, cause) {
5
- super(message);
6
- this.code = code;
7
- this.cause = cause;
8
- this.name = "CarrierError";
9
- }
10
- }
11
- function deferred() {
12
- let resolvePromise;
13
- const promise = new Promise((resolve) => { resolvePromise = resolve; });
14
- return { promise, resolve: (value) => resolvePromise(value) };
15
- }
16
- export function adaptNativeCarrierSessionV2(native) {
17
- return new NativeCarrierSessionAdapter(native);
18
- }
19
- export function createMemoryCarrierPairV2(options) {
20
- const maxPendingStreams = options.maxPendingStreams ?? 128;
21
- if (!Number.isInteger(maxPendingStreams) || maxPendingStreams < 1 || maxPendingStreams > 1_024) {
22
- throw new RangeError("maxPendingStreams must be an integer from 1 to 1024");
23
- }
24
- requireInboundBidirectionalStreamCapacity(options.inboundBidirectionalStreamCapacity);
25
- const link = new MemoryCarrierLink(options.kind, options.path, options.inboundBidirectionalStreamCapacity, maxPendingStreams);
26
- const left = new MemoryCarrierSession(link, 0);
27
- const right = new MemoryCarrierSession(link, 1);
28
- link.attach(left, right);
29
- return [left, right];
30
- }
31
- class MemoryCarrierLink {
32
- kind;
33
- path;
34
- inboundBidirectionalStreamCapacity;
35
- maxPendingStreams;
36
- sessions;
37
- closedError;
38
- streams = new Set();
39
- termination = deferred();
40
- constructor(kind, path, inboundBidirectionalStreamCapacity, maxPendingStreams) {
41
- this.kind = kind;
42
- this.path = path;
43
- this.inboundBidirectionalStreamCapacity = inboundBidirectionalStreamCapacity;
44
- this.maxPendingStreams = maxPendingStreams;
45
- }
46
- attach(left, right) {
47
- this.sessions = [left, right];
48
- }
49
- assertOpen() {
50
- if (this.closedError !== undefined)
51
- throw this.closedError;
52
- }
53
- open(side) {
54
- this.assertOpen();
55
- const sessions = this.sessions;
56
- if (sessions === undefined)
57
- throw new Error("memory carrier is not attached");
58
- const peer = sessions[side === 0 ? 1 : 0];
59
- if (peer.pendingCount() >= this.maxPendingStreams) {
60
- throw new CarrierError("closed", "carrier incoming stream queue exhausted");
61
- }
62
- const state = new MemoryStreamState(() => {
63
- this.streams.delete(local);
64
- this.streams.delete(remote);
65
- });
66
- const local = new MemoryCarrierStream(state, side);
67
- const remote = new MemoryCarrierStream(state, side === 0 ? 1 : 0);
68
- this.streams.add(local);
69
- this.streams.add(remote);
70
- peer.enqueue(remote);
71
- return local;
72
- }
73
- close() {
74
- if (this.closedError !== undefined)
75
- return;
76
- this.closedError = new CarrierError("closed", "carrier session closed");
77
- for (const stream of [...this.streams])
78
- stream.failFromSession(this.closedError);
79
- this.streams.clear();
80
- for (const session of this.sessions ?? [])
81
- session.fail(this.closedError);
82
- this.termination.resolve();
83
- }
84
- waitTermination() {
85
- return this.termination.promise;
86
- }
87
- }
88
- class MemoryCarrierSession {
89
- link;
90
- side;
91
- kind;
92
- path;
93
- inboundBidirectionalStreamCapacity;
94
- unreliableDatagrams = undefined;
95
- incoming = new AsyncQueue();
96
- closed = false;
97
- constructor(link, side) {
98
- this.link = link;
99
- this.side = side;
100
- this.kind = link.kind;
101
- this.path = link.path;
102
- this.inboundBidirectionalStreamCapacity = link.inboundBidirectionalStreamCapacity;
103
- }
104
- async openStream(options = {}) {
105
- throwIfAborted(options.signal);
106
- this.assertOpen();
107
- return this.link.open(this.side);
108
- }
109
- async acceptStream(options = {}) {
110
- this.assertOpen();
111
- return await this.incoming.shift(options.signal);
112
- }
113
- async close() {
114
- this.link.close();
115
- }
116
- async waitTermination() {
117
- await this.link.waitTermination();
118
- }
119
- abort() {
120
- this.link.close();
121
- }
122
- enqueue(stream) {
123
- if (this.closed) {
124
- void stream.reset();
125
- return;
126
- }
127
- this.incoming.push(stream);
128
- }
129
- pendingCount() {
130
- return this.incoming.size;
131
- }
132
- fail(error) {
133
- if (this.closed)
134
- return;
135
- this.closed = true;
136
- this.incoming.fail(error);
137
- }
138
- assertOpen() {
139
- if (this.closed)
140
- throw new CarrierError("closed", "carrier session closed");
141
- this.link.assertOpen();
142
- }
143
- }
144
- class MemoryStreamState {
145
- onClean;
146
- inbound = [new AsyncQueue(), new AsyncQueue()];
147
- writeClosed = [false, false];
148
- readStopped = [false, false];
149
- terminalError;
150
- cleaned = false;
151
- constructor(onClean) {
152
- this.onClean = onClean;
153
- }
154
- finishIfClosed() {
155
- if (!this.cleaned && this.writeClosed[0] && this.writeClosed[1]) {
156
- this.cleaned = true;
157
- this.onClean();
158
- }
159
- }
160
- reset() {
161
- if (this.terminalError !== undefined)
162
- return;
163
- this.terminalError = new CarrierError("reset", "carrier stream reset");
164
- this.inbound[0].fail(this.terminalError);
165
- this.inbound[1].fail(this.terminalError);
166
- if (!this.cleaned) {
167
- this.cleaned = true;
168
- this.onClean();
169
- }
170
- }
171
- stopSending(side) {
172
- if (this.terminalError !== undefined || this.readStopped[side])
173
- return;
174
- this.readStopped[side] = true;
175
- this.inbound[side].fail(new CarrierError("stop_sending", "carrier stream receive side stopped"));
176
- }
177
- fail(error) {
178
- if (this.terminalError !== undefined)
179
- return;
180
- this.terminalError = error;
181
- this.inbound[0].fail(error);
182
- this.inbound[1].fail(error);
183
- }
184
- }
185
- class MemoryCarrierStream {
186
- state;
187
- side;
188
- constructor(state, side) {
189
- this.state = state;
190
- this.side = side;
191
- }
192
- async read(options = {}) {
193
- this.assertNotTerminal();
194
- return await this.state.inbound[this.side].shift(options.signal);
195
- }
196
- async write(data, options = {}) {
197
- throwIfAborted(options.signal);
198
- this.assertNotTerminal();
199
- if (!(data instanceof Uint8Array))
200
- throw new TypeError("carrier stream write requires Uint8Array");
201
- if (this.state.writeClosed[this.side]) {
202
- throw new CarrierError("write_closed", "carrier stream write side is closed");
203
- }
204
- const peer = this.side === 0 ? 1 : 0;
205
- if (this.state.readStopped[peer]) {
206
- throw new CarrierError("stop_sending", "carrier peer stopped receiving this stream");
207
- }
208
- this.state.inbound[peer].push(data.slice());
209
- return data.length;
210
- }
211
- async closeWrite() {
212
- this.assertNotTerminal();
213
- if (this.state.writeClosed[this.side])
214
- return;
215
- this.state.writeClosed[this.side] = true;
216
- const peer = this.side === 0 ? 1 : 0;
217
- this.state.inbound[peer].push(null);
218
- this.state.finishIfClosed();
219
- }
220
- async reset() {
221
- this.state.reset();
222
- }
223
- async stopSending() {
224
- this.state.stopSending(this.side);
225
- }
226
- abort() {
227
- this.state.reset();
228
- }
229
- failFromSession(error) {
230
- this.state.fail(error);
231
- }
232
- assertNotTerminal() {
233
- if (this.state.terminalError !== undefined)
234
- throw this.state.terminalError;
235
- }
236
- }
237
- class AsyncQueue {
238
- values = [];
239
- head = 0;
240
- waiters = new Set();
241
- terminalError;
242
- get size() {
243
- return this.values.length - this.head;
244
- }
245
- push(value) {
246
- if (this.terminalError !== undefined)
247
- return;
248
- const waiter = this.waiters.values().next().value;
249
- if (waiter !== undefined) {
250
- waiter.deliver(value);
251
- return;
252
- }
253
- this.values.push(value);
254
- }
255
- shift(signal) {
256
- throwIfAborted(signal);
257
- if (this.terminalError !== undefined)
258
- return Promise.reject(this.terminalError);
259
- if (this.head < this.values.length) {
260
- const value = this.values[this.head++];
261
- this.compact();
262
- return Promise.resolve(value);
263
- }
264
- return new Promise((resolve, reject) => {
265
- let settled = false;
266
- const cleanup = () => {
267
- this.waiters.delete(waiter);
268
- signal?.removeEventListener("abort", onAbort);
269
- };
270
- const waiter = {
271
- deliver: (value) => {
272
- if (settled)
273
- return;
274
- settled = true;
275
- cleanup();
276
- resolve(value);
277
- },
278
- fail: (error) => {
279
- if (settled)
280
- return;
281
- settled = true;
282
- cleanup();
283
- reject(error);
284
- },
285
- };
286
- const onAbort = () => waiter.fail(abortedError());
287
- this.waiters.add(waiter);
288
- signal?.addEventListener("abort", onAbort, { once: true });
289
- if (signal?.aborted === true)
290
- onAbort();
291
- });
292
- }
293
- fail(error) {
294
- if (this.terminalError !== undefined)
295
- return;
296
- this.terminalError = error;
297
- this.values.length = 0;
298
- this.head = 0;
299
- for (const waiter of [...this.waiters])
300
- waiter.fail(error);
301
- }
302
- compact() {
303
- if (this.head > 1_024 && this.head * 2 > this.values.length) {
304
- this.values.splice(0, this.head);
305
- this.head = 0;
306
- }
307
- }
308
- }
309
- function throwIfAborted(signal) {
310
- if (signal?.aborted === true)
311
- throw abortedError();
312
- }
313
- function abortedError() {
314
- return new CarrierError("aborted", "carrier operation aborted");
315
- }
316
- class NativeCarrierSessionAdapter {
317
- native;
318
- kind;
319
- path;
320
- inboundBidirectionalStreamCapacity;
321
- unreliableDatagrams;
322
- constructor(native) {
323
- this.native = native;
324
- this.kind = native.kind;
325
- this.path = native.path;
326
- this.inboundBidirectionalStreamCapacity = native.inboundBidirectionalStreamCapacity;
327
- this.unreliableDatagrams = native.unreliableDatagrams;
328
- }
329
- async openStream(options = {}) {
330
- return new NativeCarrierStreamAdapter(await this.native.openStream(options));
331
- }
332
- async acceptStream(options = {}) {
333
- return new NativeCarrierStreamAdapter(await this.native.acceptStream(options));
334
- }
335
- async waitTermination() {
336
- await this.native.waitTermination();
337
- }
338
- async close(error) {
339
- await this.native.close(error);
340
- }
341
- abort(error) {
342
- this.native.abort(error);
343
- }
344
- }
345
- function requireInboundBidirectionalStreamCapacity(value) {
346
- if (!Number.isInteger(value) || value < 3 || value > 130) {
347
- throw new RangeError("inboundBidirectionalStreamCapacity must be an integer from 3 to 130");
348
- }
349
- }
350
- class NativeCarrierStreamAdapter {
351
- native;
352
- constructor(native) {
353
- this.native = native;
354
- }
355
- async read(options = {}) {
356
- return await abortable(this.native.read(), options.signal, () => this.cancelPending());
357
- }
358
- async write(data, options = {}) {
359
- throwIfAborted(options.signal);
360
- return await abortable(this.native.write(data), options.signal, () => this.cancelPending());
361
- }
362
- async closeWrite() {
363
- await this.native.closeWrite();
364
- }
365
- async reset() {
366
- await this.native.reset();
367
- }
368
- async stopSending() {
369
- await this.native.stopSending();
370
- }
371
- abort(error) {
372
- this.native.abort(error);
373
- }
374
- cancelPending() {
375
- if (this.native.cancelPending !== undefined)
376
- this.native.cancelPending();
377
- else
378
- this.native.abort();
379
- }
380
- }
381
- async function abortable(promise, signal, onAbort) {
382
- if (signal === undefined)
383
- return await promise;
384
- throwIfAborted(signal);
385
- return await new Promise((resolve, reject) => {
386
- let settled = false;
387
- const cleanup = () => signal.removeEventListener("abort", abort);
388
- const abort = () => {
389
- if (settled)
390
- return;
391
- settled = true;
392
- cleanup();
393
- onAbort();
394
- reject(abortedError());
395
- };
396
- signal.addEventListener("abort", abort, { once: true });
397
- void promise.then((value) => {
398
- if (settled)
399
- return;
400
- settled = true;
401
- cleanup();
402
- resolve(value);
403
- }, (error) => {
404
- if (settled)
405
- return;
406
- settled = true;
407
- cleanup();
408
- reject(error);
409
- });
410
- });
411
- }
@@ -1,46 +0,0 @@
1
- import type { RpcError } from "../rpc/wire.js";
2
- export interface InternalByteStreamV2 {
3
- readonly id: bigint;
4
- readonly kind: string;
5
- readonly terminalError: Error | undefined;
6
- read(options?: OperationOptionsV2): Promise<Uint8Array | null>;
7
- write(data: Uint8Array, options?: OperationOptionsV2): Promise<number>;
8
- closeWrite(): Promise<void>;
9
- reset(): Promise<void>;
10
- close(): Promise<void>;
11
- }
12
- export interface InternalIncomingStreamV2 {
13
- readonly id: bigint;
14
- readonly kind: string;
15
- readonly metadata: JsonObjectV2;
16
- readonly stream: InternalByteStreamV2;
17
- }
18
- export interface InternalSessionV2 {
19
- readonly path: PathKind;
20
- readonly endpointInstanceId: string | undefined;
21
- readonly rpc: InternalRpcPeerV2;
22
- readonly termination: Promise<Readonly<{
23
- error: Error;
24
- }>>;
25
- readonly unreliableMessages?: UnreliableMessageChannelV2 | undefined;
26
- openStream(kind: string, options?: InternalStreamOpenOptionsV2): Promise<InternalByteStreamV2>;
27
- acceptStream(options?: OperationOptionsV2): Promise<InternalIncomingStreamV2>;
28
- rekey(options?: OperationOptionsV2): Promise<void>;
29
- probeLiveness(options?: OperationOptionsV2): Promise<number>;
30
- waitTermination(): Promise<Readonly<{
31
- error: Error;
32
- }>>;
33
- close(): Promise<void>;
34
- }
35
- export interface InternalRpcPeerV2 {
36
- call(typeId: number, payload: unknown, signal?: AbortSignal): Promise<{
37
- payload: unknown;
38
- error?: RpcError;
39
- }>;
40
- notify(typeId: number, payload: unknown): Promise<void>;
41
- onNotify(typeId: number, handler: (payload: unknown) => void): () => void;
42
- close(): void;
43
- }
44
- export type InternalStreamOpenOptionsV2 = OperationOptionsV2 & Readonly<{
45
- metadata?: JsonObjectV2;
46
- }>;
@@ -1 +0,0 @@
1
- /** @internal */ export { SessionError } from "../public/contract.js";
@@ -1,80 +0,0 @@
1
- import { CipherSuiteV2 } from "./protocol.js";
2
- export declare enum HandshakeMessageTypeV2 {
3
- ClientInit = 1,
4
- ServerFinished = 2,
5
- ClientFinished = 3
6
- }
7
- export type HandshakeFrameV2 = Readonly<{
8
- type: HandshakeMessageTypeV2;
9
- payload: Uint8Array;
10
- raw: Uint8Array;
11
- }>;
12
- export type ClientInitV2 = Readonly<{
13
- profile: "flowersec/2";
14
- channelID: string;
15
- sessionContractHash: Uint8Array;
16
- clientRole: 1;
17
- suite: CipherSuiteV2;
18
- clientEphemeralPublic: Uint8Array;
19
- nonceC: Uint8Array;
20
- selectedFeatures: number;
21
- maxInboundStreams: number;
22
- clientAdmissionBinding: Uint8Array;
23
- clientEndpointInstanceID: string;
24
- }>;
25
- export type ServerFinishedCoreV2 = Readonly<{
26
- suite: CipherSuiteV2;
27
- handshakeID: Uint8Array;
28
- serverEphemeralPublic: Uint8Array;
29
- nonceS: Uint8Array;
30
- sessionContractHash: Uint8Array;
31
- selectedFeatures: number;
32
- maxInboundStreams: number;
33
- serverAdmissionBinding: Uint8Array;
34
- serverEndpointInstanceID: string;
35
- }>;
36
- export type ServerFinishedV2 = Readonly<{
37
- core: ServerFinishedCoreV2;
38
- serverConfirm: Uint8Array;
39
- }>;
40
- export type ClientFinishedV2 = Readonly<{
41
- handshakeID: Uint8Array;
42
- clientConfirm: Uint8Array;
43
- }>;
44
- export type HandshakeExpectationsV2 = Readonly<{
45
- path: "direct" | "tunnel";
46
- channelID: string;
47
- sessionContractHash: Uint8Array;
48
- suite: CipherSuiteV2;
49
- maxInboundStreams: number;
50
- admissionBinding: Uint8Array;
51
- expectedEndpointInstanceID: string;
52
- }>;
53
- export declare function encodeControlPrefaceV2(): Uint8Array;
54
- export declare function parseControlPrefaceV2(raw: Uint8Array): void;
55
- export declare function encodeHandshakeFrameV2(type: HandshakeMessageTypeV2, payload: Uint8Array): Uint8Array;
56
- export declare function decodeHandshakeFrameV2(raw: Uint8Array): HandshakeFrameV2;
57
- export declare function encodeClientInitV2(message: ClientInitV2): Uint8Array;
58
- export declare function decodeClientInitV2(raw: Uint8Array): ClientInitV2;
59
- export declare function encodeServerFinishedCoreV2(core: ServerFinishedCoreV2, suite: CipherSuiteV2): Uint8Array;
60
- export declare function encodeServerFinishedV2(message: ServerFinishedV2, suite: CipherSuiteV2): Uint8Array;
61
- export declare function decodeServerFinishedV2(raw: Uint8Array, suite: CipherSuiteV2): ServerFinishedV2;
62
- export declare function encodeClientFinishedCoreV2(handshakeID: Uint8Array): Uint8Array;
63
- export declare function encodeClientFinishedV2(message: ClientFinishedV2): Uint8Array;
64
- export declare function decodeClientFinishedV2(raw: Uint8Array): ClientFinishedV2;
65
- export declare function generateEphemeralKeyV2(suite: CipherSuiteV2, entropy: (length: number) => Uint8Array): Readonly<{
66
- privateKey: Uint8Array;
67
- publicKey: Uint8Array;
68
- }>;
69
- export declare function ephemeralPublicKeyV2(suite: CipherSuiteV2, privateKey: Uint8Array): Uint8Array;
70
- export declare function computeSharedSecretV2(suite: CipherSuiteV2, privateKey: Uint8Array, peerPublicKey: Uint8Array): Uint8Array;
71
- export declare function deriveHandshakePRKV2(psk: Uint8Array, sharedSecret: Uint8Array): Uint8Array;
72
- export declare function computeHandshakeH0V2(fsc2Raw: Uint8Array, clientInitRaw: Uint8Array): Uint8Array;
73
- export declare function computeHandshakeH1V2(h0: Uint8Array, serverCoreRaw: Uint8Array): Uint8Array;
74
- export declare function computeServerConfirmV2(handshakePRK: Uint8Array, h1: Uint8Array): Uint8Array;
75
- export declare function computeHandshakeH2V2(h1: Uint8Array, serverFinishedRaw: Uint8Array, clientCoreRaw: Uint8Array): Uint8Array;
76
- export declare function computeClientConfirmV2(handshakePRK: Uint8Array, h2: Uint8Array): Uint8Array;
77
- export declare function computeHandshakeH3V2(h2: Uint8Array, clientFinishedRaw: Uint8Array): Uint8Array;
78
- export declare function deriveSessionPRKV2(h3: Uint8Array, handshakePRK: Uint8Array): Uint8Array;
79
- export declare function validateClientInitV2(message: ClientInitV2, expected: HandshakeExpectationsV2): void;
80
- export declare function validateServerFinishedV2(message: ServerFinishedV2, expected: HandshakeExpectationsV2): void;