@waku/message-encryption 0.0.8 → 0.0.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../src/symmetric.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../src/symmetric.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as secp from "@noble/secp256k1";
2
- import { concat, hexToBytes } from "@waku/byte-utils";
2
+ import { concat, hexToBytes } from "@waku/utils/bytes";
3
3
  import { Symmetric } from "./constants.js";
4
4
  import * as ecies from "./crypto/ecies.js";
5
5
  import { keccak256, randomBytes, sign } from "./crypto/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"waku_payload.js","sourceRoot":"","sources":["../src/waku_payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAInD,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO;AAC3B,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO;AAC/B,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,SAAS,yBAAyB,CAAC,OAAmB;IACpD,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAChD,CAAC;AAED,SAAS,cAAc,CACrB,OAAmB,EACnB,sBAA8B;IAE9B,IAAI,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC;IACpE,oBAAoB;IACpB,IAAI,sBAAsB,GAAG,CAAC,EAAE;QAC9B,kDAAkD;QAClD,gBAAgB,GAAG,MAAM,CACvB,CAAC,gBAAgB,EAAE,IAAI,UAAU,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAC9D,CAAC,CACF,CAAC;KACH;IACD,MAAM,mBAAmB,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,OAAmB;IAC1C,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,YAAY,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAgB,EAChB,SAA8B;IAE9B,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAmB,EACnB,OAAmB;IAEnB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAgB,EAChB,GAAwB;IAExB,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;IAElC,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAmB,EACnB,GAAwB;IAExB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAe,EAAE,OAAmB;IAC/D,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClC,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,6BAA6B,CAAC,OAAmB;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE;QAC/C,CAAC,EAAE,CAAC;KACL;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAiB,EACjB,YAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE;QACjC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB;IACvC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,OAAO,CAAC,OAAmB,EAAE,QAAiB;IACrD,IAAI,QAAQ,EAAE;QACZ,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;KACtE;IACD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CACtB,WAAuB,EACvB,SAAqB;IAErB,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtE,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,cAA0B,EAC1B,UAAuB;IAEvB,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;IAC/C,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzD,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE9C,qBAAqB;IACrB,IAAI,OAAO,GACT,WAAW;QACX,6BAA6B,CAAC,cAAc,CAAC;QAC7C,cAAc,CAAC,MAAM,CAAC;IAExB,IAAI,UAAU,EAAE;QACd,OAAO,IAAI,eAAe,CAAC;KAC5B;IAED,MAAM,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;IAC1C,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAC9C,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,WAAW,CAAC,CAAC;KAC7E;IAED,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE;QACd,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;KAC/C;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,OAAmB;IAEnB,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,sBAAsB,KAAK,CAAC;QAAE,OAAO;IAEzC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,CAAC,GAAG,sBAAsB,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IAExE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,GAAG,CAAC;IACR,IAAI,QAAQ,EAAE;QACZ,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,GAAG,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;KAChC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"waku_payload.js","sourceRoot":"","sources":["../src/waku_payload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waku/message-encryption",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "Waku Message Payload Encryption",
5
5
  "types": "./dist/index.d.ts",
6
6
  "module": "./dist/index.js",
@@ -54,9 +54,9 @@
54
54
  "build:bundle": "rollup --config rollup.config.js",
55
55
  "fix": "run-s fix:*",
56
56
  "fix:prettier": "prettier . --write",
57
- "fix:lint": "eslint src --ext .ts --ext .cjs --fix",
57
+ "fix:lint": "eslint src *.js --fix",
58
58
  "check": "run-s check:*",
59
- "check:lint": "eslint src --ext .ts",
59
+ "check:lint": "eslint src *.js",
60
60
  "check:prettier": "prettier . --list-different",
61
61
  "check:spelling": "cspell \"{README.md,src/**/*.ts}\"",
62
62
  "check:tsc": "tsc -p tsconfig.dev.json",
@@ -73,34 +73,50 @@
73
73
  "crypto": false
74
74
  },
75
75
  "dependencies": {
76
- "@noble/secp256k1": "^1.3.4",
77
- "@waku/byte-utils": "*",
78
- "@waku/core": "*",
79
- "@waku/interfaces": "*",
80
- "@waku/proto": "*",
81
- "js-sha3": "^0.8.0",
82
- "chai": "^4.3.6",
76
+ "@noble/secp256k1": "^1.7.1",
77
+ "@waku/core": "0.0.11",
78
+ "@waku/interfaces": "0.0.8",
79
+ "@waku/proto": "0.0.3",
80
+ "@waku/utils": "0.0.2",
83
81
  "debug": "^4.3.4",
84
- "fast-check": "^2.14.0"
82
+ "js-sha3": "^0.8.0"
85
83
  },
86
84
  "devDependencies": {
87
- "@rollup/plugin-commonjs": "^22.0.0",
88
- "@rollup/plugin-json": "^4.1.0",
89
- "@rollup/plugin-node-resolve": "^13.3.0",
90
- "@typescript-eslint/eslint-plugin": "^5.8.1",
91
- "@typescript-eslint/parser": "^5.8.1",
92
- "cspell": "^6.17.0",
93
- "eslint": "^8.6.0",
94
- "eslint-config-prettier": "^8.3.0",
85
+ "@libp2p/interface-connection": "^3.0.8",
86
+ "@libp2p/interface-connection-manager": "^1.3.7",
87
+ "@libp2p/interface-libp2p": "^1.1.1",
88
+ "@libp2p/interface-peer-id": "^2.0.1",
89
+ "@libp2p/interface-peer-store": "^1.2.8",
90
+ "@libp2p/interface-registrar": "^2.0.8",
91
+ "@rollup/plugin-commonjs": "^24.0.1",
92
+ "@rollup/plugin-json": "^6.0.0",
93
+ "@rollup/plugin-node-resolve": "^15.0.1",
94
+ "@types/chai": "^4.3.4",
95
+ "@types/mocha": "^10.0.1",
96
+ "@typescript-eslint/eslint-plugin": "^5.54.1",
97
+ "@typescript-eslint/parser": "^5.51.0",
98
+ "@waku/build-utils": "*",
99
+ "chai": "^4.3.7",
100
+ "cspell": "^6.28.0",
101
+ "eslint": "^8.35.0",
102
+ "eslint-config-prettier": "^8.6.0",
95
103
  "eslint-plugin-eslint-comments": "^3.2.0",
96
- "eslint-plugin-functional": "^4.0.2",
97
- "eslint-plugin-import": "^2.25.3",
98
- "eslint-plugin-prettier": "^4.0.0",
104
+ "eslint-plugin-functional": "^5.0.4",
105
+ "eslint-plugin-import": "^2.27.5",
106
+ "eslint-plugin-prettier": "^4.2.1",
107
+ "fast-check": "^3.7.0",
108
+ "karma": "^6.4.1",
109
+ "karma-chrome-launcher": "^3.1.1",
110
+ "karma-mocha": "^2.0.1",
111
+ "karma-webpack": "^5.0.0",
112
+ "mocha": "^10.2.0",
99
113
  "npm-run-all": "^4.1.5",
100
- "prettier": "^2.1.1",
101
- "rollup": "^2.75.0",
102
- "ts-loader": "^9.4.1",
103
- "typescript": "^4.6.3"
114
+ "prettier": "^2.8.4",
115
+ "process": "^0.11.10",
116
+ "puppeteer": "^19.7.2",
117
+ "rollup": "^3.15.0",
118
+ "ts-loader": "^9.4.2",
119
+ "typescript": "^4.9.5"
104
120
  },
105
121
  "typedoc": {
106
122
  "entryPoint": "./src/index.ts"
@@ -1,5 +1,5 @@
1
1
  import * as secp from "@noble/secp256k1";
2
- import { concat, hexToBytes } from "@waku/byte-utils";
2
+ import { concat, hexToBytes } from "@waku/utils/bytes";
3
3
 
4
4
  import { getSubtle, randomBytes, sha256 } from "./index.js";
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import nodeCrypto from "crypto";
2
2
 
3
3
  import * as secp from "@noble/secp256k1";
4
- import { concat } from "@waku/byte-utils";
4
+ import { concat } from "@waku/utils/bytes";
5
5
  import sha3 from "js-sha3";
6
6
 
7
7
  import { Asymmetric, Symmetric } from "../constants.js";
@@ -0,0 +1,27 @@
1
+ import {
2
+ DecodedMessage as DecodedMessageV0,
3
+ proto,
4
+ } from "@waku/core/lib/message/version_0";
5
+ import type { IDecodedMessage } from "@waku/interfaces";
6
+
7
+ export class DecodedMessage
8
+ extends DecodedMessageV0
9
+ implements IDecodedMessage
10
+ {
11
+ private readonly _decodedPayload: Uint8Array;
12
+
13
+ constructor(
14
+ pubSubTopic: string,
15
+ proto: proto.WakuMessage,
16
+ decodedPayload: Uint8Array,
17
+ public signature?: Uint8Array,
18
+ public signaturePublicKey?: Uint8Array
19
+ ) {
20
+ super(pubSubTopic, proto);
21
+ this._decodedPayload = decodedPayload;
22
+ }
23
+
24
+ get payload(): Uint8Array {
25
+ return this._decodedPayload;
26
+ }
27
+ }
package/src/ecies.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Decoder as DecoderV0 } from "@waku/core/lib/message/version_0";
2
+ import { IMetaSetter } from "@waku/interfaces";
2
3
  import type {
4
+ EncoderOptions as BaseEncoderOptions,
3
5
  IDecoder,
4
6
  IEncoder,
5
7
  IMessage,
@@ -8,6 +10,7 @@ import type {
8
10
  import { WakuMessage } from "@waku/proto";
9
11
  import debug from "debug";
10
12
 
13
+ import { DecodedMessage } from "./decoded_message.js";
11
14
  import {
12
15
  decryptAsymmetric,
13
16
  encryptAsymmetric,
@@ -16,23 +19,24 @@ import {
16
19
  } from "./waku_payload.js";
17
20
 
18
21
  import {
19
- DecodedMessage,
20
22
  generatePrivateKey,
21
23
  getPublicKey,
22
24
  OneMillion,
23
25
  Version,
24
26
  } from "./index.js";
25
27
 
26
- export { DecodedMessage, generatePrivateKey, getPublicKey };
28
+ export { generatePrivateKey, getPublicKey };
29
+ export type { Encoder, Decoder, DecodedMessage };
27
30
 
28
31
  const log = debug("waku:message-encryption:ecies");
29
32
 
30
- export class Encoder implements IEncoder {
33
+ class Encoder implements IEncoder {
31
34
  constructor(
32
35
  public contentTopic: string,
33
36
  private publicKey: Uint8Array,
34
37
  private sigPrivKey?: Uint8Array,
35
- public ephemeral: boolean = false
38
+ public ephemeral: boolean = false,
39
+ public metaSetter?: IMetaSetter
36
40
  ) {}
37
41
 
38
42
  async toWire(message: IMessage): Promise<Uint8Array | undefined> {
@@ -44,25 +48,36 @@ export class Encoder implements IEncoder {
44
48
 
45
49
  async toProtoObj(message: IMessage): Promise<IProtoMessage | undefined> {
46
50
  const timestamp = message.timestamp ?? new Date();
47
- if (!message.payload) {
48
- log("No payload to encrypt, skipping: ", message);
49
- return;
50
- }
51
51
  const preparedPayload = await preCipher(message.payload, this.sigPrivKey);
52
52
 
53
53
  const payload = await encryptAsymmetric(preparedPayload, this.publicKey);
54
54
 
55
- return {
55
+ const protoMessage = {
56
56
  payload,
57
57
  version: Version,
58
58
  contentTopic: this.contentTopic,
59
59
  timestamp: BigInt(timestamp.valueOf()) * OneMillion,
60
+ meta: undefined,
60
61
  rateLimitProof: message.rateLimitProof,
61
62
  ephemeral: this.ephemeral,
62
63
  };
64
+
65
+ if (this.metaSetter) {
66
+ const meta = this.metaSetter(protoMessage);
67
+ return { ...protoMessage, meta };
68
+ }
69
+
70
+ return protoMessage;
63
71
  }
64
72
  }
65
73
 
74
+ export interface EncoderOptions extends BaseEncoderOptions {
75
+ /** The public key to encrypt the payload for. */
76
+ publicKey: Uint8Array;
77
+ /** An optional private key to be used to sign the payload before encryption. */
78
+ sigPrivKey?: Uint8Array;
79
+ }
80
+
66
81
  /**
67
82
  * Creates an encoder that encrypts messages using ECIES for the given public,
68
83
  * as defined in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/).
@@ -72,30 +87,32 @@ export class Encoder implements IEncoder {
72
87
  * pass to { @link @waku/interfaces.LightPush.push } or
73
88
  * { @link @waku/interfaces.Relay.send } to automatically encrypt
74
89
  * and encode outgoing messages.
75
- *
76
90
  * The payload can optionally be signed with the given private key as defined
77
91
  * in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/).
78
- *
79
- * @param contentTopic The content topic to set on outgoing messages.
80
- * @param publicKey The public key to encrypt the payload for.
81
- * @param sigPrivKey An optional private key to used to sign the payload before encryption.
82
- * @param ephemeral An optional flag to mark message as ephemeral, ie, not to be stored by Waku Store nodes.
83
92
  */
84
- export function createEncoder(
85
- contentTopic: string,
86
- publicKey: Uint8Array,
87
- sigPrivKey?: Uint8Array,
88
- ephemeral = false
89
- ): Encoder {
90
- return new Encoder(contentTopic, publicKey, sigPrivKey, ephemeral);
93
+ export function createEncoder({
94
+ contentTopic,
95
+ publicKey,
96
+ sigPrivKey,
97
+ ephemeral = false,
98
+ metaSetter,
99
+ }: EncoderOptions): Encoder {
100
+ return new Encoder(
101
+ contentTopic,
102
+ publicKey,
103
+ sigPrivKey,
104
+ ephemeral,
105
+ metaSetter
106
+ );
91
107
  }
92
108
 
93
- export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
109
+ class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
94
110
  constructor(contentTopic: string, private privateKey: Uint8Array) {
95
111
  super(contentTopic);
96
112
  }
97
113
 
98
114
  async fromProtoObj(
115
+ pubSubTopic: string,
99
116
  protoMessage: IProtoMessage
100
117
  ): Promise<DecodedMessage | undefined> {
101
118
  const cipherPayload = protoMessage.payload;
@@ -111,10 +128,6 @@ export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
111
128
  }
112
129
 
113
130
  let payload;
114
- if (!cipherPayload) {
115
- log(`No payload to decrypt for contentTopic ${this.contentTopic}`);
116
- return;
117
- }
118
131
 
119
132
  try {
120
133
  payload = await decryptAsymmetric(cipherPayload, this.privateKey);
@@ -140,6 +153,7 @@ export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
140
153
 
141
154
  log("Message decrypted", protoMessage);
142
155
  return new DecodedMessage(
156
+ pubSubTopic,
143
157
  protoMessage,
144
158
  res.payload,
145
159
  res.sig?.signature,
package/src/index.ts CHANGED
@@ -1,18 +1,14 @@
1
- import {
2
- DecodedMessage as DecodedMessageV0,
3
- proto,
4
- } from "@waku/core/lib/message/version_0";
5
- import type { IDecodedMessage } from "@waku/interfaces";
6
-
7
1
  import {
8
2
  generatePrivateKey,
9
3
  generateSymmetricKey,
10
4
  getPublicKey,
11
5
  } from "./crypto/index.js";
6
+ import { DecodedMessage } from "./decoded_message.js";
12
7
 
13
8
  export const OneMillion = BigInt(1_000_000);
14
9
 
15
10
  export { generatePrivateKey, generateSymmetricKey, getPublicKey };
11
+ export type { DecodedMessage };
16
12
 
17
13
  export * as ecies from "./ecies.js";
18
14
  export * as symmetric from "./symmetric.js";
@@ -23,24 +19,3 @@ export type Signature = {
23
19
  signature: Uint8Array;
24
20
  publicKey: Uint8Array | undefined;
25
21
  };
26
-
27
- export class DecodedMessage
28
- extends DecodedMessageV0
29
- implements IDecodedMessage
30
- {
31
- private readonly _decodedPayload: Uint8Array;
32
-
33
- constructor(
34
- proto: proto.WakuMessage,
35
- decodedPayload: Uint8Array,
36
- public signature?: Uint8Array,
37
- public signaturePublicKey?: Uint8Array
38
- ) {
39
- super(proto);
40
- this._decodedPayload = decodedPayload;
41
- }
42
-
43
- get payload(): Uint8Array {
44
- return this._decodedPayload;
45
- }
46
- }
package/src/symmetric.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  import { Decoder as DecoderV0 } from "@waku/core/lib/message/version_0";
2
2
  import type {
3
+ EncoderOptions as BaseEncoderOptions,
3
4
  IDecoder,
4
5
  IEncoder,
5
6
  IMessage,
7
+ IMetaSetter,
6
8
  IProtoMessage,
7
9
  } from "@waku/interfaces";
8
10
  import { WakuMessage } from "@waku/proto";
9
11
  import debug from "debug";
10
12
 
13
+ import { DecodedMessage } from "./decoded_message.js";
11
14
  import {
12
15
  decryptSymmetric,
13
16
  encryptSymmetric,
@@ -15,23 +18,20 @@ import {
15
18
  preCipher,
16
19
  } from "./waku_payload.js";
17
20
 
18
- import {
19
- DecodedMessage,
20
- generateSymmetricKey,
21
- OneMillion,
22
- Version,
23
- } from "./index.js";
21
+ import { generateSymmetricKey, OneMillion, Version } from "./index.js";
24
22
 
25
- export { DecodedMessage, generateSymmetricKey };
23
+ export { generateSymmetricKey };
24
+ export type { DecodedMessage, Encoder, Decoder };
26
25
 
27
26
  const log = debug("waku:message-encryption:symmetric");
28
27
 
29
- export class Encoder implements IEncoder {
28
+ class Encoder implements IEncoder {
30
29
  constructor(
31
30
  public contentTopic: string,
32
31
  private symKey: Uint8Array,
33
32
  private sigPrivKey?: Uint8Array,
34
- public ephemeral: boolean = false
33
+ public ephemeral: boolean = false,
34
+ public metaSetter?: IMetaSetter
35
35
  ) {}
36
36
 
37
37
  async toWire(message: IMessage): Promise<Uint8Array | undefined> {
@@ -43,24 +43,36 @@ export class Encoder implements IEncoder {
43
43
 
44
44
  async toProtoObj(message: IMessage): Promise<IProtoMessage | undefined> {
45
45
  const timestamp = message.timestamp ?? new Date();
46
- if (!message.payload) {
47
- log("No payload to encrypt, skipping: ", message);
48
- return;
49
- }
50
46
  const preparedPayload = await preCipher(message.payload, this.sigPrivKey);
51
47
 
52
48
  const payload = await encryptSymmetric(preparedPayload, this.symKey);
53
- return {
49
+
50
+ const protoMessage = {
54
51
  payload,
55
52
  version: Version,
56
53
  contentTopic: this.contentTopic,
57
54
  timestamp: BigInt(timestamp.valueOf()) * OneMillion,
55
+ meta: undefined,
58
56
  rateLimitProof: message.rateLimitProof,
59
57
  ephemeral: this.ephemeral,
60
58
  };
59
+
60
+ if (this.metaSetter) {
61
+ const meta = this.metaSetter(protoMessage);
62
+ return { ...protoMessage, meta };
63
+ }
64
+
65
+ return protoMessage;
61
66
  }
62
67
  }
63
68
 
69
+ export interface EncoderOptions extends BaseEncoderOptions {
70
+ /** The symmetric key to encrypt the payload with. */
71
+ symKey: Uint8Array;
72
+ /** An optional private key to be used to sign the payload before encryption. */
73
+ sigPrivKey?: Uint8Array;
74
+ }
75
+
64
76
  /**
65
77
  * Creates an encoder that encrypts messages using symmetric encryption for the
66
78
  * given key, as defined in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/).
@@ -73,27 +85,24 @@ export class Encoder implements IEncoder {
73
85
  *
74
86
  * The payload can optionally be signed with the given private key as defined
75
87
  * in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/).
76
- *
77
- * @param contentTopic The content topic to set on outgoing messages.
78
- * @param symKey The symmetric key to encrypt the payload with.
79
- * @param sigPrivKey An optional private key to used to sign the payload before encryption.
80
- * @param ephemeral An optional flag to mark message as ephemeral, ie, not to be stored by Waku Store nodes.
81
88
  */
82
- export function createEncoder(
83
- contentTopic: string,
84
- symKey: Uint8Array,
85
- sigPrivKey?: Uint8Array,
86
- ephemeral = false
87
- ): Encoder {
88
- return new Encoder(contentTopic, symKey, sigPrivKey, ephemeral);
89
+ export function createEncoder({
90
+ contentTopic,
91
+ symKey,
92
+ sigPrivKey,
93
+ ephemeral = false,
94
+ metaSetter,
95
+ }: EncoderOptions): Encoder {
96
+ return new Encoder(contentTopic, symKey, sigPrivKey, ephemeral, metaSetter);
89
97
  }
90
98
 
91
- export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
99
+ class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
92
100
  constructor(contentTopic: string, private symKey: Uint8Array) {
93
101
  super(contentTopic);
94
102
  }
95
103
 
96
104
  async fromProtoObj(
105
+ pubSubTopic: string,
97
106
  protoMessage: IProtoMessage
98
107
  ): Promise<DecodedMessage | undefined> {
99
108
  const cipherPayload = protoMessage.payload;
@@ -109,10 +118,6 @@ export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
109
118
  }
110
119
 
111
120
  let payload;
112
- if (!cipherPayload) {
113
- log(`No payload to decrypt for contentTopic ${this.contentTopic}`);
114
- return;
115
- }
116
121
 
117
122
  try {
118
123
  payload = await decryptSymmetric(cipherPayload, this.symKey);
@@ -138,6 +143,7 @@ export class Decoder extends DecoderV0 implements IDecoder<DecodedMessage> {
138
143
 
139
144
  log("Message decrypted", protoMessage);
140
145
  return new DecodedMessage(
146
+ pubSubTopic,
141
147
  protoMessage,
142
148
  res.payload,
143
149
  res.sig?.signature,
@@ -1,5 +1,5 @@
1
1
  import * as secp from "@noble/secp256k1";
2
- import { concat, hexToBytes } from "@waku/byte-utils";
2
+ import { concat, hexToBytes } from "@waku/utils/bytes";
3
3
 
4
4
  import { Symmetric } from "./constants.js";
5
5
  import * as ecies from "./crypto/ecies.js";