@peerbit/stream-interface 6.0.1-dac5207 → 6.0.2
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/src/messages.d.ts +29 -4
- package/dist/src/messages.d.ts.map +1 -1
- package/dist/src/messages.js +317 -23
- package/dist/src/messages.js.map +1 -1
- package/package.json +2 -2
- package/src/messages.ts +364 -25
package/dist/src/messages.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { BinaryWriter } from "@dao-xyz/borsh";
|
|
1
2
|
import type { PeerId } from "@libp2p/interface";
|
|
2
|
-
import { PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
|
|
3
|
+
import { PreHash, PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
|
|
3
4
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
4
5
|
import { type PeerRefs } from "./keys.js";
|
|
5
6
|
export declare const ID_LENGTH = 32;
|
|
@@ -13,6 +14,11 @@ export declare const deliveryModeHasReceiver: (mode: DeliveryMode) => mode is {
|
|
|
13
14
|
};
|
|
14
15
|
export declare abstract class DeliveryMode {
|
|
15
16
|
}
|
|
17
|
+
export declare const isAcknowledgedDeliveryMode: (mode: DeliveryMode) => mode is AcknowledgeDelivery | AcknowledgeAnyWhere;
|
|
18
|
+
export declare const getDeliveryHopTrace: (mode: DeliveryMode) => string[];
|
|
19
|
+
export declare const hasDeliveryHop: (mode: DeliveryMode, hash: string) => boolean;
|
|
20
|
+
export declare const setDeliveryOriginHop: (mode: DeliveryMode, hash: string) => DeliveryMode;
|
|
21
|
+
export declare const appendDeliveryHop: (mode: DeliveryMode, hash: string) => DeliveryMode;
|
|
16
22
|
/**
|
|
17
23
|
* when you just want to deliver at paths, but does not expect acknowledgement
|
|
18
24
|
*/
|
|
@@ -30,9 +36,11 @@ export declare class SilentDelivery extends DeliveryMode {
|
|
|
30
36
|
export declare class AcknowledgeDelivery extends DeliveryMode {
|
|
31
37
|
to: string[];
|
|
32
38
|
redundancy: number;
|
|
39
|
+
hops: string[];
|
|
33
40
|
constructor(properties: {
|
|
34
41
|
to: PeerRefs;
|
|
35
42
|
redundancy: number;
|
|
43
|
+
hops?: string[];
|
|
36
44
|
});
|
|
37
45
|
}
|
|
38
46
|
/**
|
|
@@ -43,8 +51,10 @@ export declare class AcknowledgeDelivery extends DeliveryMode {
|
|
|
43
51
|
*/
|
|
44
52
|
export declare class AcknowledgeAnyWhere extends DeliveryMode {
|
|
45
53
|
redundancy: number;
|
|
54
|
+
hops: string[];
|
|
46
55
|
constructor(properties: {
|
|
47
56
|
redundancy: number;
|
|
57
|
+
hops?: string[];
|
|
48
58
|
});
|
|
49
59
|
}
|
|
50
60
|
/**
|
|
@@ -90,6 +100,7 @@ export type IdOptions = {
|
|
|
90
100
|
export type WithExtraSigners = {
|
|
91
101
|
extraSigners?: ((data: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey)[];
|
|
92
102
|
};
|
|
103
|
+
export declare const ACK_CONTROL_PRIORITY = 3;
|
|
93
104
|
export declare class MessageHeader<T extends DeliveryMode = DeliveryMode> {
|
|
94
105
|
private _id;
|
|
95
106
|
timestamp: bigint;
|
|
@@ -111,12 +122,20 @@ export declare class MessageHeader<T extends DeliveryMode = DeliveryMode> {
|
|
|
111
122
|
});
|
|
112
123
|
get id(): Uint8Array<ArrayBufferLike>;
|
|
113
124
|
get origin(): MultiAddrinfo | undefined;
|
|
125
|
+
writeBytes(writer: BinaryWriter, properties: {
|
|
126
|
+
includeMode: boolean;
|
|
127
|
+
includeSignatures: boolean;
|
|
128
|
+
}): void;
|
|
114
129
|
verify(): boolean;
|
|
115
130
|
}
|
|
116
131
|
export declare abstract class Message<T extends DeliveryMode = DeliveryMode> {
|
|
117
|
-
|
|
132
|
+
protected _cachedSignableBytes?: Uint8Array;
|
|
133
|
+
protected _cachedPreparedSignableBytes?: Map<number, Uint8Array>;
|
|
134
|
+
static from(bytes: Uint8ArrayList): DataMessage<AcknowledgeDelivery | AcknowledgeAnyWhere | SilentDelivery | AnyWhere> | ACK | Hello | Goodbye;
|
|
118
135
|
abstract get header(): MessageHeader<T>;
|
|
119
136
|
sign(signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey): Promise<this>;
|
|
137
|
+
getSignableBytes(): Uint8Array;
|
|
138
|
+
getPreparedSignableBytes(prehash: PreHash): Promise<Uint8Array>;
|
|
120
139
|
abstract bytes(): Uint8ArrayList | Uint8Array;
|
|
121
140
|
_verified: boolean;
|
|
122
141
|
verify(expectSignatures: boolean): Promise<boolean>;
|
|
@@ -124,15 +143,21 @@ export declare abstract class Message<T extends DeliveryMode = DeliveryMode> {
|
|
|
124
143
|
export declare class DataMessage<T extends SilentDelivery | AcknowledgeDelivery | AcknowledgeAnyWhere | AnyWhere = SilentDelivery | AcknowledgeDelivery | AcknowledgeAnyWhere | AnyWhere> extends Message<T> {
|
|
125
144
|
private _header;
|
|
126
145
|
private _data?;
|
|
146
|
+
private _dataBytes?;
|
|
127
147
|
constructor(properties: {
|
|
128
148
|
header: MessageHeader<T>;
|
|
129
|
-
data?: Uint8Array;
|
|
149
|
+
data?: Uint8Array | Uint8ArrayList;
|
|
130
150
|
});
|
|
131
151
|
get id(): Uint8Array;
|
|
132
152
|
get header(): MessageHeader<T>;
|
|
133
153
|
get data(): Uint8Array | undefined;
|
|
154
|
+
get dataByteLength(): number;
|
|
155
|
+
get hasData(): boolean;
|
|
134
156
|
/** Manually ser/der for performance gains */
|
|
135
|
-
bytes(): Uint8Array<ArrayBufferLike>;
|
|
157
|
+
bytes(): Uint8ArrayList | Uint8Array<ArrayBufferLike>;
|
|
158
|
+
getSignableBytes(): Uint8Array;
|
|
159
|
+
private setDataSource;
|
|
160
|
+
private serializeBytes;
|
|
136
161
|
static from(bytes: Uint8ArrayList): DataMessage;
|
|
137
162
|
}
|
|
138
163
|
export declare const getMessageExpiresAt: (message: Message | DataMessage) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/src/messages.js
CHANGED
|
@@ -32,8 +32,8 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
32
32
|
}
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
|
-
import { deserialize, field, fixedArray, option, serialize, variant, vec, } from "@dao-xyz/borsh";
|
|
36
|
-
import { PublicSignKey, SignatureWithKey, randomBytes, toBase64,
|
|
35
|
+
import { BinaryWriter, deserialize, field, fixedArray, option, serialize, variant, vec, } from "@dao-xyz/borsh";
|
|
36
|
+
import { PreHash, PublicSignKey, SignatureWithKey, prehashFn, randomBytes, toBase64, verifyPrepared, } from "@peerbit/crypto";
|
|
37
37
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
38
38
|
import { coercePeerRefsToHashes } from "./keys.js";
|
|
39
39
|
export const ID_LENGTH = 32;
|
|
@@ -59,6 +59,25 @@ export const deliveryModeHasReceiver = (mode) => {
|
|
|
59
59
|
};
|
|
60
60
|
export class DeliveryMode {
|
|
61
61
|
}
|
|
62
|
+
export const isAcknowledgedDeliveryMode = (mode) => mode instanceof AcknowledgeDelivery || mode instanceof AcknowledgeAnyWhere;
|
|
63
|
+
export const getDeliveryHopTrace = (mode) => isAcknowledgedDeliveryMode(mode) ? mode.hops : [];
|
|
64
|
+
export const hasDeliveryHop = (mode, hash) => isAcknowledgedDeliveryMode(mode) && mode.hops.includes(hash);
|
|
65
|
+
export const setDeliveryOriginHop = (mode, hash) => {
|
|
66
|
+
if (isAcknowledgedDeliveryMode(mode)) {
|
|
67
|
+
mode.hops = [hash];
|
|
68
|
+
}
|
|
69
|
+
return mode;
|
|
70
|
+
};
|
|
71
|
+
export const appendDeliveryHop = (mode, hash) => {
|
|
72
|
+
if (!isAcknowledgedDeliveryMode(mode)) {
|
|
73
|
+
return mode;
|
|
74
|
+
}
|
|
75
|
+
if (mode.hops.includes(hash)) {
|
|
76
|
+
return mode;
|
|
77
|
+
}
|
|
78
|
+
mode.hops = [...mode.hops, hash];
|
|
79
|
+
return mode;
|
|
80
|
+
};
|
|
62
81
|
/**
|
|
63
82
|
* when you just want to deliver at paths, but does not expect acknowledgement
|
|
64
83
|
*/
|
|
@@ -114,14 +133,19 @@ let AcknowledgeDelivery = (() => {
|
|
|
114
133
|
let _redundancy_decorators;
|
|
115
134
|
let _redundancy_initializers = [];
|
|
116
135
|
let _redundancy_extraInitializers = [];
|
|
136
|
+
let _hops_decorators;
|
|
137
|
+
let _hops_initializers = [];
|
|
138
|
+
let _hops_extraInitializers = [];
|
|
117
139
|
var AcknowledgeDelivery = class extends _classSuper {
|
|
118
140
|
static { _classThis = this; }
|
|
119
141
|
static {
|
|
120
142
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
121
143
|
_to_decorators = [field({ type: vec("string") })];
|
|
122
144
|
_redundancy_decorators = [field({ type: "u8" })];
|
|
145
|
+
_hops_decorators = [field({ type: vec("string") })];
|
|
123
146
|
__esDecorate(null, null, _to_decorators, { kind: "field", name: "to", static: false, private: false, access: { has: obj => "to" in obj, get: obj => obj.to, set: (obj, value) => { obj.to = value; } }, metadata: _metadata }, _to_initializers, _to_extraInitializers);
|
|
124
147
|
__esDecorate(null, null, _redundancy_decorators, { kind: "field", name: "redundancy", static: false, private: false, access: { has: obj => "redundancy" in obj, get: obj => obj.redundancy, set: (obj, value) => { obj.redundancy = value; } }, metadata: _metadata }, _redundancy_initializers, _redundancy_extraInitializers);
|
|
148
|
+
__esDecorate(null, null, _hops_decorators, { kind: "field", name: "hops", static: false, private: false, access: { has: obj => "hops" in obj, get: obj => obj.hops, set: (obj, value) => { obj.hops = value; } }, metadata: _metadata }, _hops_initializers, _hops_extraInitializers);
|
|
125
149
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
126
150
|
AcknowledgeDelivery = _classThis = _classDescriptor.value;
|
|
127
151
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -129,15 +153,17 @@ let AcknowledgeDelivery = (() => {
|
|
|
129
153
|
}
|
|
130
154
|
to = __runInitializers(this, _to_initializers, void 0);
|
|
131
155
|
redundancy = (__runInitializers(this, _to_extraInitializers), __runInitializers(this, _redundancy_initializers, void 0));
|
|
156
|
+
hops = (__runInitializers(this, _redundancy_extraInitializers), __runInitializers(this, _hops_initializers, void 0));
|
|
132
157
|
constructor(properties) {
|
|
133
158
|
super();
|
|
134
|
-
__runInitializers(this,
|
|
159
|
+
__runInitializers(this, _hops_extraInitializers);
|
|
135
160
|
const to = coercePeerRefsToHashes(properties.to);
|
|
136
161
|
if (to.length === 0) {
|
|
137
162
|
throw new Error("Invalud value of property 'to', expecting either undefined or an array with more than one element");
|
|
138
163
|
}
|
|
139
164
|
this.to = to;
|
|
140
165
|
this.redundancy = properties.redundancy;
|
|
166
|
+
this.hops = properties.hops ?? [];
|
|
141
167
|
}
|
|
142
168
|
};
|
|
143
169
|
return AcknowledgeDelivery = _classThis;
|
|
@@ -158,22 +184,29 @@ let AcknowledgeAnyWhere = (() => {
|
|
|
158
184
|
let _redundancy_decorators;
|
|
159
185
|
let _redundancy_initializers = [];
|
|
160
186
|
let _redundancy_extraInitializers = [];
|
|
187
|
+
let _hops_decorators;
|
|
188
|
+
let _hops_initializers = [];
|
|
189
|
+
let _hops_extraInitializers = [];
|
|
161
190
|
var AcknowledgeAnyWhere = class extends _classSuper {
|
|
162
191
|
static { _classThis = this; }
|
|
163
192
|
static {
|
|
164
193
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
165
194
|
_redundancy_decorators = [field({ type: "u8" })];
|
|
195
|
+
_hops_decorators = [field({ type: vec("string") })];
|
|
166
196
|
__esDecorate(null, null, _redundancy_decorators, { kind: "field", name: "redundancy", static: false, private: false, access: { has: obj => "redundancy" in obj, get: obj => obj.redundancy, set: (obj, value) => { obj.redundancy = value; } }, metadata: _metadata }, _redundancy_initializers, _redundancy_extraInitializers);
|
|
197
|
+
__esDecorate(null, null, _hops_decorators, { kind: "field", name: "hops", static: false, private: false, access: { has: obj => "hops" in obj, get: obj => obj.hops, set: (obj, value) => { obj.hops = value; } }, metadata: _metadata }, _hops_initializers, _hops_extraInitializers);
|
|
167
198
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
168
199
|
AcknowledgeAnyWhere = _classThis = _classDescriptor.value;
|
|
169
200
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
170
201
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
171
202
|
}
|
|
172
203
|
redundancy = __runInitializers(this, _redundancy_initializers, void 0);
|
|
204
|
+
hops = (__runInitializers(this, _redundancy_extraInitializers), __runInitializers(this, _hops_initializers, void 0));
|
|
173
205
|
constructor(properties) {
|
|
174
206
|
super();
|
|
175
|
-
__runInitializers(this,
|
|
207
|
+
__runInitializers(this, _hops_extraInitializers);
|
|
176
208
|
this.redundancy = properties.redundancy;
|
|
209
|
+
this.hops = properties.hops ?? [];
|
|
177
210
|
}
|
|
178
211
|
};
|
|
179
212
|
return AcknowledgeAnyWhere = _classThis;
|
|
@@ -299,6 +332,8 @@ let MultiAddrinfo = (() => {
|
|
|
299
332
|
return MultiAddrinfo = _classThis;
|
|
300
333
|
})();
|
|
301
334
|
export { MultiAddrinfo };
|
|
335
|
+
// Control-path responses like ACKs should be able to cut through congested data lanes.
|
|
336
|
+
export const ACK_CONTROL_PRIORITY = 3;
|
|
302
337
|
const getDefaultPriorityFromMode = (mode) => {
|
|
303
338
|
if (mode instanceof SilentDelivery) {
|
|
304
339
|
return 0;
|
|
@@ -313,10 +348,17 @@ const getDefaultPriorityFromMode = (mode) => {
|
|
|
313
348
|
return 1;
|
|
314
349
|
}
|
|
315
350
|
if (mode instanceof TracedDelivery) {
|
|
316
|
-
return
|
|
351
|
+
return ACK_CONTROL_PRIORITY;
|
|
317
352
|
}
|
|
318
353
|
throw new Error("Unexpected mode: " + mode.constructor.name);
|
|
319
354
|
};
|
|
355
|
+
const getDefaultResponsePriorityFromMode = (mode) => {
|
|
356
|
+
if (mode instanceof AcknowledgeAnyWhere ||
|
|
357
|
+
mode instanceof AcknowledgeDelivery) {
|
|
358
|
+
return ACK_CONTROL_PRIORITY;
|
|
359
|
+
}
|
|
360
|
+
return undefined;
|
|
361
|
+
};
|
|
320
362
|
let MessageHeader = (() => {
|
|
321
363
|
let _classDecorators = [variant(0)];
|
|
322
364
|
let _classDescriptor;
|
|
@@ -403,7 +445,10 @@ let MessageHeader = (() => {
|
|
|
403
445
|
properties.priority != null
|
|
404
446
|
? properties.priority
|
|
405
447
|
: getDefaultPriorityFromMode(this.mode);
|
|
406
|
-
this.responsePriority =
|
|
448
|
+
this.responsePriority =
|
|
449
|
+
properties.responsePriority != null
|
|
450
|
+
? properties.responsePriority
|
|
451
|
+
: getDefaultResponsePriorityFromMode(this.mode);
|
|
407
452
|
}
|
|
408
453
|
get id() {
|
|
409
454
|
return this._id;
|
|
@@ -411,6 +456,48 @@ let MessageHeader = (() => {
|
|
|
411
456
|
get origin() {
|
|
412
457
|
return this._origin;
|
|
413
458
|
}
|
|
459
|
+
writeBytes(writer, properties) {
|
|
460
|
+
writer.u8(0);
|
|
461
|
+
BinaryWriter.uint8ArrayFixed(this._id, writer);
|
|
462
|
+
writer.u64(this.timestamp);
|
|
463
|
+
writer.u64(this.session);
|
|
464
|
+
writer.u64(this.expires);
|
|
465
|
+
if (this.priority != null) {
|
|
466
|
+
writer.u8(1);
|
|
467
|
+
writer.u32(this.priority);
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
writer.u8(0);
|
|
471
|
+
}
|
|
472
|
+
if (this.responsePriority != null) {
|
|
473
|
+
writer.u8(1);
|
|
474
|
+
writer.u32(this.responsePriority);
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
writer.u8(0);
|
|
478
|
+
}
|
|
479
|
+
if (this._origin != null) {
|
|
480
|
+
writer.u8(1);
|
|
481
|
+
serialize(this._origin, writer);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
writer.u8(0);
|
|
485
|
+
}
|
|
486
|
+
if (properties.includeMode && this.mode != null) {
|
|
487
|
+
writer.u8(1);
|
|
488
|
+
serialize(this.mode, writer);
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
writer.u8(0);
|
|
492
|
+
}
|
|
493
|
+
if (properties.includeSignatures && this.signatures != null) {
|
|
494
|
+
writer.u8(1);
|
|
495
|
+
serialize(this.signatures, writer);
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
writer.u8(0);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
414
501
|
verify() {
|
|
415
502
|
return this.expires >= +new Date();
|
|
416
503
|
}
|
|
@@ -418,18 +505,21 @@ let MessageHeader = (() => {
|
|
|
418
505
|
return MessageHeader = _classThis;
|
|
419
506
|
})();
|
|
420
507
|
export { MessageHeader };
|
|
421
|
-
const
|
|
508
|
+
const serializeUnsigned = (obj) => {
|
|
422
509
|
const mode = obj.header.mode;
|
|
423
510
|
obj.header.mode = undefined;
|
|
424
511
|
const signatures = obj.header.signatures;
|
|
425
512
|
obj.header.signatures = undefined;
|
|
426
513
|
const bytes = serialize(obj);
|
|
427
|
-
// reassign properties if some other process expects them
|
|
428
514
|
obj.header.signatures = signatures;
|
|
429
515
|
obj.header.mode = mode;
|
|
516
|
+
return bytes;
|
|
517
|
+
};
|
|
518
|
+
const sign = async (obj, signer) => {
|
|
519
|
+
const bytes = obj instanceof Message ? obj.getSignableBytes() : serializeUnsigned(obj);
|
|
520
|
+
const signatures = obj.header.signatures;
|
|
430
521
|
const signature = await signer(bytes);
|
|
431
522
|
obj.header.signatures = new Signatures(signatures ? [...signatures.signatures, signature] : [signature]);
|
|
432
|
-
obj.header.mode = mode;
|
|
433
523
|
return obj;
|
|
434
524
|
};
|
|
435
525
|
const verifyMultiSig = async (message, expectSignatures) => {
|
|
@@ -437,20 +527,28 @@ const verifyMultiSig = async (message, expectSignatures) => {
|
|
|
437
527
|
if (!signatures || signatures.signatures.length === 0) {
|
|
438
528
|
return !expectSignatures;
|
|
439
529
|
}
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
const
|
|
444
|
-
message.header.mode = to;
|
|
445
|
-
message.header.signatures = signatures;
|
|
530
|
+
const bytes = message instanceof Message
|
|
531
|
+
? message.getSignableBytes()
|
|
532
|
+
: serializeUnsigned(message);
|
|
533
|
+
const preparedByPrehash = new Map();
|
|
446
534
|
for (const signature of signatures.signatures) {
|
|
447
|
-
|
|
535
|
+
let prepared = preparedByPrehash.get(signature.prehash);
|
|
536
|
+
if (!prepared) {
|
|
537
|
+
prepared =
|
|
538
|
+
signature.prehash === PreHash.NONE
|
|
539
|
+
? bytes
|
|
540
|
+
: await prehashFn(bytes, signature.prehash);
|
|
541
|
+
preparedByPrehash.set(signature.prehash, prepared);
|
|
542
|
+
}
|
|
543
|
+
if (!(await verifyPrepared(signature, prepared))) {
|
|
448
544
|
return false;
|
|
449
545
|
}
|
|
450
546
|
}
|
|
451
547
|
return true;
|
|
452
548
|
};
|
|
453
549
|
export class Message {
|
|
550
|
+
_cachedSignableBytes;
|
|
551
|
+
_cachedPreparedSignableBytes;
|
|
454
552
|
static from(bytes) {
|
|
455
553
|
if (bytes.get(0) === DATA_VARIANT) {
|
|
456
554
|
// Data
|
|
@@ -470,6 +568,25 @@ export class Message {
|
|
|
470
568
|
async sign(signer) {
|
|
471
569
|
return sign(this, signer);
|
|
472
570
|
}
|
|
571
|
+
getSignableBytes() {
|
|
572
|
+
return (this._cachedSignableBytes ??
|
|
573
|
+
(this._cachedSignableBytes = serializeUnsigned(this)));
|
|
574
|
+
}
|
|
575
|
+
async getPreparedSignableBytes(prehash) {
|
|
576
|
+
if (prehash === PreHash.NONE) {
|
|
577
|
+
return this.getSignableBytes();
|
|
578
|
+
}
|
|
579
|
+
let prepared = this._cachedPreparedSignableBytes?.get(prehash);
|
|
580
|
+
if (prepared) {
|
|
581
|
+
return prepared;
|
|
582
|
+
}
|
|
583
|
+
prepared = await prehashFn(this.getSignableBytes(), prehash);
|
|
584
|
+
if (!this._cachedPreparedSignableBytes) {
|
|
585
|
+
this._cachedPreparedSignableBytes = new Map();
|
|
586
|
+
}
|
|
587
|
+
this._cachedPreparedSignableBytes.set(prehash, prepared);
|
|
588
|
+
return prepared;
|
|
589
|
+
}
|
|
473
590
|
/* abstract equals(other: Message): boolean; */
|
|
474
591
|
_verified;
|
|
475
592
|
async verify(expectSignatures) {
|
|
@@ -482,6 +599,131 @@ export class Message {
|
|
|
482
599
|
}
|
|
483
600
|
// I pack data with this message
|
|
484
601
|
const DATA_VARIANT = 0;
|
|
602
|
+
const readU8At = (bytes, offset) => bytes.get(offset);
|
|
603
|
+
const readU32LEAt = (bytes, offset) => bytes.getUint32(offset, true);
|
|
604
|
+
const skipBorshBytes = (bytes, offset) => {
|
|
605
|
+
const length = readU32LEAt(bytes, offset);
|
|
606
|
+
return offset + 4 + length;
|
|
607
|
+
};
|
|
608
|
+
const skipBorshString = (bytes, offset) => skipBorshBytes(bytes, offset);
|
|
609
|
+
const skipStringVec = (bytes, offset) => {
|
|
610
|
+
const length = readU32LEAt(bytes, offset);
|
|
611
|
+
offset += 4;
|
|
612
|
+
for (let i = 0; i < length; i++) {
|
|
613
|
+
offset = skipBorshString(bytes, offset);
|
|
614
|
+
}
|
|
615
|
+
return offset;
|
|
616
|
+
};
|
|
617
|
+
const skipPeerInfo = (bytes, offset) => {
|
|
618
|
+
const variant = readU8At(bytes, offset);
|
|
619
|
+
offset += 1;
|
|
620
|
+
if (variant === 0) {
|
|
621
|
+
return skipStringVec(bytes, offset);
|
|
622
|
+
}
|
|
623
|
+
throw new Error(`Unsupported peer info variant: ${variant}`);
|
|
624
|
+
};
|
|
625
|
+
const skipDeliveryMode = (bytes, offset) => {
|
|
626
|
+
const variant = readU8At(bytes, offset);
|
|
627
|
+
offset += 1;
|
|
628
|
+
if (variant === 0) {
|
|
629
|
+
offset = skipStringVec(bytes, offset);
|
|
630
|
+
return offset + 1;
|
|
631
|
+
}
|
|
632
|
+
if (variant === 1) {
|
|
633
|
+
offset = skipStringVec(bytes, offset);
|
|
634
|
+
offset += 1;
|
|
635
|
+
return skipStringVec(bytes, offset);
|
|
636
|
+
}
|
|
637
|
+
if (variant === 5) {
|
|
638
|
+
offset += 1;
|
|
639
|
+
return skipStringVec(bytes, offset);
|
|
640
|
+
}
|
|
641
|
+
if (variant === 3) {
|
|
642
|
+
return skipStringVec(bytes, offset);
|
|
643
|
+
}
|
|
644
|
+
if (variant === 4) {
|
|
645
|
+
return offset;
|
|
646
|
+
}
|
|
647
|
+
throw new Error(`Unsupported delivery mode variant: ${variant}`);
|
|
648
|
+
};
|
|
649
|
+
const skipPublicSignKey = (bytes, offset) => {
|
|
650
|
+
const variant = readU8At(bytes, offset);
|
|
651
|
+
offset += 1;
|
|
652
|
+
if (variant === 0) {
|
|
653
|
+
return offset + 32;
|
|
654
|
+
}
|
|
655
|
+
if (variant === 1) {
|
|
656
|
+
return offset + 33;
|
|
657
|
+
}
|
|
658
|
+
throw new Error(`Unsupported public sign key variant: ${variant}`);
|
|
659
|
+
};
|
|
660
|
+
const skipSignatureWithKey = (bytes, offset) => {
|
|
661
|
+
const variant = readU8At(bytes, offset);
|
|
662
|
+
if (variant !== 0) {
|
|
663
|
+
throw new Error(`Unsupported signature variant: ${variant}`);
|
|
664
|
+
}
|
|
665
|
+
offset += 1;
|
|
666
|
+
offset = skipBorshBytes(bytes, offset);
|
|
667
|
+
offset = skipPublicSignKey(bytes, offset);
|
|
668
|
+
return offset + 1;
|
|
669
|
+
};
|
|
670
|
+
const skipSignatures = (bytes, offset) => {
|
|
671
|
+
const variant = readU8At(bytes, offset);
|
|
672
|
+
if (variant !== 0) {
|
|
673
|
+
throw new Error(`Unsupported signatures variant: ${variant}`);
|
|
674
|
+
}
|
|
675
|
+
offset += 1;
|
|
676
|
+
const length = readU8At(bytes, offset);
|
|
677
|
+
offset += 1;
|
|
678
|
+
for (let i = 0; i < length; i++) {
|
|
679
|
+
offset = skipSignatureWithKey(bytes, offset);
|
|
680
|
+
}
|
|
681
|
+
return offset;
|
|
682
|
+
};
|
|
683
|
+
const getDataMessageDataFlagOffset = (bytes) => {
|
|
684
|
+
let offset = 0;
|
|
685
|
+
if (readU8At(bytes, offset) !== DATA_VARIANT) {
|
|
686
|
+
throw new Error("Unsupported");
|
|
687
|
+
}
|
|
688
|
+
offset += 1;
|
|
689
|
+
if (readU8At(bytes, offset) !== 0) {
|
|
690
|
+
throw new Error("Unsupported message header variant");
|
|
691
|
+
}
|
|
692
|
+
offset += 1;
|
|
693
|
+
offset += ID_LENGTH;
|
|
694
|
+
offset += 8 * 3;
|
|
695
|
+
if (readU8At(bytes, offset) === 1) {
|
|
696
|
+
offset += 5;
|
|
697
|
+
}
|
|
698
|
+
else {
|
|
699
|
+
offset += 1;
|
|
700
|
+
}
|
|
701
|
+
if (readU8At(bytes, offset) === 1) {
|
|
702
|
+
offset += 5;
|
|
703
|
+
}
|
|
704
|
+
else {
|
|
705
|
+
offset += 1;
|
|
706
|
+
}
|
|
707
|
+
if (readU8At(bytes, offset) === 1) {
|
|
708
|
+
offset = skipPeerInfo(bytes, offset + 1);
|
|
709
|
+
}
|
|
710
|
+
else {
|
|
711
|
+
offset += 1;
|
|
712
|
+
}
|
|
713
|
+
if (readU8At(bytes, offset) === 1) {
|
|
714
|
+
offset = skipDeliveryMode(bytes, offset + 1);
|
|
715
|
+
}
|
|
716
|
+
else {
|
|
717
|
+
offset += 1;
|
|
718
|
+
}
|
|
719
|
+
if (readU8At(bytes, offset) === 1) {
|
|
720
|
+
offset = skipSignatures(bytes, offset + 1);
|
|
721
|
+
}
|
|
722
|
+
else {
|
|
723
|
+
offset += 1;
|
|
724
|
+
}
|
|
725
|
+
return offset;
|
|
726
|
+
};
|
|
485
727
|
let DataMessage = (() => {
|
|
486
728
|
let _classDecorators = [variant(DATA_VARIANT)];
|
|
487
729
|
let _classDescriptor;
|
|
@@ -509,11 +751,11 @@ let DataMessage = (() => {
|
|
|
509
751
|
}
|
|
510
752
|
_header = __runInitializers(this, __header_initializers, void 0);
|
|
511
753
|
_data = (__runInitializers(this, __header_extraInitializers), __runInitializers(this, __data_initializers, void 0));
|
|
754
|
+
_dataBytes = __runInitializers(this, __data_extraInitializers);
|
|
512
755
|
constructor(properties) {
|
|
513
756
|
super();
|
|
514
|
-
__runInitializers(this, __data_extraInitializers);
|
|
515
|
-
this._data = properties.data;
|
|
516
757
|
this._header = properties.header;
|
|
758
|
+
this.setDataSource(properties.data);
|
|
517
759
|
}
|
|
518
760
|
get id() {
|
|
519
761
|
return this._header.id;
|
|
@@ -522,18 +764,70 @@ let DataMessage = (() => {
|
|
|
522
764
|
return this._header;
|
|
523
765
|
}
|
|
524
766
|
get data() {
|
|
767
|
+
if (this._data == null && this._dataBytes instanceof Uint8ArrayList) {
|
|
768
|
+
this._data = this._dataBytes.subarray();
|
|
769
|
+
}
|
|
525
770
|
return this._data;
|
|
526
771
|
}
|
|
772
|
+
get dataByteLength() {
|
|
773
|
+
return this._dataBytes?.byteLength ?? this._data?.byteLength ?? 0;
|
|
774
|
+
}
|
|
775
|
+
get hasData() {
|
|
776
|
+
return this.dataByteLength > 0;
|
|
777
|
+
}
|
|
527
778
|
/** Manually ser/der for performance gains */
|
|
528
779
|
bytes() {
|
|
529
|
-
return
|
|
780
|
+
return this.serializeBytes({
|
|
781
|
+
includeMode: true,
|
|
782
|
+
includeSignatures: true,
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
getSignableBytes() {
|
|
786
|
+
return (this._cachedSignableBytes ??
|
|
787
|
+
(this._cachedSignableBytes = this.serializeBytes({
|
|
788
|
+
includeMode: false,
|
|
789
|
+
includeSignatures: false,
|
|
790
|
+
}).subarray()));
|
|
791
|
+
}
|
|
792
|
+
setDataSource(data) {
|
|
793
|
+
this._dataBytes = data;
|
|
794
|
+
this._data = data instanceof Uint8Array ? data : undefined;
|
|
795
|
+
this._cachedSignableBytes = undefined;
|
|
796
|
+
this._cachedPreparedSignableBytes = undefined;
|
|
797
|
+
}
|
|
798
|
+
serializeBytes(properties) {
|
|
799
|
+
const writer = new BinaryWriter();
|
|
800
|
+
writer.u8(DATA_VARIANT);
|
|
801
|
+
this._header.writeBytes(writer, properties);
|
|
802
|
+
const data = this._dataBytes ?? this._data;
|
|
803
|
+
if (data != null) {
|
|
804
|
+
writer.u8(1);
|
|
805
|
+
writer.u32(data.byteLength);
|
|
806
|
+
return new Uint8ArrayList(writer.finalize(), data);
|
|
807
|
+
}
|
|
808
|
+
else {
|
|
809
|
+
writer.u8(0);
|
|
810
|
+
}
|
|
811
|
+
return writer.finalize();
|
|
530
812
|
}
|
|
531
813
|
static from(bytes) {
|
|
532
|
-
|
|
533
|
-
|
|
814
|
+
const dataFlagOffset = getDataMessageDataFlagOffset(bytes);
|
|
815
|
+
const hasData = readU8At(bytes, dataFlagOffset) === 1;
|
|
816
|
+
const headerOnlyBytes = hasData
|
|
817
|
+
? (() => {
|
|
818
|
+
const prefix = bytes.subarray(0, dataFlagOffset);
|
|
819
|
+
const out = new Uint8Array(prefix.byteLength + 1);
|
|
820
|
+
out.set(prefix, 0);
|
|
821
|
+
out[prefix.byteLength] = 0;
|
|
822
|
+
return out;
|
|
823
|
+
})()
|
|
824
|
+
: bytes.subarray();
|
|
825
|
+
const ret = deserialize(headerOnlyBytes, DataMessage);
|
|
826
|
+
if (hasData) {
|
|
827
|
+
const dataLength = readU32LEAt(bytes, dataFlagOffset + 1);
|
|
828
|
+
const dataStart = dataFlagOffset + 5;
|
|
829
|
+
ret.setDataSource(bytes.sublist(dataStart, dataStart + dataLength));
|
|
534
830
|
}
|
|
535
|
-
const arr = bytes.subarray();
|
|
536
|
-
const ret = deserialize(arr, DataMessage);
|
|
537
831
|
return ret;
|
|
538
832
|
}
|
|
539
833
|
};
|
package/dist/src/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/stream-interface",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.2",
|
|
4
4
|
"description": "Block store streaming",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@dao-xyz/borsh": "^6.0.0",
|
|
72
72
|
"@libp2p/interface": "^3.1.0",
|
|
73
73
|
"uint8arraylist": "^2.4.8",
|
|
74
|
-
"@peerbit/crypto": "3.0.0
|
|
74
|
+
"@peerbit/crypto": "3.0.0"
|
|
75
75
|
},
|
|
76
76
|
"scripts": {
|
|
77
77
|
"clean": "aegir clean",
|
package/src/messages.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
BinaryWriter,
|
|
2
3
|
deserialize,
|
|
3
4
|
field,
|
|
4
5
|
fixedArray,
|
|
@@ -9,11 +10,13 @@ import {
|
|
|
9
10
|
} from "@dao-xyz/borsh";
|
|
10
11
|
import type { PeerId } from "@libp2p/interface";
|
|
11
12
|
import {
|
|
13
|
+
PreHash,
|
|
12
14
|
PublicSignKey,
|
|
13
15
|
SignatureWithKey,
|
|
16
|
+
prehashFn,
|
|
14
17
|
randomBytes,
|
|
15
18
|
toBase64,
|
|
16
|
-
|
|
19
|
+
verifyPrepared,
|
|
17
20
|
} from "@peerbit/crypto";
|
|
18
21
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
19
22
|
import { type PeerRefs, coercePeerRefsToHashes } from "./keys.js";
|
|
@@ -48,6 +51,35 @@ export const deliveryModeHasReceiver = (
|
|
|
48
51
|
|
|
49
52
|
export abstract class DeliveryMode {}
|
|
50
53
|
|
|
54
|
+
export const isAcknowledgedDeliveryMode = (
|
|
55
|
+
mode: DeliveryMode,
|
|
56
|
+
): mode is AcknowledgeDelivery | AcknowledgeAnyWhere =>
|
|
57
|
+
mode instanceof AcknowledgeDelivery || mode instanceof AcknowledgeAnyWhere;
|
|
58
|
+
|
|
59
|
+
export const getDeliveryHopTrace = (mode: DeliveryMode): string[] =>
|
|
60
|
+
isAcknowledgedDeliveryMode(mode) ? mode.hops : [];
|
|
61
|
+
|
|
62
|
+
export const hasDeliveryHop = (mode: DeliveryMode, hash: string) =>
|
|
63
|
+
isAcknowledgedDeliveryMode(mode) && mode.hops.includes(hash);
|
|
64
|
+
|
|
65
|
+
export const setDeliveryOriginHop = (mode: DeliveryMode, hash: string) => {
|
|
66
|
+
if (isAcknowledgedDeliveryMode(mode)) {
|
|
67
|
+
mode.hops = [hash];
|
|
68
|
+
}
|
|
69
|
+
return mode;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const appendDeliveryHop = (mode: DeliveryMode, hash: string) => {
|
|
73
|
+
if (!isAcknowledgedDeliveryMode(mode)) {
|
|
74
|
+
return mode;
|
|
75
|
+
}
|
|
76
|
+
if (mode.hops.includes(hash)) {
|
|
77
|
+
return mode;
|
|
78
|
+
}
|
|
79
|
+
mode.hops = [...mode.hops, hash];
|
|
80
|
+
return mode;
|
|
81
|
+
};
|
|
82
|
+
|
|
51
83
|
/**
|
|
52
84
|
* when you just want to deliver at paths, but does not expect acknowledgement
|
|
53
85
|
*/
|
|
@@ -77,7 +109,14 @@ export class AcknowledgeDelivery extends DeliveryMode {
|
|
|
77
109
|
@field({ type: "u8" })
|
|
78
110
|
redundancy: number;
|
|
79
111
|
|
|
80
|
-
|
|
112
|
+
@field({ type: vec("string") })
|
|
113
|
+
hops: string[];
|
|
114
|
+
|
|
115
|
+
constructor(properties: {
|
|
116
|
+
to: PeerRefs;
|
|
117
|
+
redundancy: number;
|
|
118
|
+
hops?: string[];
|
|
119
|
+
}) {
|
|
81
120
|
super();
|
|
82
121
|
const to = coercePeerRefsToHashes(properties.to);
|
|
83
122
|
if (to.length === 0) {
|
|
@@ -87,6 +126,7 @@ export class AcknowledgeDelivery extends DeliveryMode {
|
|
|
87
126
|
}
|
|
88
127
|
this.to = to;
|
|
89
128
|
this.redundancy = properties.redundancy;
|
|
129
|
+
this.hops = properties.hops ?? [];
|
|
90
130
|
}
|
|
91
131
|
}
|
|
92
132
|
|
|
@@ -101,9 +141,13 @@ export class AcknowledgeAnyWhere extends DeliveryMode {
|
|
|
101
141
|
@field({ type: "u8" })
|
|
102
142
|
redundancy: number;
|
|
103
143
|
|
|
104
|
-
|
|
144
|
+
@field({ type: vec("string") })
|
|
145
|
+
hops: string[];
|
|
146
|
+
|
|
147
|
+
constructor(properties: { redundancy: number; hops?: string[] }) {
|
|
105
148
|
super();
|
|
106
149
|
this.redundancy = properties.redundancy;
|
|
150
|
+
this.hops = properties.hops ?? [];
|
|
107
151
|
}
|
|
108
152
|
}
|
|
109
153
|
|
|
@@ -189,6 +233,9 @@ export type WithExtraSigners = {
|
|
|
189
233
|
) => Promise<SignatureWithKey> | SignatureWithKey)[];
|
|
190
234
|
};
|
|
191
235
|
|
|
236
|
+
// Control-path responses like ACKs should be able to cut through congested data lanes.
|
|
237
|
+
export const ACK_CONTROL_PRIORITY = 3;
|
|
238
|
+
|
|
192
239
|
const getDefaultPriorityFromMode = (mode: DeliveryMode) => {
|
|
193
240
|
if (mode instanceof SilentDelivery) {
|
|
194
241
|
return 0;
|
|
@@ -204,11 +251,21 @@ const getDefaultPriorityFromMode = (mode: DeliveryMode) => {
|
|
|
204
251
|
return 1;
|
|
205
252
|
}
|
|
206
253
|
if (mode instanceof TracedDelivery) {
|
|
207
|
-
return
|
|
254
|
+
return ACK_CONTROL_PRIORITY;
|
|
208
255
|
}
|
|
209
256
|
throw new Error("Unexpected mode: " + mode.constructor.name);
|
|
210
257
|
};
|
|
211
258
|
|
|
259
|
+
const getDefaultResponsePriorityFromMode = (mode: DeliveryMode) => {
|
|
260
|
+
if (
|
|
261
|
+
mode instanceof AcknowledgeAnyWhere ||
|
|
262
|
+
mode instanceof AcknowledgeDelivery
|
|
263
|
+
) {
|
|
264
|
+
return ACK_CONTROL_PRIORITY;
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
};
|
|
268
|
+
|
|
212
269
|
@variant(0)
|
|
213
270
|
export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
|
|
214
271
|
@field({ type: fixedArray("u8", ID_LENGTH) })
|
|
@@ -263,7 +320,10 @@ export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
|
|
|
263
320
|
properties.priority != null
|
|
264
321
|
? properties.priority
|
|
265
322
|
: getDefaultPriorityFromMode(this.mode);
|
|
266
|
-
this.responsePriority =
|
|
323
|
+
this.responsePriority =
|
|
324
|
+
properties.responsePriority != null
|
|
325
|
+
? properties.responsePriority
|
|
326
|
+
: getDefaultResponsePriorityFromMode(this.mode);
|
|
267
327
|
}
|
|
268
328
|
|
|
269
329
|
get id() {
|
|
@@ -274,6 +334,47 @@ export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
|
|
|
274
334
|
return this._origin;
|
|
275
335
|
}
|
|
276
336
|
|
|
337
|
+
writeBytes(
|
|
338
|
+
writer: BinaryWriter,
|
|
339
|
+
properties: { includeMode: boolean; includeSignatures: boolean },
|
|
340
|
+
) {
|
|
341
|
+
writer.u8(0);
|
|
342
|
+
BinaryWriter.uint8ArrayFixed(this._id, writer);
|
|
343
|
+
writer.u64(this.timestamp);
|
|
344
|
+
writer.u64(this.session);
|
|
345
|
+
writer.u64(this.expires);
|
|
346
|
+
if (this.priority != null) {
|
|
347
|
+
writer.u8(1);
|
|
348
|
+
writer.u32(this.priority);
|
|
349
|
+
} else {
|
|
350
|
+
writer.u8(0);
|
|
351
|
+
}
|
|
352
|
+
if (this.responsePriority != null) {
|
|
353
|
+
writer.u8(1);
|
|
354
|
+
writer.u32(this.responsePriority);
|
|
355
|
+
} else {
|
|
356
|
+
writer.u8(0);
|
|
357
|
+
}
|
|
358
|
+
if (this._origin != null) {
|
|
359
|
+
writer.u8(1);
|
|
360
|
+
serialize(this._origin, writer);
|
|
361
|
+
} else {
|
|
362
|
+
writer.u8(0);
|
|
363
|
+
}
|
|
364
|
+
if (properties.includeMode && this.mode != null) {
|
|
365
|
+
writer.u8(1);
|
|
366
|
+
serialize(this.mode, writer);
|
|
367
|
+
} else {
|
|
368
|
+
writer.u8(0);
|
|
369
|
+
}
|
|
370
|
+
if (properties.includeSignatures && this.signatures != null) {
|
|
371
|
+
writer.u8(1);
|
|
372
|
+
serialize(this.signatures, writer);
|
|
373
|
+
} else {
|
|
374
|
+
writer.u8(0);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
277
378
|
verify() {
|
|
278
379
|
return this.expires >= +new Date();
|
|
279
380
|
}
|
|
@@ -283,24 +384,29 @@ interface WithHeader {
|
|
|
283
384
|
header: MessageHeader;
|
|
284
385
|
}
|
|
285
386
|
|
|
286
|
-
const
|
|
287
|
-
obj: T,
|
|
288
|
-
signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey,
|
|
289
|
-
): Promise<T> => {
|
|
387
|
+
const serializeUnsigned = (obj: WithHeader): Uint8Array => {
|
|
290
388
|
const mode = obj.header.mode;
|
|
291
389
|
obj.header.mode = undefined as any;
|
|
292
390
|
const signatures = obj.header.signatures;
|
|
293
391
|
obj.header.signatures = undefined;
|
|
294
392
|
const bytes = serialize(obj);
|
|
295
|
-
// reassign properties if some other process expects them
|
|
296
393
|
obj.header.signatures = signatures;
|
|
297
394
|
obj.header.mode = mode;
|
|
395
|
+
return bytes;
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
const sign = async <T extends WithHeader>(
|
|
399
|
+
obj: T,
|
|
400
|
+
signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey,
|
|
401
|
+
): Promise<T> => {
|
|
402
|
+
const bytes =
|
|
403
|
+
obj instanceof Message ? obj.getSignableBytes() : serializeUnsigned(obj);
|
|
404
|
+
const signatures = obj.header.signatures;
|
|
298
405
|
|
|
299
406
|
const signature = await signer(bytes);
|
|
300
407
|
obj.header.signatures = new Signatures(
|
|
301
408
|
signatures ? [...signatures.signatures, signature] : [signature],
|
|
302
409
|
);
|
|
303
|
-
obj.header.mode = mode;
|
|
304
410
|
return obj;
|
|
305
411
|
};
|
|
306
412
|
|
|
@@ -312,15 +418,22 @@ const verifyMultiSig = async (
|
|
|
312
418
|
if (!signatures || signatures.signatures.length === 0) {
|
|
313
419
|
return !expectSignatures;
|
|
314
420
|
}
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
message.header.signatures = signatures;
|
|
421
|
+
const bytes =
|
|
422
|
+
message instanceof Message
|
|
423
|
+
? message.getSignableBytes()
|
|
424
|
+
: serializeUnsigned(message);
|
|
425
|
+
const preparedByPrehash = new Map<number, Uint8Array>();
|
|
321
426
|
|
|
322
427
|
for (const signature of signatures.signatures) {
|
|
323
|
-
|
|
428
|
+
let prepared = preparedByPrehash.get(signature.prehash);
|
|
429
|
+
if (!prepared) {
|
|
430
|
+
prepared =
|
|
431
|
+
signature.prehash === PreHash.NONE
|
|
432
|
+
? bytes
|
|
433
|
+
: await prehashFn(bytes, signature.prehash);
|
|
434
|
+
preparedByPrehash.set(signature.prehash, prepared);
|
|
435
|
+
}
|
|
436
|
+
if (!(await verifyPrepared(signature, prepared))) {
|
|
324
437
|
return false;
|
|
325
438
|
}
|
|
326
439
|
}
|
|
@@ -328,6 +441,9 @@ const verifyMultiSig = async (
|
|
|
328
441
|
};
|
|
329
442
|
|
|
330
443
|
export abstract class Message<T extends DeliveryMode = DeliveryMode> {
|
|
444
|
+
protected _cachedSignableBytes?: Uint8Array;
|
|
445
|
+
protected _cachedPreparedSignableBytes?: Map<number, Uint8Array>;
|
|
446
|
+
|
|
331
447
|
static from(bytes: Uint8ArrayList) {
|
|
332
448
|
if (bytes.get(0) === DATA_VARIANT) {
|
|
333
449
|
// Data
|
|
@@ -349,6 +465,30 @@ export abstract class Message<T extends DeliveryMode = DeliveryMode> {
|
|
|
349
465
|
): Promise<this> {
|
|
350
466
|
return sign(this, signer);
|
|
351
467
|
}
|
|
468
|
+
|
|
469
|
+
getSignableBytes(): Uint8Array {
|
|
470
|
+
return (
|
|
471
|
+
this._cachedSignableBytes ??
|
|
472
|
+
(this._cachedSignableBytes = serializeUnsigned(this))
|
|
473
|
+
);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
async getPreparedSignableBytes(prehash: PreHash): Promise<Uint8Array> {
|
|
477
|
+
if (prehash === PreHash.NONE) {
|
|
478
|
+
return this.getSignableBytes();
|
|
479
|
+
}
|
|
480
|
+
let prepared = this._cachedPreparedSignableBytes?.get(prehash);
|
|
481
|
+
if (prepared) {
|
|
482
|
+
return prepared;
|
|
483
|
+
}
|
|
484
|
+
prepared = await prehashFn(this.getSignableBytes(), prehash);
|
|
485
|
+
if (!this._cachedPreparedSignableBytes) {
|
|
486
|
+
this._cachedPreparedSignableBytes = new Map();
|
|
487
|
+
}
|
|
488
|
+
this._cachedPreparedSignableBytes.set(prehash, prepared);
|
|
489
|
+
return prepared;
|
|
490
|
+
}
|
|
491
|
+
|
|
352
492
|
abstract bytes(): Uint8ArrayList | Uint8Array;
|
|
353
493
|
/* abstract equals(other: Message): boolean; */
|
|
354
494
|
_verified: boolean;
|
|
@@ -365,6 +505,139 @@ export abstract class Message<T extends DeliveryMode = DeliveryMode> {
|
|
|
365
505
|
// I pack data with this message
|
|
366
506
|
const DATA_VARIANT = 0;
|
|
367
507
|
|
|
508
|
+
const readU8At = (bytes: Uint8ArrayList, offset: number) => bytes.get(offset);
|
|
509
|
+
|
|
510
|
+
const readU32LEAt = (bytes: Uint8ArrayList, offset: number) =>
|
|
511
|
+
bytes.getUint32(offset, true);
|
|
512
|
+
|
|
513
|
+
const skipBorshBytes = (bytes: Uint8ArrayList, offset: number) => {
|
|
514
|
+
const length = readU32LEAt(bytes, offset);
|
|
515
|
+
return offset + 4 + length;
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
const skipBorshString = (bytes: Uint8ArrayList, offset: number) =>
|
|
519
|
+
skipBorshBytes(bytes, offset);
|
|
520
|
+
|
|
521
|
+
const skipStringVec = (bytes: Uint8ArrayList, offset: number) => {
|
|
522
|
+
const length = readU32LEAt(bytes, offset);
|
|
523
|
+
offset += 4;
|
|
524
|
+
for (let i = 0; i < length; i++) {
|
|
525
|
+
offset = skipBorshString(bytes, offset);
|
|
526
|
+
}
|
|
527
|
+
return offset;
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
const skipPeerInfo = (bytes: Uint8ArrayList, offset: number) => {
|
|
531
|
+
const variant = readU8At(bytes, offset);
|
|
532
|
+
offset += 1;
|
|
533
|
+
if (variant === 0) {
|
|
534
|
+
return skipStringVec(bytes, offset);
|
|
535
|
+
}
|
|
536
|
+
throw new Error(`Unsupported peer info variant: ${variant}`);
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
const skipDeliveryMode = (bytes: Uint8ArrayList, offset: number) => {
|
|
540
|
+
const variant = readU8At(bytes, offset);
|
|
541
|
+
offset += 1;
|
|
542
|
+
if (variant === 0) {
|
|
543
|
+
offset = skipStringVec(bytes, offset);
|
|
544
|
+
return offset + 1;
|
|
545
|
+
}
|
|
546
|
+
if (variant === 1) {
|
|
547
|
+
offset = skipStringVec(bytes, offset);
|
|
548
|
+
offset += 1;
|
|
549
|
+
return skipStringVec(bytes, offset);
|
|
550
|
+
}
|
|
551
|
+
if (variant === 5) {
|
|
552
|
+
offset += 1;
|
|
553
|
+
return skipStringVec(bytes, offset);
|
|
554
|
+
}
|
|
555
|
+
if (variant === 3) {
|
|
556
|
+
return skipStringVec(bytes, offset);
|
|
557
|
+
}
|
|
558
|
+
if (variant === 4) {
|
|
559
|
+
return offset;
|
|
560
|
+
}
|
|
561
|
+
throw new Error(`Unsupported delivery mode variant: ${variant}`);
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
const skipPublicSignKey = (bytes: Uint8ArrayList, offset: number) => {
|
|
565
|
+
const variant = readU8At(bytes, offset);
|
|
566
|
+
offset += 1;
|
|
567
|
+
if (variant === 0) {
|
|
568
|
+
return offset + 32;
|
|
569
|
+
}
|
|
570
|
+
if (variant === 1) {
|
|
571
|
+
return offset + 33;
|
|
572
|
+
}
|
|
573
|
+
throw new Error(`Unsupported public sign key variant: ${variant}`);
|
|
574
|
+
};
|
|
575
|
+
|
|
576
|
+
const skipSignatureWithKey = (bytes: Uint8ArrayList, offset: number) => {
|
|
577
|
+
const variant = readU8At(bytes, offset);
|
|
578
|
+
if (variant !== 0) {
|
|
579
|
+
throw new Error(`Unsupported signature variant: ${variant}`);
|
|
580
|
+
}
|
|
581
|
+
offset += 1;
|
|
582
|
+
offset = skipBorshBytes(bytes, offset);
|
|
583
|
+
offset = skipPublicSignKey(bytes, offset);
|
|
584
|
+
return offset + 1;
|
|
585
|
+
};
|
|
586
|
+
|
|
587
|
+
const skipSignatures = (bytes: Uint8ArrayList, offset: number) => {
|
|
588
|
+
const variant = readU8At(bytes, offset);
|
|
589
|
+
if (variant !== 0) {
|
|
590
|
+
throw new Error(`Unsupported signatures variant: ${variant}`);
|
|
591
|
+
}
|
|
592
|
+
offset += 1;
|
|
593
|
+
const length = readU8At(bytes, offset);
|
|
594
|
+
offset += 1;
|
|
595
|
+
for (let i = 0; i < length; i++) {
|
|
596
|
+
offset = skipSignatureWithKey(bytes, offset);
|
|
597
|
+
}
|
|
598
|
+
return offset;
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
const getDataMessageDataFlagOffset = (bytes: Uint8ArrayList) => {
|
|
602
|
+
let offset = 0;
|
|
603
|
+
if (readU8At(bytes, offset) !== DATA_VARIANT) {
|
|
604
|
+
throw new Error("Unsupported");
|
|
605
|
+
}
|
|
606
|
+
offset += 1;
|
|
607
|
+
if (readU8At(bytes, offset) !== 0) {
|
|
608
|
+
throw new Error("Unsupported message header variant");
|
|
609
|
+
}
|
|
610
|
+
offset += 1;
|
|
611
|
+
offset += ID_LENGTH;
|
|
612
|
+
offset += 8 * 3;
|
|
613
|
+
if (readU8At(bytes, offset) === 1) {
|
|
614
|
+
offset += 5;
|
|
615
|
+
} else {
|
|
616
|
+
offset += 1;
|
|
617
|
+
}
|
|
618
|
+
if (readU8At(bytes, offset) === 1) {
|
|
619
|
+
offset += 5;
|
|
620
|
+
} else {
|
|
621
|
+
offset += 1;
|
|
622
|
+
}
|
|
623
|
+
if (readU8At(bytes, offset) === 1) {
|
|
624
|
+
offset = skipPeerInfo(bytes, offset + 1);
|
|
625
|
+
} else {
|
|
626
|
+
offset += 1;
|
|
627
|
+
}
|
|
628
|
+
if (readU8At(bytes, offset) === 1) {
|
|
629
|
+
offset = skipDeliveryMode(bytes, offset + 1);
|
|
630
|
+
} else {
|
|
631
|
+
offset += 1;
|
|
632
|
+
}
|
|
633
|
+
if (readU8At(bytes, offset) === 1) {
|
|
634
|
+
offset = skipSignatures(bytes, offset + 1);
|
|
635
|
+
} else {
|
|
636
|
+
offset += 1;
|
|
637
|
+
}
|
|
638
|
+
return offset;
|
|
639
|
+
};
|
|
640
|
+
|
|
368
641
|
@variant(DATA_VARIANT)
|
|
369
642
|
export class DataMessage<
|
|
370
643
|
T extends
|
|
@@ -383,10 +656,15 @@ export class DataMessage<
|
|
|
383
656
|
@field({ type: option(Uint8Array) })
|
|
384
657
|
private _data?: Uint8Array;
|
|
385
658
|
|
|
386
|
-
|
|
659
|
+
private _dataBytes?: Uint8Array | Uint8ArrayList;
|
|
660
|
+
|
|
661
|
+
constructor(properties: {
|
|
662
|
+
header: MessageHeader<T>;
|
|
663
|
+
data?: Uint8Array | Uint8ArrayList;
|
|
664
|
+
}) {
|
|
387
665
|
super();
|
|
388
|
-
this._data = properties.data;
|
|
389
666
|
this._header = properties.header;
|
|
667
|
+
this.setDataSource(properties.data);
|
|
390
668
|
}
|
|
391
669
|
|
|
392
670
|
get id(): Uint8Array {
|
|
@@ -398,20 +676,81 @@ export class DataMessage<
|
|
|
398
676
|
}
|
|
399
677
|
|
|
400
678
|
get data(): Uint8Array | undefined {
|
|
679
|
+
if (this._data == null && this._dataBytes instanceof Uint8ArrayList) {
|
|
680
|
+
this._data = this._dataBytes.subarray();
|
|
681
|
+
}
|
|
401
682
|
return this._data;
|
|
402
683
|
}
|
|
403
684
|
|
|
685
|
+
get dataByteLength(): number {
|
|
686
|
+
return this._dataBytes?.byteLength ?? this._data?.byteLength ?? 0;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
get hasData(): boolean {
|
|
690
|
+
return this.dataByteLength > 0;
|
|
691
|
+
}
|
|
692
|
+
|
|
404
693
|
/** Manually ser/der for performance gains */
|
|
405
694
|
bytes() {
|
|
406
|
-
return
|
|
695
|
+
return this.serializeBytes({
|
|
696
|
+
includeMode: true,
|
|
697
|
+
includeSignatures: true,
|
|
698
|
+
});
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
override getSignableBytes(): Uint8Array {
|
|
702
|
+
return (
|
|
703
|
+
this._cachedSignableBytes ??
|
|
704
|
+
(this._cachedSignableBytes = this.serializeBytes({
|
|
705
|
+
includeMode: false,
|
|
706
|
+
includeSignatures: false,
|
|
707
|
+
}).subarray())
|
|
708
|
+
);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
private setDataSource(data?: Uint8Array | Uint8ArrayList) {
|
|
712
|
+
this._dataBytes = data;
|
|
713
|
+
this._data = data instanceof Uint8Array ? data : undefined;
|
|
714
|
+
this._cachedSignableBytes = undefined;
|
|
715
|
+
this._cachedPreparedSignableBytes = undefined;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
private serializeBytes(properties: {
|
|
719
|
+
includeMode: boolean;
|
|
720
|
+
includeSignatures: boolean;
|
|
721
|
+
}) {
|
|
722
|
+
const writer = new BinaryWriter();
|
|
723
|
+
writer.u8(DATA_VARIANT);
|
|
724
|
+
this._header.writeBytes(writer, properties);
|
|
725
|
+
const data = this._dataBytes ?? this._data;
|
|
726
|
+
if (data != null) {
|
|
727
|
+
writer.u8(1);
|
|
728
|
+
writer.u32(data.byteLength);
|
|
729
|
+
return new Uint8ArrayList(writer.finalize(), data);
|
|
730
|
+
} else {
|
|
731
|
+
writer.u8(0);
|
|
732
|
+
}
|
|
733
|
+
return writer.finalize();
|
|
407
734
|
}
|
|
408
735
|
|
|
409
736
|
static from(bytes: Uint8ArrayList): DataMessage {
|
|
410
|
-
|
|
411
|
-
|
|
737
|
+
const dataFlagOffset = getDataMessageDataFlagOffset(bytes);
|
|
738
|
+
const hasData = readU8At(bytes, dataFlagOffset) === 1;
|
|
739
|
+
const headerOnlyBytes = hasData
|
|
740
|
+
? (() => {
|
|
741
|
+
const prefix = bytes.subarray(0, dataFlagOffset);
|
|
742
|
+
const out = new Uint8Array(prefix.byteLength + 1);
|
|
743
|
+
out.set(prefix, 0);
|
|
744
|
+
out[prefix.byteLength] = 0;
|
|
745
|
+
return out;
|
|
746
|
+
})()
|
|
747
|
+
: bytes.subarray();
|
|
748
|
+
const ret = deserialize(headerOnlyBytes, DataMessage);
|
|
749
|
+
if (hasData) {
|
|
750
|
+
const dataLength = readU32LEAt(bytes, dataFlagOffset + 1);
|
|
751
|
+
const dataStart = dataFlagOffset + 5;
|
|
752
|
+
ret.setDataSource(bytes.sublist(dataStart, dataStart + dataLength));
|
|
412
753
|
}
|
|
413
|
-
const arr = bytes.subarray();
|
|
414
|
-
const ret = deserialize(arr, DataMessage);
|
|
415
754
|
return ret;
|
|
416
755
|
}
|
|
417
756
|
}
|