@libp2p/floodsub 10.1.46 → 11.0.0-55b7e5fea

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.
@@ -0,0 +1,75 @@
1
+ import { peerIdFromPrivateKey } from '@libp2p/peer-id';
2
+ import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
3
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
4
+ import { toRpcMessage } from './utils.js';
5
+ export const SignPrefix = uint8ArrayFromString('libp2p-pubsub:');
6
+ /**
7
+ * Signs the provided message with the given `peerId`
8
+ */
9
+ export async function signMessage(privateKey, message, encode) {
10
+ // @ts-expect-error signature field is missing, added below
11
+ const outputMessage = {
12
+ type: 'signed',
13
+ topic: message.topic,
14
+ data: message.data,
15
+ sequenceNumber: message.sequenceNumber,
16
+ from: peerIdFromPrivateKey(privateKey)
17
+ };
18
+ // Get the message in bytes, and prepend with the pubsub prefix
19
+ const bytes = uint8ArrayConcat([
20
+ SignPrefix,
21
+ encode(toRpcMessage(outputMessage)).subarray()
22
+ ]);
23
+ outputMessage.signature = await privateKey.sign(bytes);
24
+ outputMessage.key = privateKey.publicKey;
25
+ return outputMessage;
26
+ }
27
+ /**
28
+ * Verifies the signature of the given message
29
+ */
30
+ export async function verifySignature(message, encode) {
31
+ if (message.type !== 'signed') {
32
+ throw new Error('Message type must be "signed" to be verified');
33
+ }
34
+ if (message.signature == null) {
35
+ throw new Error('Message must contain a signature to be verified');
36
+ }
37
+ if (message.from == null) {
38
+ throw new Error('Message must contain a from property to be verified');
39
+ }
40
+ // Get message sans the signature
41
+ const bytes = uint8ArrayConcat([
42
+ SignPrefix,
43
+ encode({
44
+ ...toRpcMessage(message),
45
+ signature: undefined,
46
+ key: undefined
47
+ }).subarray()
48
+ ]);
49
+ // Get the public key
50
+ const pubKey = messagePublicKey(message);
51
+ // verify the base message
52
+ return pubKey.verify(bytes, message.signature);
53
+ }
54
+ /**
55
+ * Returns the PublicKey associated with the given message.
56
+ * If no valid PublicKey can be retrieved an error will be returned.
57
+ */
58
+ export function messagePublicKey(message) {
59
+ if (message.type !== 'signed') {
60
+ throw new Error('Message type must be "signed" to have a public key');
61
+ }
62
+ // should be available in the from property of the message (peer id)
63
+ if (message.from == null) {
64
+ throw new Error('Could not get the public key from the originator id');
65
+ }
66
+ if (message.key != null) {
67
+ return message.key;
68
+ }
69
+ if (message.from.publicKey != null) {
70
+ return message.from.publicKey;
71
+ }
72
+ // We couldn't validate pubkey is from the originator, error
73
+ throw new Error('Could not get the public key from the originator id');
74
+ }
75
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/sign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { PubSubRPCMessage } from './floodsub.ts';
2
+ import type { Message } from './index.ts';
3
+ import type { PublicKey } from '@libp2p/interface';
4
+ /**
5
+ * Generate a random sequence number
6
+ */
7
+ export declare function randomSeqno(): bigint;
8
+ /**
9
+ * Generate a message id, based on the `key` and `seqno`
10
+ */
11
+ export declare const msgId: (key: PublicKey, seqno: bigint) => Uint8Array;
12
+ /**
13
+ * Generate a message id, based on message `data`
14
+ */
15
+ export declare const noSignMsgId: (data: Uint8Array) => Uint8Array | Promise<Uint8Array>;
16
+ /**
17
+ * Check if any member of the first set is also a member
18
+ * of the second set
19
+ */
20
+ export declare const anyMatch: (a: Set<number> | number[], b: Set<number> | number[]) => boolean;
21
+ /**
22
+ * Make everything an array
23
+ */
24
+ export declare const ensureArray: <T>(maybeArray: T | T[]) => T[];
25
+ export declare const toMessage: (message: PubSubRPCMessage) => Promise<Message>;
26
+ export declare const toRpcMessage: (message: Message) => PubSubRPCMessage;
27
+ export declare const bigIntToBytes: (num: bigint) => Uint8Array;
28
+ export declare const bigIntFromBytes: (num: Uint8Array) => bigint;
29
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD;;GAEG;AACH,wBAAgB,WAAW,IAAK,MAAM,CAErC;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,EAAE,OAAO,MAAM,KAAG,UASrD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UAAU,KAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAE7E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,KAAG,OAe/E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAa,CAAC,EAAG,YAAY,CAAC,GAAG,CAAC,EAAE,KAAG,CAAC,EAM/D,CAAA;AAsBD,eAAO,MAAM,SAAS,GAAU,SAAS,gBAAgB,KAAG,OAAO,CAAC,OAAO,CA+B1E,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,gBAiB/C,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,UAQ3C,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,KAAK,UAAU,KAAG,MAEjD,CAAA"}
@@ -0,0 +1,129 @@
1
+ import { randomBytes } from '@libp2p/crypto';
2
+ import { publicKeyFromProtobuf, publicKeyToProtobuf } from '@libp2p/crypto/keys';
3
+ import { InvalidMessageError } from '@libp2p/interface';
4
+ import { peerIdFromMultihash, peerIdFromPublicKey } from '@libp2p/peer-id';
5
+ import * as Digest from 'multiformats/hashes/digest';
6
+ import { sha256 } from 'multiformats/hashes/sha2';
7
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
8
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
9
+ /**
10
+ * Generate a random sequence number
11
+ */
12
+ export function randomSeqno() {
13
+ return BigInt(`0x${uint8ArrayToString(randomBytes(8), 'base16')}`);
14
+ }
15
+ /**
16
+ * Generate a message id, based on the `key` and `seqno`
17
+ */
18
+ export const msgId = (key, seqno) => {
19
+ const seqnoBytes = uint8ArrayFromString(seqno.toString(16).padStart(16, '0'), 'base16');
20
+ const keyBytes = publicKeyToProtobuf(key);
21
+ const msgId = new Uint8Array(keyBytes.byteLength + seqnoBytes.length);
22
+ msgId.set(keyBytes, 0);
23
+ msgId.set(seqnoBytes, keyBytes.byteLength);
24
+ return msgId;
25
+ };
26
+ /**
27
+ * Generate a message id, based on message `data`
28
+ */
29
+ export const noSignMsgId = (data) => {
30
+ return sha256.encode(data);
31
+ };
32
+ /**
33
+ * Check if any member of the first set is also a member
34
+ * of the second set
35
+ */
36
+ export const anyMatch = (a, b) => {
37
+ let bHas;
38
+ if (Array.isArray(b)) {
39
+ bHas = (val) => b.includes(val);
40
+ }
41
+ else {
42
+ bHas = (val) => b.has(val);
43
+ }
44
+ for (const val of a) {
45
+ if (bHas(val)) {
46
+ return true;
47
+ }
48
+ }
49
+ return false;
50
+ };
51
+ /**
52
+ * Make everything an array
53
+ */
54
+ export const ensureArray = function (maybeArray) {
55
+ if (!Array.isArray(maybeArray)) {
56
+ return [maybeArray];
57
+ }
58
+ return maybeArray;
59
+ };
60
+ const isSigned = async (message) => {
61
+ if ((message.sequenceNumber == null) || (message.from == null) || (message.signature == null)) {
62
+ return false;
63
+ }
64
+ // if a public key is present in the `from` field, the message should be signed
65
+ const fromID = peerIdFromMultihash(Digest.decode(message.from));
66
+ if (fromID.publicKey != null) {
67
+ return true;
68
+ }
69
+ if (message.key != null) {
70
+ const signingKey = message.key;
71
+ const signingID = peerIdFromPublicKey(publicKeyFromProtobuf(signingKey));
72
+ return signingID.equals(fromID);
73
+ }
74
+ return false;
75
+ };
76
+ export const toMessage = async (message) => {
77
+ if (message.from == null) {
78
+ throw new InvalidMessageError('RPC message was missing from');
79
+ }
80
+ if (!await isSigned(message)) {
81
+ return {
82
+ type: 'unsigned',
83
+ topic: message.topic ?? '',
84
+ data: message.data ?? new Uint8Array(0)
85
+ };
86
+ }
87
+ const from = peerIdFromMultihash(Digest.decode(message.from));
88
+ const key = message.key ?? from.publicKey;
89
+ if (key == null) {
90
+ throw new InvalidMessageError('RPC message was missing public key');
91
+ }
92
+ const msg = {
93
+ type: 'signed',
94
+ from,
95
+ topic: message.topic ?? '',
96
+ sequenceNumber: bigIntFromBytes(message.sequenceNumber ?? new Uint8Array(0)),
97
+ data: message.data ?? new Uint8Array(0),
98
+ signature: message.signature ?? new Uint8Array(0),
99
+ key: key instanceof Uint8Array ? publicKeyFromProtobuf(key) : key
100
+ };
101
+ return msg;
102
+ };
103
+ export const toRpcMessage = (message) => {
104
+ if (message.type === 'signed') {
105
+ return {
106
+ from: message.from.toMultihash().bytes,
107
+ data: message.data,
108
+ sequenceNumber: bigIntToBytes(message.sequenceNumber),
109
+ topic: message.topic,
110
+ signature: message.signature,
111
+ key: message.key ? publicKeyToProtobuf(message.key) : undefined
112
+ };
113
+ }
114
+ return {
115
+ data: message.data,
116
+ topic: message.topic
117
+ };
118
+ };
119
+ export const bigIntToBytes = (num) => {
120
+ let str = num.toString(16);
121
+ if (str.length % 2 !== 0) {
122
+ str = `0${str}`;
123
+ }
124
+ return uint8ArrayFromString(str, 'base16');
125
+ };
126
+ export const bigIntFromBytes = (num) => {
127
+ return BigInt(`0x${uint8ArrayToString(num, 'base16')}`);
128
+ };
129
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libp2p/floodsub",
3
- "version": "10.1.46",
3
+ "version": "11.0.0-55b7e5fea",
4
4
  "description": "libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network).",
5
5
  "license": "Apache-2.0 OR MIT",
6
- "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/pubsub-floodsub#readme",
6
+ "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/floodsub#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/libp2p/js-libp2p.git"
@@ -53,25 +53,34 @@
53
53
  "test:electron-main": "aegir test -t electron-main"
54
54
  },
55
55
  "dependencies": {
56
- "@libp2p/interface": "^2.11.0",
57
- "@libp2p/pubsub": "^10.1.18",
58
- "protons-runtime": "^5.5.0",
56
+ "@libp2p/crypto": "5.1.9-55b7e5fea",
57
+ "@libp2p/interface": "3.0.0-55b7e5fea",
58
+ "@libp2p/interface-internal": "3.0.0-55b7e5fea",
59
+ "@libp2p/peer-collections": "7.0.0-55b7e5fea",
60
+ "@libp2p/peer-id": "6.0.0-55b7e5fea",
61
+ "@libp2p/utils": "7.0.0-55b7e5fea",
62
+ "it-length-prefixed": "^10.0.1",
63
+ "it-pipe": "^3.0.1",
64
+ "it-pushable": "^3.2.3",
65
+ "main-event": "^1.0.1",
66
+ "multiformats": "^13.4.1",
67
+ "p-event": "^7.0.0",
68
+ "p-queue": "^8.1.1",
69
+ "protons-runtime": "^5.6.0",
59
70
  "uint8arraylist": "^2.4.8",
60
71
  "uint8arrays": "^5.1.0"
61
72
  },
62
73
  "devDependencies": {
63
- "@libp2p/crypto": "^5.1.8",
64
- "@libp2p/interface-compliance-tests": "^6.5.0",
65
- "@libp2p/logger": "^5.2.0",
66
- "@libp2p/peer-collections": "^6.0.35",
67
- "@libp2p/peer-id": "^5.1.9",
68
- "@multiformats/multiaddr": "^12.4.4",
74
+ "@libp2p/logger": "6.0.0-55b7e5fea",
75
+ "@multiformats/multiaddr": "^13.0.1",
69
76
  "@types/sinon": "^17.0.4",
70
- "aegir": "^47.0.14",
71
- "multiformats": "^13.3.6",
72
- "p-wait-for": "^5.0.2",
73
- "protons": "^7.6.1",
74
- "sinon": "^20.0.0"
77
+ "aegir": "^47.0.22",
78
+ "delay": "^6.0.0",
79
+ "it-all": "^3.0.9",
80
+ "p-wait-for": "^6.0.0",
81
+ "protons": "^7.7.0",
82
+ "sinon": "^21.0.0",
83
+ "sinon-ts": "^2.0.0"
75
84
  },
76
85
  "sideEffects": false
77
86
  }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * All Pubsub implementations must use this symbol as the name of a property
3
+ * with a boolean `true` value
4
+ */
5
+ export const pubSubSymbol = Symbol.for('@libp2p/pubsub')