@libp2p/pubsub 3.0.3 → 3.0.4
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/index.d.ts +11 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +20 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/peer-streams.d.ts +6 -5
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +3 -1
- package/dist/src/peer-streams.js.map +1 -1
- package/dist/src/sign.d.ts +10 -4
- package/dist/src/sign.d.ts.map +1 -1
- package/dist/src/sign.js +21 -11
- package/dist/src/sign.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +22 -8
- package/dist/src/utils.js.map +1 -1
- package/package.json +15 -10
- package/src/index.ts +35 -11
- package/src/peer-streams.ts +7 -5
- package/src/sign.ts +31 -18
- package/src/utils.ts +24 -8
package/dist/src/index.d.ts
CHANGED
@@ -6,6 +6,7 @@ import type { Connection } from '@libp2p/interface-connection';
|
|
6
6
|
import type { PubSub, Message, StrictNoSign, StrictSign, PubSubInit, PubSubEvents, PeerStreams, PubSubRPCMessage, PubSubRPC, PubSubRPCSubscription, PublishResult } from '@libp2p/interface-pubsub';
|
7
7
|
import { PeerMap, PeerSet } from '@libp2p/peer-collections';
|
8
8
|
import { Components, Initializable } from '@libp2p/components';
|
9
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
9
10
|
export interface TopicValidator {
|
10
11
|
(topic: string, message: Message): Promise<void>;
|
11
12
|
}
|
@@ -89,7 +90,7 @@ export declare abstract class PubSubBaseProtocol<Events = PubSubEvents> extends
|
|
89
90
|
/**
|
90
91
|
* Responsible for processing each RPC message received by other peers.
|
91
92
|
*/
|
92
|
-
processMessages(peerId: PeerId, stream: AsyncIterable<
|
93
|
+
processMessages(peerId: PeerId, stream: AsyncIterable<Uint8ArrayList>, peerStreams: PeerStreams): Promise<void>;
|
93
94
|
/**
|
94
95
|
* Handles an rpc request from a peer
|
95
96
|
*/
|
@@ -116,17 +117,17 @@ export declare abstract class PubSubBaseProtocol<Events = PubSubEvents> extends
|
|
116
117
|
* Decode Uint8Array into an RPC object.
|
117
118
|
* This can be override to use a custom router protobuf.
|
118
119
|
*/
|
119
|
-
abstract decodeRpc(bytes: Uint8Array): PubSubRPC;
|
120
|
+
abstract decodeRpc(bytes: Uint8Array | Uint8ArrayList): PubSubRPC;
|
120
121
|
/**
|
121
122
|
* Encode RPC object into a Uint8Array.
|
122
123
|
* This can be override to use a custom router protobuf.
|
123
124
|
*/
|
124
|
-
abstract encodeRpc(rpc: PubSubRPC):
|
125
|
+
abstract encodeRpc(rpc: PubSubRPC): Uint8ArrayList;
|
125
126
|
/**
|
126
127
|
* Encode RPC object into a Uint8Array.
|
127
128
|
* This can be override to use a custom router protobuf.
|
128
129
|
*/
|
129
|
-
abstract encodeMessage(rpc: PubSubRPCMessage):
|
130
|
+
abstract encodeMessage(rpc: PubSubRPCMessage): Uint8ArrayList;
|
130
131
|
/**
|
131
132
|
* Send an rpc object to a peer
|
132
133
|
*/
|
@@ -148,7 +149,12 @@ export declare abstract class PubSubBaseProtocol<Events = PubSubEvents> extends
|
|
148
149
|
* Normalizes the message and signs it, if signing is enabled.
|
149
150
|
* Should be used by the routers to create the message to send.
|
150
151
|
*/
|
151
|
-
buildMessage(message:
|
152
|
+
buildMessage(message: {
|
153
|
+
from: PeerId;
|
154
|
+
topic: string;
|
155
|
+
data: Uint8Array;
|
156
|
+
sequenceNumber: bigint;
|
157
|
+
}): Promise<Message>;
|
152
158
|
/**
|
153
159
|
* Get a list of the peer-ids that are subscribed to one topic.
|
154
160
|
*/
|
package/dist/src/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAGrE,OAAO,KAAK,MAAM,SAAS,CAAA;AAS3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAA0B,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC3N,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
@@ -6,7 +6,7 @@ import Queue from 'p-queue';
|
|
6
6
|
import { createTopology } from '@libp2p/topology';
|
7
7
|
import { codes } from './errors.js';
|
8
8
|
import { PeerStreams as PeerStreamsImpl } from './peer-streams.js';
|
9
|
-
import { toMessage, ensureArray,
|
9
|
+
import { toMessage, ensureArray, noSignMsgId, msgId, toRpcMessage, randomSeqno } from './utils.js';
|
10
10
|
import { signMessage, verifySignature } from './sign.js';
|
11
11
|
import { PeerMap, PeerSet } from '@libp2p/peer-collections';
|
12
12
|
import { Components } from '@libp2p/components';
|
@@ -324,6 +324,9 @@ export class PubSubBaseProtocol extends EventEmitter {
|
|
324
324
|
const signaturePolicy = this.globalSignaturePolicy;
|
325
325
|
switch (signaturePolicy) {
|
326
326
|
case 'StrictSign':
|
327
|
+
if (msg.type !== 'signed') {
|
328
|
+
throw errcode(new Error('Message type should be "signed" when signature policy is StrictSign but it was not'), codes.ERR_MISSING_SIGNATURE);
|
329
|
+
}
|
327
330
|
if (msg.sequenceNumber == null) {
|
328
331
|
throw errcode(new Error('Need seqno when signature policy is StrictSign but it was missing'), codes.ERR_MISSING_SEQNO);
|
329
332
|
}
|
@@ -373,22 +376,31 @@ export class PubSubBaseProtocol extends EventEmitter {
|
|
373
376
|
const signaturePolicy = this.globalSignaturePolicy;
|
374
377
|
switch (signaturePolicy) {
|
375
378
|
case 'StrictNoSign':
|
379
|
+
if (message.type !== 'unsigned') {
|
380
|
+
throw errcode(new Error('Message type should be "unsigned" when signature policy is StrictNoSign but it was not'), codes.ERR_MISSING_SIGNATURE);
|
381
|
+
}
|
382
|
+
// @ts-expect-error should not be present
|
376
383
|
if (message.signature != null) {
|
377
384
|
throw errcode(new Error('StrictNoSigning: signature should not be present'), codes.ERR_UNEXPECTED_SIGNATURE);
|
378
385
|
}
|
386
|
+
// @ts-expect-error should not be present
|
379
387
|
if (message.key != null) {
|
380
388
|
throw errcode(new Error('StrictNoSigning: key should not be present'), codes.ERR_UNEXPECTED_KEY);
|
381
389
|
}
|
390
|
+
// @ts-expect-error should not be present
|
382
391
|
if (message.sequenceNumber != null) {
|
383
392
|
throw errcode(new Error('StrictNoSigning: seqno should not be present'), codes.ERR_UNEXPECTED_SEQNO);
|
384
393
|
}
|
385
394
|
break;
|
386
395
|
case 'StrictSign':
|
396
|
+
if (message.type !== 'signed') {
|
397
|
+
throw errcode(new Error('Message type should be "signed" when signature policy is StrictSign but it was not'), codes.ERR_MISSING_SIGNATURE);
|
398
|
+
}
|
387
399
|
if (message.signature == null) {
|
388
400
|
throw errcode(new Error('StrictSigning: Signing required and no signature was present'), codes.ERR_MISSING_SIGNATURE);
|
389
401
|
}
|
390
402
|
if (message.sequenceNumber == null) {
|
391
|
-
throw errcode(new Error('StrictSigning: Signing required and no
|
403
|
+
throw errcode(new Error('StrictSigning: Signing required and no sequenceNumber was present'), codes.ERR_MISSING_SEQNO);
|
392
404
|
}
|
393
405
|
if (!(await verifySignature(message, this.encodeMessage.bind(this)))) {
|
394
406
|
throw errcode(new Error('StrictSigning: Invalid message signature'), codes.ERR_INVALID_SIGNATURE);
|
@@ -410,10 +422,12 @@ export class PubSubBaseProtocol extends EventEmitter {
|
|
410
422
|
const signaturePolicy = this.globalSignaturePolicy;
|
411
423
|
switch (signaturePolicy) {
|
412
424
|
case 'StrictSign':
|
413
|
-
message.sequenceNumber = randomSeqno();
|
414
425
|
return await signMessage(this.components.getPeerId(), message, this.encodeMessage.bind(this));
|
415
426
|
case 'StrictNoSign':
|
416
|
-
return await Promise.resolve(
|
427
|
+
return await Promise.resolve({
|
428
|
+
type: 'unsigned',
|
429
|
+
...message
|
430
|
+
});
|
417
431
|
default:
|
418
432
|
throw errcode(new Error('Cannot build message: unhandled signature policy'), codes.ERR_UNHANDLED_SIGNATURE_POLICY);
|
419
433
|
}
|
@@ -445,7 +459,8 @@ export class PubSubBaseProtocol extends EventEmitter {
|
|
445
459
|
const message = {
|
446
460
|
from: this.components.getPeerId(),
|
447
461
|
topic,
|
448
|
-
data: data ?? new Uint8Array(0)
|
462
|
+
data: data ?? new Uint8Array(0),
|
463
|
+
sequenceNumber: randomSeqno()
|
449
464
|
};
|
450
465
|
log('publish topic: %s from: %p data: %m', topic, message.from, message.data);
|
451
466
|
const rpcMessage = await this.buildMessage(message);
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -3,6 +3,7 @@ import type { PeerId } from '@libp2p/interface-peer-id';
|
|
3
3
|
import type { Stream } from '@libp2p/interface-connection';
|
4
4
|
import type { Pushable } from 'it-pushable';
|
5
5
|
import type { PeerStreamEvents } from '@libp2p/interface-pubsub';
|
6
|
+
import { Uint8ArrayList } from 'uint8arraylist';
|
6
7
|
export interface PeerStreamsInit {
|
7
8
|
id: PeerId;
|
8
9
|
protocol: string;
|
@@ -16,11 +17,11 @@ export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
|
16
17
|
/**
|
17
18
|
* Write stream - it's preferable to use the write method
|
18
19
|
*/
|
19
|
-
outboundStream?: Pushable<
|
20
|
+
outboundStream?: Pushable<Uint8ArrayList>;
|
20
21
|
/**
|
21
22
|
* Read stream
|
22
23
|
*/
|
23
|
-
inboundStream?: AsyncIterable<
|
24
|
+
inboundStream?: AsyncIterable<Uint8ArrayList>;
|
24
25
|
/**
|
25
26
|
* The raw outbound stream, as retrieved from conn.newStream
|
26
27
|
*/
|
@@ -47,15 +48,15 @@ export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
|
47
48
|
* Send a message to this peer.
|
48
49
|
* Throws if there is no `stream` to write to available.
|
49
50
|
*/
|
50
|
-
write(data: Uint8Array): void;
|
51
|
+
write(data: Uint8Array | Uint8ArrayList): void;
|
51
52
|
/**
|
52
53
|
* Attach a raw inbound stream and setup a read stream
|
53
54
|
*/
|
54
|
-
attachInboundStream(stream: Stream): AsyncIterable<
|
55
|
+
attachInboundStream(stream: Stream): AsyncIterable<Uint8ArrayList>;
|
55
56
|
/**
|
56
57
|
* Attach a raw outbound stream and setup a write stream
|
57
58
|
*/
|
58
|
-
attachOutboundStream(stream: Stream): Promise<Pushable<
|
59
|
+
attachOutboundStream(stream: Stream): Promise<Pushable<Uint8ArrayList>>;
|
59
60
|
/**
|
60
61
|
* Closes the open connection to peer
|
61
62
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAKrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;
|
1
|
+
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAKrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC7D,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC;;OAEG;IACI,cAAc,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;IAChD;;OAEG;IACI,aAAa,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACpD;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAAQ;IACnC;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAC,CAAQ;IAClC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,MAAM,CAAS;gBAEV,IAAI,EAAE,eAAe;IAUlC;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,UAAU,GAAG,cAAc;IASxC;;OAEG;IACH,mBAAmB,CAAE,MAAM,EAAE,MAAM;IAmBnC;;OAEG;IACG,oBAAoB,CAAE,MAAM,EAAE,MAAM;IAyC1C;;OAEG;IACH,KAAK;CAsBN"}
|
package/dist/src/peer-streams.js
CHANGED
@@ -4,6 +4,7 @@ import * as lp from 'it-length-prefixed';
|
|
4
4
|
import { pushable } from 'it-pushable';
|
5
5
|
import { pipe } from 'it-pipe';
|
6
6
|
import { abortableSource } from 'abortable-iterator';
|
7
|
+
import { Uint8ArrayList } from 'uint8arraylist';
|
7
8
|
const log = logger('libp2p-pubsub:peer-streams');
|
8
9
|
/**
|
9
10
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
@@ -37,7 +38,7 @@ export class PeerStreams extends EventEmitter {
|
|
37
38
|
const id = this.id.toString();
|
38
39
|
throw new Error('No writable connection to ' + id);
|
39
40
|
}
|
40
|
-
this.outboundStream.push(data);
|
41
|
+
this.outboundStream.push(data instanceof Uint8Array ? new Uint8ArrayList(data) : data);
|
41
42
|
}
|
42
43
|
/**
|
43
44
|
* Attach a raw inbound stream and setup a read stream
|
@@ -64,6 +65,7 @@ export class PeerStreams extends EventEmitter {
|
|
64
65
|
}
|
65
66
|
this._rawOutboundStream = stream;
|
66
67
|
this.outboundStream = pushable({
|
68
|
+
objectMode: true,
|
67
69
|
onEnd: (shouldEmit) => {
|
68
70
|
// close writable side of the stream
|
69
71
|
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;
|
1
|
+
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"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"}
|
package/dist/src/sign.d.ts
CHANGED
@@ -1,17 +1,23 @@
|
|
1
1
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
2
|
-
import type {
|
2
|
+
import type { PubSubRPCMessage, SignedMessage } from '@libp2p/interface-pubsub';
|
3
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
3
4
|
export declare const SignPrefix: Uint8Array;
|
4
5
|
/**
|
5
6
|
* Signs the provided message with the given `peerId`
|
6
7
|
*/
|
7
|
-
export declare function signMessage(peerId: PeerId, message:
|
8
|
+
export declare function signMessage(peerId: PeerId, message: {
|
9
|
+
from: PeerId;
|
10
|
+
topic: string;
|
11
|
+
data: Uint8Array;
|
12
|
+
sequenceNumber: bigint;
|
13
|
+
}, encode: (rpc: PubSubRPCMessage) => Uint8ArrayList): Promise<SignedMessage>;
|
8
14
|
/**
|
9
15
|
* Verifies the signature of the given message
|
10
16
|
*/
|
11
|
-
export declare function verifySignature(message:
|
17
|
+
export declare function verifySignature(message: SignedMessage, encode: (rpc: PubSubRPCMessage) => Uint8ArrayList): Promise<boolean>;
|
12
18
|
/**
|
13
19
|
* Returns the PublicKey associated with the given message.
|
14
20
|
* If no valid PublicKey can be retrieved an error will be returned.
|
15
21
|
*/
|
16
|
-
export declare function messagePublicKey(message:
|
22
|
+
export declare function messagePublicKey(message: SignedMessage): Promise<Uint8Array>;
|
17
23
|
//# sourceMappingURL=sign.d.ts.map
|
package/dist/src/sign.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/sign.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/sign.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,eAAO,MAAM,UAAU,YAAyC,CAAA;AAEhE;;GAEG;AACH,wBAAsB,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BhN;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,cAAc,oBA6B/G;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAE,OAAO,EAAE,aAAa,uBAwB7D"}
|
package/dist/src/sign.js
CHANGED
@@ -8,30 +8,37 @@ export const SignPrefix = uint8ArrayFromString('libp2p-pubsub:');
|
|
8
8
|
* Signs the provided message with the given `peerId`
|
9
9
|
*/
|
10
10
|
export async function signMessage(peerId, message, encode) {
|
11
|
-
// Get the message in bytes, and prepend with the pubsub prefix
|
12
|
-
const bytes = uint8ArrayConcat([
|
13
|
-
SignPrefix,
|
14
|
-
encode(toRpcMessage(message))
|
15
|
-
]);
|
16
11
|
if (peerId.privateKey == null) {
|
17
12
|
throw new Error('Cannot sign message, no private key present');
|
18
13
|
}
|
19
14
|
if (peerId.publicKey == null) {
|
20
15
|
throw new Error('Cannot sign message, no public key present');
|
21
16
|
}
|
22
|
-
|
23
|
-
const signature = await privateKey.sign(bytes);
|
17
|
+
// @ts-expect-error signature field is missing, added below
|
24
18
|
const outputMessage = {
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
type: 'signed',
|
20
|
+
topic: message.topic,
|
21
|
+
data: message.data,
|
22
|
+
sequenceNumber: message.sequenceNumber,
|
23
|
+
from: peerId
|
28
24
|
};
|
25
|
+
// Get the message in bytes, and prepend with the pubsub prefix
|
26
|
+
const bytes = uint8ArrayConcat([
|
27
|
+
SignPrefix,
|
28
|
+
encode(toRpcMessage(outputMessage)).subarray()
|
29
|
+
]);
|
30
|
+
const privateKey = await keys.unmarshalPrivateKey(peerId.privateKey);
|
31
|
+
outputMessage.signature = await privateKey.sign(bytes);
|
32
|
+
outputMessage.key = peerId.publicKey;
|
29
33
|
return outputMessage;
|
30
34
|
}
|
31
35
|
/**
|
32
36
|
* Verifies the signature of the given message
|
33
37
|
*/
|
34
38
|
export async function verifySignature(message, encode) {
|
39
|
+
if (message.type !== 'signed') {
|
40
|
+
throw new Error('Message type must be "signed" to be verified');
|
41
|
+
}
|
35
42
|
if (message.signature == null) {
|
36
43
|
throw new Error('Message must contain a signature to be verified');
|
37
44
|
}
|
@@ -45,7 +52,7 @@ export async function verifySignature(message, encode) {
|
|
45
52
|
...toRpcMessage(message),
|
46
53
|
signature: undefined,
|
47
54
|
key: undefined
|
48
|
-
})
|
55
|
+
}).subarray()
|
49
56
|
]);
|
50
57
|
// Get the public key
|
51
58
|
const pubKeyBytes = await messagePublicKey(message);
|
@@ -58,6 +65,9 @@ export async function verifySignature(message, encode) {
|
|
58
65
|
* If no valid PublicKey can be retrieved an error will be returned.
|
59
66
|
*/
|
60
67
|
export async function messagePublicKey(message) {
|
68
|
+
if (message.type !== 'signed') {
|
69
|
+
throw new Error('Message type must be "signed" to have a public key');
|
70
|
+
}
|
61
71
|
// should be available in the from property of the message (peer id)
|
62
72
|
if (message.from == null) {
|
63
73
|
throw new Error('Could not get the public key from the originator id');
|
package/dist/src/sign.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/sign.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAKzE;;GAEG;AACH,wBAAgB,WAAW,IAAK,MAAM,CAErC;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,QAAS,UAAU,SAAS,MAAM,eAQnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,SAAU,UAAU,2DAE3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,MAAO,IAAI,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,EAAE,YAe5E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,iCAMvB,CAAA;AAED,eAAO,MAAM,SAAS,YAAa,gBAAgB,KAAG,
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAKzE;;GAEG;AACH,wBAAgB,WAAW,IAAK,MAAM,CAErC;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,QAAS,UAAU,SAAS,MAAM,eAQnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,SAAU,UAAU,2DAE3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,MAAO,IAAI,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,EAAE,YAe5E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,iCAMvB,CAAA;AAED,eAAO,MAAM,SAAS,YAAa,gBAAgB,KAAG,OAsBrD,CAAA;AAED,eAAO,MAAM,YAAY,YAAa,OAAO,KAAG,gBAgB/C,CAAA;AAED,eAAO,MAAM,aAAa,QAAS,MAAM,KAAG,UAQ3C,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,UAAU,KAAG,MAEjD,CAAA"}
|
package/dist/src/utils.js
CHANGED
@@ -59,23 +59,37 @@ export const toMessage = (message) => {
|
|
59
59
|
if (message.from == null) {
|
60
60
|
throw errcode(new Error('RPC message was missing from'), codes.ERR_MISSING_FROM);
|
61
61
|
}
|
62
|
+
if (message.sequenceNumber == null || message.from == null || message.signature == null || message.key == null) {
|
63
|
+
return {
|
64
|
+
type: 'unsigned',
|
65
|
+
topic: message.topic ?? '',
|
66
|
+
data: message.data ?? new Uint8Array(0)
|
67
|
+
};
|
68
|
+
}
|
62
69
|
return {
|
70
|
+
type: 'signed',
|
63
71
|
from: peerIdFromBytes(message.from),
|
64
72
|
topic: message.topic ?? '',
|
65
|
-
sequenceNumber:
|
73
|
+
sequenceNumber: bigIntFromBytes(message.sequenceNumber),
|
66
74
|
data: message.data ?? new Uint8Array(0),
|
67
|
-
signature: message.signature
|
68
|
-
key: message.key
|
75
|
+
signature: message.signature,
|
76
|
+
key: message.key
|
69
77
|
};
|
70
78
|
};
|
71
79
|
export const toRpcMessage = (message) => {
|
80
|
+
if (message.type === 'signed') {
|
81
|
+
return {
|
82
|
+
from: message.from.multihash.bytes,
|
83
|
+
data: message.data,
|
84
|
+
sequenceNumber: bigIntToBytes(message.sequenceNumber),
|
85
|
+
topic: message.topic,
|
86
|
+
signature: message.signature,
|
87
|
+
key: message.key
|
88
|
+
};
|
89
|
+
}
|
72
90
|
return {
|
73
|
-
from: message.from.multihash.bytes,
|
74
91
|
data: message.data,
|
75
|
-
|
76
|
-
topic: message.topic,
|
77
|
-
signature: message.signature,
|
78
|
-
key: message.key
|
92
|
+
topic: message.topic
|
79
93
|
};
|
80
94
|
};
|
81
95
|
export const bigIntToBytes = (num) => {
|
package/dist/src/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,OAAO,MAAM,UAAU,CAAA;AAE9B;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAe,EAAE,KAAa,EAAE,EAAE;IACtD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEvF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACjB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEjC,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAyB,EAAE,CAAyB,EAAE,EAAE;IAC/E,IAAI,IAAI,CAAA;IACR,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACpB,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KACxC;SAAM;QACL,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KACnC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;YACb,OAAO,IAAI,CAAA;SACZ;KACF;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAc,UAAmB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC9B,OAAO,CAAC,UAAU,CAAC,CAAA;KACpB;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAyB,EAAW,EAAE;IAC9D,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;QACxB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;KACjF;IAED,OAAO
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/pubsub",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.4",
|
4
4
|
"description": "libp2p pubsub base class",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-pubsub#readme",
|
@@ -102,15 +102,15 @@
|
|
102
102
|
"release": "patch"
|
103
103
|
},
|
104
104
|
{
|
105
|
-
"type": "
|
105
|
+
"type": "docs",
|
106
106
|
"release": "patch"
|
107
107
|
},
|
108
108
|
{
|
109
|
-
"type": "
|
109
|
+
"type": "test",
|
110
110
|
"release": "patch"
|
111
111
|
},
|
112
112
|
{
|
113
|
-
"type": "
|
113
|
+
"type": "deps",
|
114
114
|
"release": "patch"
|
115
115
|
},
|
116
116
|
{
|
@@ -140,7 +140,11 @@
|
|
140
140
|
},
|
141
141
|
{
|
142
142
|
"type": "docs",
|
143
|
-
"section": "
|
143
|
+
"section": "Documentation"
|
144
|
+
},
|
145
|
+
{
|
146
|
+
"type": "deps",
|
147
|
+
"section": "Dependencies"
|
144
148
|
},
|
145
149
|
{
|
146
150
|
"type": "test",
|
@@ -176,7 +180,7 @@
|
|
176
180
|
"@libp2p/crypto": "^1.0.0",
|
177
181
|
"@libp2p/interface-connection": "^2.0.0",
|
178
182
|
"@libp2p/interface-peer-id": "^1.0.2",
|
179
|
-
"@libp2p/interface-pubsub": "^
|
183
|
+
"@libp2p/interface-pubsub": "^2.0.0",
|
180
184
|
"@libp2p/interface-registrar": "^2.0.0",
|
181
185
|
"@libp2p/interfaces": "^3.0.2",
|
182
186
|
"@libp2p/logger": "^2.0.0",
|
@@ -187,11 +191,12 @@
|
|
187
191
|
"abortable-iterator": "^4.0.2",
|
188
192
|
"err-code": "^3.0.1",
|
189
193
|
"iso-random-stream": "^2.0.0",
|
190
|
-
"it-length-prefixed": "^
|
194
|
+
"it-length-prefixed": "^8.0.2",
|
191
195
|
"it-pipe": "^2.0.3",
|
192
196
|
"it-pushable": "^3.0.0",
|
193
197
|
"multiformats": "^9.6.3",
|
194
198
|
"p-queue": "^7.2.0",
|
199
|
+
"uint8arraylist": "^2.0.0",
|
195
200
|
"uint8arrays": "^3.0.0"
|
196
201
|
},
|
197
202
|
"devDependencies": {
|
@@ -200,9 +205,9 @@
|
|
200
205
|
"delay": "^5.0.0",
|
201
206
|
"it-pair": "^2.0.2",
|
202
207
|
"p-defer": "^4.0.0",
|
203
|
-
"p-wait-for": "^
|
204
|
-
"protons": "^
|
205
|
-
"protons-runtime": "^
|
208
|
+
"p-wait-for": "^5.0.0",
|
209
|
+
"protons": "^4.0.1",
|
210
|
+
"protons-runtime": "^2.0.2",
|
206
211
|
"sinon": "^14.0.0",
|
207
212
|
"util": "^0.12.4"
|
208
213
|
}
|
package/src/index.ts
CHANGED
@@ -6,7 +6,7 @@ import Queue from 'p-queue'
|
|
6
6
|
import { createTopology } from '@libp2p/topology'
|
7
7
|
import { codes } from './errors.js'
|
8
8
|
import { PeerStreams as PeerStreamsImpl } from './peer-streams.js'
|
9
|
-
import { toMessage, ensureArray,
|
9
|
+
import { toMessage, ensureArray, noSignMsgId, msgId, toRpcMessage, randomSeqno } from './utils.js'
|
10
10
|
import {
|
11
11
|
signMessage,
|
12
12
|
verifySignature
|
@@ -17,6 +17,7 @@ import type { Connection } from '@libp2p/interface-connection'
|
|
17
17
|
import type { PubSub, Message, StrictNoSign, StrictSign, PubSubInit, PubSubEvents, PeerStreams, PubSubRPCMessage, PubSubRPC, PubSubRPCSubscription, SubscriptionChangeData, PublishResult } from '@libp2p/interface-pubsub'
|
18
18
|
import { PeerMap, PeerSet } from '@libp2p/peer-collections'
|
19
19
|
import { Components, Initializable } from '@libp2p/components'
|
20
|
+
import type { Uint8ArrayList } from 'uint8arraylist'
|
20
21
|
|
21
22
|
const log = logger('libp2p:pubsub')
|
22
23
|
|
@@ -284,7 +285,7 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
284
285
|
/**
|
285
286
|
* Responsible for processing each RPC message received by other peers.
|
286
287
|
*/
|
287
|
-
async processMessages (peerId: PeerId, stream: AsyncIterable<
|
288
|
+
async processMessages (peerId: PeerId, stream: AsyncIterable<Uint8ArrayList>, peerStreams: PeerStreams) {
|
288
289
|
try {
|
289
290
|
await pipe(
|
290
291
|
stream,
|
@@ -446,6 +447,10 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
446
447
|
const signaturePolicy = this.globalSignaturePolicy
|
447
448
|
switch (signaturePolicy) {
|
448
449
|
case 'StrictSign':
|
450
|
+
if (msg.type !== 'signed') {
|
451
|
+
throw errcode(new Error('Message type should be "signed" when signature policy is StrictSign but it was not'), codes.ERR_MISSING_SIGNATURE)
|
452
|
+
}
|
453
|
+
|
449
454
|
if (msg.sequenceNumber == null) {
|
450
455
|
throw errcode(new Error('Need seqno when signature policy is StrictSign but it was missing'), codes.ERR_MISSING_SEQNO)
|
451
456
|
}
|
@@ -474,19 +479,19 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
474
479
|
* Decode Uint8Array into an RPC object.
|
475
480
|
* This can be override to use a custom router protobuf.
|
476
481
|
*/
|
477
|
-
abstract decodeRpc (bytes: Uint8Array): PubSubRPC
|
482
|
+
abstract decodeRpc (bytes: Uint8Array | Uint8ArrayList): PubSubRPC
|
478
483
|
|
479
484
|
/**
|
480
485
|
* Encode RPC object into a Uint8Array.
|
481
486
|
* This can be override to use a custom router protobuf.
|
482
487
|
*/
|
483
|
-
abstract encodeRpc (rpc: PubSubRPC):
|
488
|
+
abstract encodeRpc (rpc: PubSubRPC): Uint8ArrayList
|
484
489
|
|
485
490
|
/**
|
486
491
|
* Encode RPC object into a Uint8Array.
|
487
492
|
* This can be override to use a custom router protobuf.
|
488
493
|
*/
|
489
|
-
abstract encodeMessage (rpc: PubSubRPCMessage):
|
494
|
+
abstract encodeMessage (rpc: PubSubRPCMessage): Uint8ArrayList
|
490
495
|
|
491
496
|
/**
|
492
497
|
* Send an rpc object to a peer
|
@@ -523,26 +528,42 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
523
528
|
const signaturePolicy = this.globalSignaturePolicy
|
524
529
|
switch (signaturePolicy) {
|
525
530
|
case 'StrictNoSign':
|
531
|
+
if (message.type !== 'unsigned') {
|
532
|
+
throw errcode(new Error('Message type should be "unsigned" when signature policy is StrictNoSign but it was not'), codes.ERR_MISSING_SIGNATURE)
|
533
|
+
}
|
534
|
+
|
535
|
+
// @ts-expect-error should not be present
|
526
536
|
if (message.signature != null) {
|
527
537
|
throw errcode(new Error('StrictNoSigning: signature should not be present'), codes.ERR_UNEXPECTED_SIGNATURE)
|
528
538
|
}
|
539
|
+
|
540
|
+
// @ts-expect-error should not be present
|
529
541
|
if (message.key != null) {
|
530
542
|
throw errcode(new Error('StrictNoSigning: key should not be present'), codes.ERR_UNEXPECTED_KEY)
|
531
543
|
}
|
544
|
+
|
545
|
+
// @ts-expect-error should not be present
|
532
546
|
if (message.sequenceNumber != null) {
|
533
547
|
throw errcode(new Error('StrictNoSigning: seqno should not be present'), codes.ERR_UNEXPECTED_SEQNO)
|
534
548
|
}
|
535
549
|
break
|
536
550
|
case 'StrictSign':
|
551
|
+
if (message.type !== 'signed') {
|
552
|
+
throw errcode(new Error('Message type should be "signed" when signature policy is StrictSign but it was not'), codes.ERR_MISSING_SIGNATURE)
|
553
|
+
}
|
554
|
+
|
537
555
|
if (message.signature == null) {
|
538
556
|
throw errcode(new Error('StrictSigning: Signing required and no signature was present'), codes.ERR_MISSING_SIGNATURE)
|
539
557
|
}
|
558
|
+
|
540
559
|
if (message.sequenceNumber == null) {
|
541
|
-
throw errcode(new Error('StrictSigning: Signing required and no
|
560
|
+
throw errcode(new Error('StrictSigning: Signing required and no sequenceNumber was present'), codes.ERR_MISSING_SEQNO)
|
542
561
|
}
|
562
|
+
|
543
563
|
if (!(await verifySignature(message, this.encodeMessage.bind(this)))) {
|
544
564
|
throw errcode(new Error('StrictSigning: Invalid message signature'), codes.ERR_INVALID_SIGNATURE)
|
545
565
|
}
|
566
|
+
|
546
567
|
break
|
547
568
|
default:
|
548
569
|
throw errcode(new Error('Cannot validate message: unhandled signature policy'), codes.ERR_UNHANDLED_SIGNATURE_POLICY)
|
@@ -559,14 +580,16 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
559
580
|
* Normalizes the message and signs it, if signing is enabled.
|
560
581
|
* Should be used by the routers to create the message to send.
|
561
582
|
*/
|
562
|
-
async buildMessage (message:
|
583
|
+
async buildMessage (message: { from: PeerId, topic: string, data: Uint8Array, sequenceNumber: bigint }): Promise<Message> {
|
563
584
|
const signaturePolicy = this.globalSignaturePolicy
|
564
585
|
switch (signaturePolicy) {
|
565
586
|
case 'StrictSign':
|
566
|
-
message.sequenceNumber = randomSeqno()
|
567
587
|
return await signMessage(this.components.getPeerId(), message, this.encodeMessage.bind(this))
|
568
588
|
case 'StrictNoSign':
|
569
|
-
return await Promise.resolve(
|
589
|
+
return await Promise.resolve({
|
590
|
+
type: 'unsigned',
|
591
|
+
...message
|
592
|
+
})
|
570
593
|
default:
|
571
594
|
throw errcode(new Error('Cannot build message: unhandled signature policy'), codes.ERR_UNHANDLED_SIGNATURE_POLICY)
|
572
595
|
}
|
@@ -603,10 +626,11 @@ export abstract class PubSubBaseProtocol<Events = PubSubEvents> extends EventEmi
|
|
603
626
|
throw new Error('Pubsub has not started')
|
604
627
|
}
|
605
628
|
|
606
|
-
const message
|
629
|
+
const message = {
|
607
630
|
from: this.components.getPeerId(),
|
608
631
|
topic,
|
609
|
-
data: data ?? new Uint8Array(0)
|
632
|
+
data: data ?? new Uint8Array(0),
|
633
|
+
sequenceNumber: randomSeqno()
|
610
634
|
}
|
611
635
|
|
612
636
|
log('publish topic: %s from: %p data: %m', topic, message.from, message.data)
|
package/src/peer-streams.ts
CHANGED
@@ -8,6 +8,7 @@ import type { PeerId } from '@libp2p/interface-peer-id'
|
|
8
8
|
import type { Stream } from '@libp2p/interface-connection'
|
9
9
|
import type { Pushable } from 'it-pushable'
|
10
10
|
import type { PeerStreamEvents } from '@libp2p/interface-pubsub'
|
11
|
+
import { Uint8ArrayList } from 'uint8arraylist'
|
11
12
|
|
12
13
|
const log = logger('libp2p-pubsub:peer-streams')
|
13
14
|
|
@@ -25,11 +26,11 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
|
25
26
|
/**
|
26
27
|
* Write stream - it's preferable to use the write method
|
27
28
|
*/
|
28
|
-
public outboundStream?: Pushable<
|
29
|
+
public outboundStream?: Pushable<Uint8ArrayList>
|
29
30
|
/**
|
30
31
|
* Read stream
|
31
32
|
*/
|
32
|
-
public inboundStream?: AsyncIterable<
|
33
|
+
public inboundStream?: AsyncIterable<Uint8ArrayList>
|
33
34
|
/**
|
34
35
|
* The raw outbound stream, as retrieved from conn.newStream
|
35
36
|
*/
|
@@ -72,13 +73,13 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
|
72
73
|
* Send a message to this peer.
|
73
74
|
* Throws if there is no `stream` to write to available.
|
74
75
|
*/
|
75
|
-
write (data: Uint8Array) {
|
76
|
+
write (data: Uint8Array | Uint8ArrayList) {
|
76
77
|
if (this.outboundStream == null) {
|
77
78
|
const id = this.id.toString()
|
78
79
|
throw new Error('No writable connection to ' + id)
|
79
80
|
}
|
80
81
|
|
81
|
-
this.outboundStream.push(data)
|
82
|
+
this.outboundStream.push(data instanceof Uint8Array ? new Uint8ArrayList(data) : data)
|
82
83
|
}
|
83
84
|
|
84
85
|
/**
|
@@ -115,7 +116,8 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
|
115
116
|
}
|
116
117
|
|
117
118
|
this._rawOutboundStream = stream
|
118
|
-
this.outboundStream = pushable({
|
119
|
+
this.outboundStream = pushable<Uint8ArrayList>({
|
120
|
+
objectMode: true,
|
119
121
|
onEnd: (shouldEmit) => {
|
120
122
|
// close writable side of the stream
|
121
123
|
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
package/src/sign.ts
CHANGED
@@ -3,21 +3,16 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
3
3
|
import { toRpcMessage } from './utils.js'
|
4
4
|
import type { PeerId } from '@libp2p/interface-peer-id'
|
5
5
|
import { keys } from '@libp2p/crypto'
|
6
|
-
import type {
|
6
|
+
import type { PubSubRPCMessage, SignedMessage } from '@libp2p/interface-pubsub'
|
7
7
|
import { peerIdFromKeys } from '@libp2p/peer-id'
|
8
|
+
import type { Uint8ArrayList } from 'uint8arraylist'
|
8
9
|
|
9
10
|
export const SignPrefix = uint8ArrayFromString('libp2p-pubsub:')
|
10
11
|
|
11
12
|
/**
|
12
13
|
* Signs the provided message with the given `peerId`
|
13
14
|
*/
|
14
|
-
export async function signMessage (peerId: PeerId, message:
|
15
|
-
// Get the message in bytes, and prepend with the pubsub prefix
|
16
|
-
const bytes = uint8ArrayConcat([
|
17
|
-
SignPrefix,
|
18
|
-
encode(toRpcMessage(message))
|
19
|
-
])
|
20
|
-
|
15
|
+
export async function signMessage (peerId: PeerId, message: { from: PeerId, topic: string, data: Uint8Array, sequenceNumber: bigint }, encode: (rpc: PubSubRPCMessage) => Uint8ArrayList): Promise<SignedMessage> {
|
21
16
|
if (peerId.privateKey == null) {
|
22
17
|
throw new Error('Cannot sign message, no private key present')
|
23
18
|
}
|
@@ -26,22 +21,36 @@ export async function signMessage (peerId: PeerId, message: Message, encode: (rp
|
|
26
21
|
throw new Error('Cannot sign message, no public key present')
|
27
22
|
}
|
28
23
|
|
29
|
-
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
24
|
+
// @ts-expect-error signature field is missing, added below
|
25
|
+
const outputMessage: SignedMessage = {
|
26
|
+
type: 'signed',
|
27
|
+
topic: message.topic,
|
28
|
+
data: message.data,
|
29
|
+
sequenceNumber: message.sequenceNumber,
|
30
|
+
from: peerId
|
36
31
|
}
|
37
32
|
|
33
|
+
// Get the message in bytes, and prepend with the pubsub prefix
|
34
|
+
const bytes = uint8ArrayConcat([
|
35
|
+
SignPrefix,
|
36
|
+
encode(toRpcMessage(outputMessage)).subarray()
|
37
|
+
])
|
38
|
+
|
39
|
+
const privateKey = await keys.unmarshalPrivateKey(peerId.privateKey)
|
40
|
+
outputMessage.signature = await privateKey.sign(bytes)
|
41
|
+
outputMessage.key = peerId.publicKey
|
42
|
+
|
38
43
|
return outputMessage
|
39
44
|
}
|
40
45
|
|
41
46
|
/**
|
42
47
|
* Verifies the signature of the given message
|
43
48
|
*/
|
44
|
-
export async function verifySignature (message:
|
49
|
+
export async function verifySignature (message: SignedMessage, encode: (rpc: PubSubRPCMessage) => Uint8ArrayList) {
|
50
|
+
if (message.type !== 'signed') {
|
51
|
+
throw new Error('Message type must be "signed" to be verified')
|
52
|
+
}
|
53
|
+
|
45
54
|
if (message.signature == null) {
|
46
55
|
throw new Error('Message must contain a signature to be verified')
|
47
56
|
}
|
@@ -57,7 +66,7 @@ export async function verifySignature (message: Message, encode: (rpc: PubSubRPC
|
|
57
66
|
...toRpcMessage(message),
|
58
67
|
signature: undefined,
|
59
68
|
key: undefined
|
60
|
-
})
|
69
|
+
}).subarray()
|
61
70
|
])
|
62
71
|
|
63
72
|
// Get the public key
|
@@ -72,7 +81,11 @@ export async function verifySignature (message: Message, encode: (rpc: PubSubRPC
|
|
72
81
|
* Returns the PublicKey associated with the given message.
|
73
82
|
* If no valid PublicKey can be retrieved an error will be returned.
|
74
83
|
*/
|
75
|
-
export async function messagePublicKey (message:
|
84
|
+
export async function messagePublicKey (message: SignedMessage) {
|
85
|
+
if (message.type !== 'signed') {
|
86
|
+
throw new Error('Message type must be "signed" to have a public key')
|
87
|
+
}
|
88
|
+
|
76
89
|
// should be available in the from property of the message (peer id)
|
77
90
|
if (message.from == null) {
|
78
91
|
throw new Error('Could not get the public key from the originator id')
|
package/src/utils.ts
CHANGED
@@ -71,24 +71,40 @@ export const toMessage = (message: PubSubRPCMessage): Message => {
|
|
71
71
|
throw errcode(new Error('RPC message was missing from'), codes.ERR_MISSING_FROM)
|
72
72
|
}
|
73
73
|
|
74
|
+
if (message.sequenceNumber == null || message.from == null || message.signature == null || message.key == null) {
|
75
|
+
return {
|
76
|
+
type: 'unsigned',
|
77
|
+
topic: message.topic ?? '',
|
78
|
+
data: message.data ?? new Uint8Array(0)
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
74
82
|
return {
|
83
|
+
type: 'signed',
|
75
84
|
from: peerIdFromBytes(message.from),
|
76
85
|
topic: message.topic ?? '',
|
77
|
-
sequenceNumber:
|
86
|
+
sequenceNumber: bigIntFromBytes(message.sequenceNumber),
|
78
87
|
data: message.data ?? new Uint8Array(0),
|
79
|
-
signature: message.signature
|
80
|
-
key: message.key
|
88
|
+
signature: message.signature,
|
89
|
+
key: message.key
|
81
90
|
}
|
82
91
|
}
|
83
92
|
|
84
93
|
export const toRpcMessage = (message: Message): PubSubRPCMessage => {
|
94
|
+
if (message.type === 'signed') {
|
95
|
+
return {
|
96
|
+
from: message.from.multihash.bytes,
|
97
|
+
data: message.data,
|
98
|
+
sequenceNumber: bigIntToBytes(message.sequenceNumber),
|
99
|
+
topic: message.topic,
|
100
|
+
signature: message.signature,
|
101
|
+
key: message.key
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
85
105
|
return {
|
86
|
-
from: message.from.multihash.bytes,
|
87
106
|
data: message.data,
|
88
|
-
|
89
|
-
topic: message.topic,
|
90
|
-
signature: message.signature,
|
91
|
-
key: message.key
|
107
|
+
topic: message.topic
|
92
108
|
}
|
93
109
|
}
|
94
110
|
|