@zapo-js/fake-server 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +176 -0
  2. package/dist/api/AppStateSyncManager.d.ts +27 -0
  3. package/dist/api/AppStateSyncManager.d.ts.map +1 -0
  4. package/dist/api/AppStateSyncManager.js +151 -0
  5. package/dist/api/AppStateSyncManager.js.map +1 -0
  6. package/dist/api/FakePairingDriver.d.ts +27 -0
  7. package/dist/api/FakePairingDriver.d.ts.map +1 -0
  8. package/dist/api/FakePairingDriver.js +36 -0
  9. package/dist/api/FakePairingDriver.js.map +1 -0
  10. package/dist/api/FakePeer.d.ts +143 -0
  11. package/dist/api/FakePeer.d.ts.map +1 -0
  12. package/dist/api/FakePeer.js +408 -0
  13. package/dist/api/FakePeer.js.map +1 -0
  14. package/dist/api/FakeWaServer.d.ts +167 -0
  15. package/dist/api/FakeWaServer.d.ts.map +1 -0
  16. package/dist/api/FakeWaServer.js +652 -0
  17. package/dist/api/FakeWaServer.js.map +1 -0
  18. package/dist/api/PreKeyDispenser.d.ts +23 -0
  19. package/dist/api/PreKeyDispenser.d.ts.map +1 -0
  20. package/dist/api/PreKeyDispenser.js +98 -0
  21. package/dist/api/PreKeyDispenser.js.map +1 -0
  22. package/dist/api/Scenario.d.ts +24 -0
  23. package/dist/api/Scenario.d.ts.map +1 -0
  24. package/dist/api/Scenario.js +38 -0
  25. package/dist/api/Scenario.js.map +1 -0
  26. package/dist/api/ServerRegistries.d.ts +110 -0
  27. package/dist/api/ServerRegistries.d.ts.map +1 -0
  28. package/dist/api/ServerRegistries.js +268 -0
  29. package/dist/api/ServerRegistries.js.map +1 -0
  30. package/dist/api/iq-handlers.d.ts +47 -0
  31. package/dist/api/iq-handlers.d.ts.map +1 -0
  32. package/dist/api/iq-handlers.js +498 -0
  33. package/dist/api/iq-handlers.js.map +1 -0
  34. package/dist/cli.d.ts +4 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +249 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/index.d.ts +51 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +74 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/infra/WaFakeConnection.d.ts +23 -0
  43. package/dist/infra/WaFakeConnection.d.ts.map +1 -0
  44. package/dist/infra/WaFakeConnection.js +54 -0
  45. package/dist/infra/WaFakeConnection.js.map +1 -0
  46. package/dist/infra/WaFakeConnectionPipeline.d.ts +51 -0
  47. package/dist/infra/WaFakeConnectionPipeline.d.ts.map +1 -0
  48. package/dist/infra/WaFakeConnectionPipeline.js +224 -0
  49. package/dist/infra/WaFakeConnectionPipeline.js.map +1 -0
  50. package/dist/infra/WaFakeFrameSocket.d.ts +29 -0
  51. package/dist/infra/WaFakeFrameSocket.d.ts.map +1 -0
  52. package/dist/infra/WaFakeFrameSocket.js +122 -0
  53. package/dist/infra/WaFakeFrameSocket.js.map +1 -0
  54. package/dist/infra/WaFakeMediaHttpsServer.d.ts +16 -0
  55. package/dist/infra/WaFakeMediaHttpsServer.d.ts.map +1 -0
  56. package/dist/infra/WaFakeMediaHttpsServer.js +131 -0
  57. package/dist/infra/WaFakeMediaHttpsServer.js.map +1 -0
  58. package/dist/infra/WaFakeNoiseHandshake.d.ts +23 -0
  59. package/dist/infra/WaFakeNoiseHandshake.d.ts.map +1 -0
  60. package/dist/infra/WaFakeNoiseHandshake.js +76 -0
  61. package/dist/infra/WaFakeNoiseHandshake.js.map +1 -0
  62. package/dist/infra/WaFakeTransport.d.ts +15 -0
  63. package/dist/infra/WaFakeTransport.d.ts.map +1 -0
  64. package/dist/infra/WaFakeTransport.js +34 -0
  65. package/dist/infra/WaFakeTransport.js.map +1 -0
  66. package/dist/infra/WaFakeWsServer.d.ts +29 -0
  67. package/dist/infra/WaFakeWsServer.d.ts.map +1 -0
  68. package/dist/infra/WaFakeWsServer.js +101 -0
  69. package/dist/infra/WaFakeWsServer.js.map +1 -0
  70. package/dist/protocol/auth/cert-chain.d.ts +18 -0
  71. package/dist/protocol/auth/cert-chain.d.ts.map +1 -0
  72. package/dist/protocol/auth/cert-chain.js +44 -0
  73. package/dist/protocol/auth/cert-chain.js.map +1 -0
  74. package/dist/protocol/auth/client-payload-validate.d.ts +21 -0
  75. package/dist/protocol/auth/client-payload-validate.d.ts.map +1 -0
  76. package/dist/protocol/auth/client-payload-validate.js +61 -0
  77. package/dist/protocol/auth/client-payload-validate.js.map +1 -0
  78. package/dist/protocol/auth/fake-primary-device.d.ts +19 -0
  79. package/dist/protocol/auth/fake-primary-device.d.ts.map +1 -0
  80. package/dist/protocol/auth/fake-primary-device.js +53 -0
  81. package/dist/protocol/auth/fake-primary-device.js.map +1 -0
  82. package/dist/protocol/auth/pair-device.d.ts +26 -0
  83. package/dist/protocol/auth/pair-device.d.ts.map +1 -0
  84. package/dist/protocol/auth/pair-device.js +104 -0
  85. package/dist/protocol/auth/pair-device.js.map +1 -0
  86. package/dist/protocol/auth/success-node.d.ts +15 -0
  87. package/dist/protocol/auth/success-node.d.ts.map +1 -0
  88. package/dist/protocol/auth/success-node.js +30 -0
  89. package/dist/protocol/auth/success-node.js.map +1 -0
  90. package/dist/protocol/iq/abprops.d.ts +14 -0
  91. package/dist/protocol/iq/abprops.d.ts.map +1 -0
  92. package/dist/protocol/iq/abprops.js +34 -0
  93. package/dist/protocol/iq/abprops.js.map +1 -0
  94. package/dist/protocol/iq/appstate-sync.d.ts +38 -0
  95. package/dist/protocol/iq/appstate-sync.d.ts.map +1 -0
  96. package/dist/protocol/iq/appstate-sync.js +154 -0
  97. package/dist/protocol/iq/appstate-sync.js.map +1 -0
  98. package/dist/protocol/iq/business.d.ts +13 -0
  99. package/dist/protocol/iq/business.d.ts.map +1 -0
  100. package/dist/protocol/iq/business.js +64 -0
  101. package/dist/protocol/iq/business.js.map +1 -0
  102. package/dist/protocol/iq/dirty-bits.d.ts +8 -0
  103. package/dist/protocol/iq/dirty-bits.d.ts.map +1 -0
  104. package/dist/protocol/iq/dirty-bits.js +23 -0
  105. package/dist/protocol/iq/dirty-bits.js.map +1 -0
  106. package/dist/protocol/iq/group-ops.d.ts +34 -0
  107. package/dist/protocol/iq/group-ops.d.ts.map +1 -0
  108. package/dist/protocol/iq/group-ops.js +164 -0
  109. package/dist/protocol/iq/group-ops.js.map +1 -0
  110. package/dist/protocol/iq/newsletter.d.ts +4 -0
  111. package/dist/protocol/iq/newsletter.d.ts.map +1 -0
  112. package/dist/protocol/iq/newsletter.js +18 -0
  113. package/dist/protocol/iq/newsletter.js.map +1 -0
  114. package/dist/protocol/iq/prekey-fetch.d.ts +18 -0
  115. package/dist/protocol/iq/prekey-fetch.d.ts.map +1 -0
  116. package/dist/protocol/iq/prekey-fetch.js +92 -0
  117. package/dist/protocol/iq/prekey-fetch.js.map +1 -0
  118. package/dist/protocol/iq/privacy-token.d.ts +9 -0
  119. package/dist/protocol/iq/privacy-token.d.ts.map +1 -0
  120. package/dist/protocol/iq/privacy-token.js +30 -0
  121. package/dist/protocol/iq/privacy-token.js.map +1 -0
  122. package/dist/protocol/iq/privacy.d.ts +22 -0
  123. package/dist/protocol/iq/privacy.d.ts.map +1 -0
  124. package/dist/protocol/iq/privacy.js +133 -0
  125. package/dist/protocol/iq/privacy.js.map +1 -0
  126. package/dist/protocol/iq/profile.d.ts +22 -0
  127. package/dist/protocol/iq/profile.d.ts.map +1 -0
  128. package/dist/protocol/iq/profile.js +80 -0
  129. package/dist/protocol/iq/profile.js.map +1 -0
  130. package/dist/protocol/iq/router.d.ts +39 -0
  131. package/dist/protocol/iq/router.d.ts.map +1 -0
  132. package/dist/protocol/iq/router.js +118 -0
  133. package/dist/protocol/iq/router.js.map +1 -0
  134. package/dist/protocol/iq/usync.d.ts +8 -0
  135. package/dist/protocol/iq/usync.d.ts.map +1 -0
  136. package/dist/protocol/iq/usync.js +68 -0
  137. package/dist/protocol/iq/usync.js.map +1 -0
  138. package/dist/protocol/push/app-state-key-share.d.ts +17 -0
  139. package/dist/protocol/push/app-state-key-share.d.ts.map +1 -0
  140. package/dist/protocol/push/app-state-key-share.js +30 -0
  141. package/dist/protocol/push/app-state-key-share.js.map +1 -0
  142. package/dist/protocol/push/call-failure.d.ts +16 -0
  143. package/dist/protocol/push/call-failure.d.ts.map +1 -0
  144. package/dist/protocol/push/call-failure.js +32 -0
  145. package/dist/protocol/push/call-failure.js.map +1 -0
  146. package/dist/protocol/push/chatstate.d.ts +15 -0
  147. package/dist/protocol/push/chatstate.d.ts.map +1 -0
  148. package/dist/protocol/push/chatstate.js +27 -0
  149. package/dist/protocol/push/chatstate.js.map +1 -0
  150. package/dist/protocol/push/error-stanza.d.ts +8 -0
  151. package/dist/protocol/push/error-stanza.d.ts.map +1 -0
  152. package/dist/protocol/push/error-stanza.js +17 -0
  153. package/dist/protocol/push/error-stanza.js.map +1 -0
  154. package/dist/protocol/push/history-sync.d.ts +46 -0
  155. package/dist/protocol/push/history-sync.d.ts.map +1 -0
  156. package/dist/protocol/push/history-sync.js +117 -0
  157. package/dist/protocol/push/history-sync.js.map +1 -0
  158. package/dist/protocol/push/message.d.ts +21 -0
  159. package/dist/protocol/push/message.d.ts.map +1 -0
  160. package/dist/protocol/push/message.js +42 -0
  161. package/dist/protocol/push/message.js.map +1 -0
  162. package/dist/protocol/push/notification.d.ts +21 -0
  163. package/dist/protocol/push/notification.d.ts.map +1 -0
  164. package/dist/protocol/push/notification.js +34 -0
  165. package/dist/protocol/push/notification.js.map +1 -0
  166. package/dist/protocol/push/presence.d.ts +11 -0
  167. package/dist/protocol/push/presence.d.ts.map +1 -0
  168. package/dist/protocol/push/presence.js +18 -0
  169. package/dist/protocol/push/presence.js.map +1 -0
  170. package/dist/protocol/push/receipt.d.ts +14 -0
  171. package/dist/protocol/push/receipt.d.ts.map +1 -0
  172. package/dist/protocol/push/receipt.js +25 -0
  173. package/dist/protocol/push/receipt.js.map +1 -0
  174. package/dist/protocol/signal/fake-app-state-crypto.d.ts +49 -0
  175. package/dist/protocol/signal/fake-app-state-crypto.d.ts.map +1 -0
  176. package/dist/protocol/signal/fake-app-state-crypto.js +202 -0
  177. package/dist/protocol/signal/fake-app-state-crypto.js.map +1 -0
  178. package/dist/protocol/signal/fake-peer-double-ratchet.d.ts +38 -0
  179. package/dist/protocol/signal/fake-peer-double-ratchet.d.ts.map +1 -0
  180. package/dist/protocol/signal/fake-peer-double-ratchet.js +408 -0
  181. package/dist/protocol/signal/fake-peer-double-ratchet.js.map +1 -0
  182. package/dist/protocol/signal/fake-peer-group-recv-session.d.ts +10 -0
  183. package/dist/protocol/signal/fake-peer-group-recv-session.d.ts.map +1 -0
  184. package/dist/protocol/signal/fake-peer-group-recv-session.js +129 -0
  185. package/dist/protocol/signal/fake-peer-group-recv-session.js.map +1 -0
  186. package/dist/protocol/signal/fake-peer-identity.d.ts +7 -0
  187. package/dist/protocol/signal/fake-peer-identity.d.ts.map +1 -0
  188. package/dist/protocol/signal/fake-peer-identity.js +12 -0
  189. package/dist/protocol/signal/fake-peer-identity.js.map +1 -0
  190. package/dist/protocol/signal/fake-peer-key-bundle.d.ts +24 -0
  191. package/dist/protocol/signal/fake-peer-key-bundle.d.ts.map +1 -0
  192. package/dist/protocol/signal/fake-peer-key-bundle.js +29 -0
  193. package/dist/protocol/signal/fake-peer-key-bundle.js.map +1 -0
  194. package/dist/protocol/signal/fake-peer-recv-session.d.ts +60 -0
  195. package/dist/protocol/signal/fake-peer-recv-session.d.ts.map +1 -0
  196. package/dist/protocol/signal/fake-peer-recv-session.js +284 -0
  197. package/dist/protocol/signal/fake-peer-recv-session.js.map +1 -0
  198. package/dist/protocol/signal/fake-peer-session.d.ts +87 -0
  199. package/dist/protocol/signal/fake-peer-session.d.ts.map +1 -0
  200. package/dist/protocol/signal/fake-peer-session.js +207 -0
  201. package/dist/protocol/signal/fake-peer-session.js.map +1 -0
  202. package/dist/protocol/signal/fake-sender-key.d.ts +15 -0
  203. package/dist/protocol/signal/fake-sender-key.d.ts.map +1 -0
  204. package/dist/protocol/signal/fake-sender-key.js +91 -0
  205. package/dist/protocol/signal/fake-sender-key.js.map +1 -0
  206. package/dist/protocol/signal/prekey-upload.d.ts +22 -0
  207. package/dist/protocol/signal/prekey-upload.d.ts.map +1 -0
  208. package/dist/protocol/signal/prekey-upload.js +113 -0
  209. package/dist/protocol/signal/prekey-upload.js.map +1 -0
  210. package/dist/protocol/stream/stream-error.d.ts +8 -0
  211. package/dist/protocol/stream/stream-error.d.ts.map +1 -0
  212. package/dist/protocol/stream/stream-error.js +64 -0
  213. package/dist/protocol/stream/stream-error.js.map +1 -0
  214. package/dist/state/fake-app-state-collection.d.ts +35 -0
  215. package/dist/state/fake-app-state-collection.d.ts.map +1 -0
  216. package/dist/state/fake-app-state-collection.js +139 -0
  217. package/dist/state/fake-app-state-collection.js.map +1 -0
  218. package/dist/state/fake-media-store.d.ts +35 -0
  219. package/dist/state/fake-media-store.d.ts.map +1 -0
  220. package/dist/state/fake-media-store.js +57 -0
  221. package/dist/state/fake-media-store.js.map +1 -0
  222. package/dist/transport/codec.d.ts +10 -0
  223. package/dist/transport/codec.d.ts.map +1 -0
  224. package/dist/transport/codec.js +17 -0
  225. package/dist/transport/codec.js.map +1 -0
  226. package/dist/transport/crypto.d.ts +11 -0
  227. package/dist/transport/crypto.d.ts.map +1 -0
  228. package/dist/transport/crypto.js +36 -0
  229. package/dist/transport/crypto.js.map +1 -0
  230. package/dist/transport/index.d.ts +4 -0
  231. package/dist/transport/index.d.ts.map +1 -0
  232. package/dist/transport/index.js +20 -0
  233. package/dist/transport/index.js.map +1 -0
  234. package/dist/transport/protos.d.ts +10 -0
  235. package/dist/transport/protos.d.ts.map +1 -0
  236. package/dist/transport/protos.js +13 -0
  237. package/dist/transport/protos.js.map +1 -0
  238. package/package.json +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-sync.js","sourceRoot":"","sources":["../../../src/protocol/push/history-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** Builder for inbound encrypted `<message/>` stanzas. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export type FakeEncType = 'pkmsg' | 'msg' | 'skmsg';
4
+ export interface FakeEncChild {
5
+ readonly type: FakeEncType;
6
+ readonly ciphertext: Uint8Array;
7
+ readonly mediatype?: string;
8
+ }
9
+ export interface BuildMessageInput {
10
+ readonly id: string;
11
+ readonly from: string;
12
+ readonly t?: number;
13
+ readonly type?: string;
14
+ readonly participant?: string;
15
+ readonly notify?: string;
16
+ readonly offline?: number;
17
+ readonly enc: readonly FakeEncChild[];
18
+ readonly extraChildren?: readonly BinaryNode[];
19
+ }
20
+ export declare function buildMessage(input: BuildMessageInput): BinaryNode;
21
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/message.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAA;AAEnD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,SAAS,YAAY,EAAE,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CACjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAkCjE"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /** Builder for inbound encrypted `<message/>` stanzas. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildMessage = buildMessage;
5
+ function buildMessage(input) {
6
+ const attrs = {
7
+ id: input.id,
8
+ from: input.from,
9
+ t: String(input.t ?? Math.floor(Date.now() / 1000)),
10
+ type: input.type ?? 'text'
11
+ };
12
+ if (input.participant !== undefined)
13
+ attrs.participant = input.participant;
14
+ if (input.notify !== undefined)
15
+ attrs.notify = input.notify;
16
+ if (input.offline !== undefined)
17
+ attrs.offline = String(input.offline);
18
+ const children = input.enc.map((enc) => {
19
+ const encAttrs = {
20
+ v: '2',
21
+ type: enc.type
22
+ };
23
+ if (enc.mediatype !== undefined)
24
+ encAttrs.mediatype = enc.mediatype;
25
+ return {
26
+ tag: 'enc',
27
+ attrs: encAttrs,
28
+ content: enc.ciphertext
29
+ };
30
+ });
31
+ if (input.extraChildren) {
32
+ for (const extra of input.extraChildren) {
33
+ children.push(extra);
34
+ }
35
+ }
36
+ return {
37
+ tag: 'message',
38
+ attrs,
39
+ content: children
40
+ };
41
+ }
42
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/protocol/push/message.ts"],"names":[],"mappings":";AAAA,0DAA0D;;AAwB1D,oCAkCC;AAlCD,SAAgB,YAAY,CAAC,KAAwB;IACjD,MAAM,KAAK,GAA2B;QAClC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAK,CAAC,CAAC;QACpD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;KAC7B,CAAA;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEtE,MAAM,QAAQ,GAAiB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACjD,MAAM,QAAQ,GAA2B;YACrC,CAAC,EAAE,GAAG;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;SACjB,CAAA;QACD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;YAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QACnE,OAAO;YACH,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAA;IACL,CAAC,CAAC,CAAA;IACF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACL,CAAC;IAED,OAAO;QACH,GAAG,EAAE,SAAS;QACd,KAAK;QACL,OAAO,EAAE,QAAQ;KACpB,CAAA;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Builders for inbound notification stanzas. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export interface BuildNotificationInput {
4
+ readonly id: string;
5
+ readonly type: string;
6
+ readonly from?: string;
7
+ readonly t?: number;
8
+ readonly participant?: string;
9
+ readonly content?: readonly BinaryNode[];
10
+ readonly extraAttrs?: Readonly<Record<string, string>>;
11
+ }
12
+ export declare function buildNotification(input: BuildNotificationInput): BinaryNode;
13
+ export interface BuildGroupNotificationInput {
14
+ readonly id: string;
15
+ readonly groupJid: string;
16
+ readonly participant?: string;
17
+ readonly t?: number;
18
+ readonly children: readonly BinaryNode[];
19
+ }
20
+ export declare function buildGroupNotification(input: BuildGroupNotificationInput): BinaryNode;
21
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/notification.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,UAAU,CAc3E;AAED,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAC3C;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,UAAU,CAUrF"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /** Builders for inbound notification stanzas. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildNotification = buildNotification;
5
+ exports.buildGroupNotification = buildGroupNotification;
6
+ function buildNotification(input) {
7
+ const attrs = {
8
+ id: input.id,
9
+ type: input.type,
10
+ from: input.from ?? 's.whatsapp.net',
11
+ ...(input.extraAttrs ?? {})
12
+ };
13
+ if (input.t !== undefined)
14
+ attrs.t = String(input.t);
15
+ if (input.participant !== undefined)
16
+ attrs.participant = input.participant;
17
+ return {
18
+ tag: 'notification',
19
+ attrs,
20
+ ...(input.content ? { content: input.content } : {})
21
+ };
22
+ }
23
+ function buildGroupNotification(input) {
24
+ // Group notifications use wire type `w:gp2`.
25
+ return buildNotification({
26
+ id: input.id,
27
+ type: 'w:gp2',
28
+ from: input.groupJid,
29
+ participant: input.participant,
30
+ t: input.t,
31
+ content: input.children
32
+ });
33
+ }
34
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../../src/protocol/push/notification.ts"],"names":[],"mappings":";AAAA,iDAAiD;;AAcjD,8CAcC;AAUD,wDAUC;AAlCD,SAAgB,iBAAiB,CAAC,KAA6B;IAC3D,MAAM,KAAK,GAA2B;QAClC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB;QACpC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;KAC9B,CAAA;IACD,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS;QAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IAC1E,OAAO;QACH,GAAG,EAAE,cAAc;QACnB,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAA;AACL,CAAC;AAUD,SAAgB,sBAAsB,CAAC,KAAkC;IACrE,6CAA6C;IAC7C,OAAO,iBAAiB,CAAC;QACrB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,OAAO,EAAE,KAAK,CAAC,QAAQ;KAC1B,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Builder for inbound `<presence/>` stanzas. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export type FakePresenceType = 'available' | 'unavailable';
4
+ export type FakePresenceLastSentinel = 'deny' | 'none' | 'error';
5
+ export interface BuildIncomingPresenceInput {
6
+ readonly from: string;
7
+ readonly type?: FakePresenceType;
8
+ readonly last?: number | FakePresenceLastSentinel;
9
+ }
10
+ export declare function buildIncomingPresence(input: BuildIncomingPresenceInput): BinaryNode;
11
+ //# sourceMappingURL=presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/presence.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,aAAa,CAAA;AAC1D,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEhE,MAAM,WAAW,0BAA0B;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAA;CACpD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,UAAU,CAYnF"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /** Builder for inbound `<presence/>` stanzas. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildIncomingPresence = buildIncomingPresence;
5
+ function buildIncomingPresence(input) {
6
+ const attrs = {
7
+ from: input.from,
8
+ type: input.type ?? 'available'
9
+ };
10
+ if (input.last !== undefined) {
11
+ attrs.last = typeof input.last === 'number' ? String(input.last) : input.last;
12
+ }
13
+ return {
14
+ tag: 'presence',
15
+ attrs
16
+ };
17
+ }
18
+ //# sourceMappingURL=presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.js","sourceRoot":"","sources":["../../../src/protocol/push/presence.ts"],"names":[],"mappings":";AAAA,iDAAiD;;AAajD,sDAYC;AAZD,SAAgB,qBAAqB,CAAC,KAAiC;IACnE,MAAM,KAAK,GAA2B;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW;KAClC,CAAA;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;IACjF,CAAC;IACD,OAAO;QACH,GAAG,EAAE,UAAU;QACf,KAAK;KACR,CAAA;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** Builder for inbound `<receipt/>` stanzas. */
2
+ import type { BinaryNode } from '../../transport/codec';
3
+ export type FakeReceiptType = 'delivery' | 'read' | 'played' | 'retry' | 'enc_rekey_retry' | 'server-error' | 'inactive';
4
+ export interface BuildReceiptInput {
5
+ readonly id: string;
6
+ readonly from: string;
7
+ readonly type?: FakeReceiptType;
8
+ readonly t?: number;
9
+ readonly participant?: string;
10
+ readonly recipient?: string;
11
+ readonly content?: readonly BinaryNode[];
12
+ }
13
+ export declare function buildReceipt(input: BuildReceiptInput): BinaryNode;
14
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../../src/protocol/push/receipt.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,MAAM,eAAe,GACrB,UAAU,GACV,MAAM,GACN,QAAQ,GACR,OAAO,GACP,iBAAiB,GACjB,cAAc,GACd,UAAU,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CAC3C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAiBjE"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /** Builder for inbound `<receipt/>` stanzas. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.buildReceipt = buildReceipt;
5
+ function buildReceipt(input) {
6
+ const attrs = {
7
+ id: input.id,
8
+ from: input.from
9
+ };
10
+ if (input.type !== undefined && input.type !== 'delivery') {
11
+ attrs.type = input.type;
12
+ }
13
+ if (input.t !== undefined)
14
+ attrs.t = String(input.t);
15
+ if (input.participant !== undefined)
16
+ attrs.participant = input.participant;
17
+ if (input.recipient !== undefined)
18
+ attrs.recipient = input.recipient;
19
+ return {
20
+ tag: 'receipt',
21
+ attrs,
22
+ ...(input.content ? { content: input.content } : {})
23
+ };
24
+ }
25
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/protocol/push/receipt.ts"],"names":[],"mappings":";AAAA,gDAAgD;;AAuBhD,oCAiBC;AAjBD,SAAgB,YAAY,CAAC,KAAwB;IACjD,MAAM,KAAK,GAA2B;QAClC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAA;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS;QAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IAC1E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;IAEpE,OAAO;QACH,GAAG,EAAE,SAAS;QACd,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAA;AACL,CAAC"}
@@ -0,0 +1,49 @@
1
+ /** App-state crypto helpers mirrored from WhatsApp Web behavior. */
2
+ import { type CryptoKey } from '../../transport/crypto';
3
+ import { type Proto } from '../../transport/protos';
4
+ export declare const APP_STATE_EMPTY_LT_HASH: Uint8Array<ArrayBuffer>;
5
+ export interface FakeAppStateDerivedKeys {
6
+ readonly indexHmacKey: CryptoKey;
7
+ readonly valueEncryptionAesKey: CryptoKey;
8
+ readonly valueMacHmacKey: CryptoKey;
9
+ readonly snapshotMacHmacKey: CryptoKey;
10
+ readonly patchMacHmacKey: CryptoKey;
11
+ }
12
+ export interface FakeAppStateEncryptedMutation {
13
+ readonly indexMac: Uint8Array;
14
+ readonly valueBlob: Uint8Array;
15
+ readonly valueMac: Uint8Array;
16
+ }
17
+ export interface FakeAppStateMutationInput {
18
+ readonly operation: 'set' | 'remove';
19
+ readonly keyId: Uint8Array;
20
+ readonly keyData: Uint8Array;
21
+ readonly index: string;
22
+ readonly value: Proto.ISyncActionValue | null;
23
+ readonly version: number;
24
+ readonly iv?: Uint8Array;
25
+ }
26
+ export declare class FakeAppStateCrypto {
27
+ deriveKeys(keyData: Uint8Array): Promise<FakeAppStateDerivedKeys>;
28
+ encryptMutation(input: FakeAppStateMutationInput): Promise<FakeAppStateEncryptedMutation>;
29
+ decryptMutation(input: {
30
+ readonly operation: 'set' | 'remove';
31
+ readonly keyId: Uint8Array;
32
+ readonly keyData: Uint8Array;
33
+ readonly indexMac: Uint8Array;
34
+ readonly valueBlob: Uint8Array;
35
+ }): Promise<{
36
+ readonly index: string;
37
+ readonly value: Proto.ISyncActionValue | null;
38
+ readonly version: number;
39
+ readonly indexMac: Uint8Array;
40
+ readonly valueMac: Uint8Array;
41
+ }>;
42
+ generateSnapshotMac(keyData: Uint8Array, ltHash: Uint8Array, version: number, collectionName: string): Promise<Uint8Array>;
43
+ generatePatchMac(keyData: Uint8Array, snapshotMac: Uint8Array, valueMacs: readonly Uint8Array[], version: number, collectionName: string): Promise<Uint8Array>;
44
+ ltHashAdd(base: Uint8Array, addValues: readonly Uint8Array[]): Promise<Uint8Array>;
45
+ ltHashSubtract(base: Uint8Array, removeValues: readonly Uint8Array[]): Promise<Uint8Array>;
46
+ private ltHashApply;
47
+ private generateValueMac;
48
+ }
49
+ //# sourceMappingURL=fake-app-state-crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-app-state-crypto.d.ts","sourceRoot":"","sources":["../../../src/protocol/signal/fake-app-state-crypto.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAGH,KAAK,SAAS,EAOjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAgB1D,eAAO,MAAM,uBAAuB,yBAAyC,CAAA;AAE7E,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAA;IAChC,QAAQ,CAAC,qBAAqB,EAAE,SAAS,CAAA;IACzC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAA;CACtC;AAED,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAA;CAC3B;AAED,qBAAa,kBAAkB;IACd,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiDjE,eAAe,CACxB,KAAK,EAAE,yBAAyB,GACjC,OAAO,CAAC,6BAA6B,CAAC;IAgC5B,eAAe,CAAC,KAAK,EAAE;QAChC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAA;QACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;QAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;QAC5B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;QAC7B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;KACjC,GAAG,OAAO,CAAC;QACR,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;QAC7B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;KAChC,CAAC;IA0CW,mBAAmB,CAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,CAAC;IAUT,gBAAgB,CACzB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,UAAU,EACvB,SAAS,EAAE,SAAS,UAAU,EAAE,EAChC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,CAAC;IAWT,SAAS,CAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,SAAS,UAAU,EAAE,GACjC,OAAO,CAAC,UAAU,CAAC;IAIT,cAAc,CACvB,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,SAAS,UAAU,EAAE,GACpC,OAAO,CAAC,UAAU,CAAC;YAIR,WAAW;YAqBX,gBAAgB;CAajC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /** App-state crypto helpers mirrored from WhatsApp Web behavior. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FakeAppStateCrypto = exports.APP_STATE_EMPTY_LT_HASH = void 0;
5
+ const crypto_1 = require("../../transport/crypto");
6
+ const protos_1 = require("../../transport/protos");
7
+ const APP_STATE_DERIVED_KEY_LENGTH = 160;
8
+ const APP_STATE_DERIVED_INDEX_KEY_END = 32;
9
+ const APP_STATE_DERIVED_VALUE_ENCRYPTION_KEY_END = 64;
10
+ const APP_STATE_DERIVED_VALUE_MAC_KEY_END = 96;
11
+ const APP_STATE_DERIVED_SNAPSHOT_MAC_KEY_END = 128;
12
+ const APP_STATE_DERIVED_PATCH_MAC_KEY_END = 160;
13
+ const APP_STATE_VALUE_MAC_LENGTH = 32;
14
+ const APP_STATE_MAC_OCTET_LENGTH = 8;
15
+ const APP_STATE_IV_LENGTH = 16;
16
+ const APP_STATE_LT_HASH_SIZE = 128;
17
+ const APP_STATE_POINT_SIZE = 2;
18
+ const KDF_INFO_MUTATION_KEYS = 'WhatsApp Mutation Keys';
19
+ const KDF_INFO_PATCH_INTEGRITY = 'WhatsApp Patch Integrity';
20
+ exports.APP_STATE_EMPTY_LT_HASH = new Uint8Array(APP_STATE_LT_HASH_SIZE);
21
+ class FakeAppStateCrypto {
22
+ async deriveKeys(keyData) {
23
+ const derived = await (0, crypto_1.hkdf)(keyData, null, KDF_INFO_MUTATION_KEYS, APP_STATE_DERIVED_KEY_LENGTH);
24
+ const [indexHmacKey, valueEncryptionAesKey, valueMacHmacKey, snapshotMacHmacKey, patchMacHmacKey] = await Promise.all([
25
+ (0, crypto_1.importHmacKey)(derived.subarray(0, APP_STATE_DERIVED_INDEX_KEY_END)),
26
+ (0, crypto_1.importAesCbcKey)(derived.subarray(APP_STATE_DERIVED_INDEX_KEY_END, APP_STATE_DERIVED_VALUE_ENCRYPTION_KEY_END)),
27
+ (0, crypto_1.importHmacSha512Key)(derived.subarray(APP_STATE_DERIVED_VALUE_ENCRYPTION_KEY_END, APP_STATE_DERIVED_VALUE_MAC_KEY_END)),
28
+ (0, crypto_1.importHmacKey)(derived.subarray(APP_STATE_DERIVED_VALUE_MAC_KEY_END, APP_STATE_DERIVED_SNAPSHOT_MAC_KEY_END)),
29
+ (0, crypto_1.importHmacKey)(derived.subarray(APP_STATE_DERIVED_SNAPSHOT_MAC_KEY_END, APP_STATE_DERIVED_PATCH_MAC_KEY_END))
30
+ ]);
31
+ return {
32
+ indexHmacKey,
33
+ valueEncryptionAesKey,
34
+ valueMacHmacKey,
35
+ snapshotMacHmacKey,
36
+ patchMacHmacKey
37
+ };
38
+ }
39
+ async encryptMutation(input) {
40
+ const derivedKeys = await this.deriveKeys(input.keyData);
41
+ const indexBytes = new TextEncoder().encode(input.index);
42
+ const encoded = protos_1.proto.SyncActionData.encode({
43
+ index: indexBytes,
44
+ value: input.value ?? undefined,
45
+ padding: new Uint8Array(0),
46
+ version: input.version
47
+ }).finish();
48
+ const iv = input.iv ?? (await (0, crypto_1.randomBytesAsync)(APP_STATE_IV_LENGTH));
49
+ if (iv.byteLength !== APP_STATE_IV_LENGTH) {
50
+ throw new Error(`invalid IV length ${iv.byteLength}`);
51
+ }
52
+ const indexMac = await (0, crypto_1.hmacSign)(derivedKeys.indexHmacKey, indexBytes);
53
+ const cipherText = await (0, crypto_1.aesCbcEncrypt)(derivedKeys.valueEncryptionAesKey, iv, encoded);
54
+ const cipherWithIv = concatBytes([iv, cipherText]);
55
+ const associatedData = generateAssociatedData(input.operation, input.keyId);
56
+ const valueMac = await this.generateValueMac(derivedKeys.valueMacHmacKey, associatedData, cipherWithIv);
57
+ return {
58
+ indexMac,
59
+ valueBlob: concatBytes([cipherWithIv, valueMac]),
60
+ valueMac
61
+ };
62
+ }
63
+ async decryptMutation(input) {
64
+ if (input.valueBlob.byteLength < APP_STATE_IV_LENGTH + APP_STATE_VALUE_MAC_LENGTH) {
65
+ throw new Error('invalid mutation value blob');
66
+ }
67
+ const derivedKeys = await this.deriveKeys(input.keyData);
68
+ const iv = input.valueBlob.subarray(0, APP_STATE_IV_LENGTH);
69
+ const macStart = input.valueBlob.byteLength - APP_STATE_VALUE_MAC_LENGTH;
70
+ const valueMac = input.valueBlob.subarray(macStart);
71
+ const cipherText = input.valueBlob.subarray(APP_STATE_IV_LENGTH, macStart);
72
+ const cipherWithIv = input.valueBlob.subarray(0, macStart);
73
+ const associatedData = generateAssociatedData(input.operation, input.keyId);
74
+ const expectedMac = await this.generateValueMac(derivedKeys.valueMacHmacKey, associatedData, cipherWithIv);
75
+ if (!uint8Equal(expectedMac, valueMac)) {
76
+ throw new Error('mutation value MAC mismatch');
77
+ }
78
+ const plaintext = await (0, crypto_1.aesCbcDecrypt)(derivedKeys.valueEncryptionAesKey, iv, cipherText);
79
+ const syncActionData = protos_1.proto.SyncActionData.decode(plaintext);
80
+ if (!syncActionData.index) {
81
+ throw new Error('missing sync action index');
82
+ }
83
+ if (syncActionData.version === null || syncActionData.version === undefined) {
84
+ throw new Error('missing sync action version');
85
+ }
86
+ const generatedIndexMac = await (0, crypto_1.hmacSign)(derivedKeys.indexHmacKey, syncActionData.index);
87
+ if (!uint8Equal(generatedIndexMac, input.indexMac)) {
88
+ throw new Error('mutation index MAC mismatch');
89
+ }
90
+ return {
91
+ index: new TextDecoder().decode(syncActionData.index),
92
+ value: syncActionData.value ?? null,
93
+ version: syncActionData.version,
94
+ indexMac: input.indexMac,
95
+ valueMac
96
+ };
97
+ }
98
+ async generateSnapshotMac(keyData, ltHash, version, collectionName) {
99
+ const derivedKeys = await this.deriveKeys(keyData);
100
+ const payload = concatBytes([
101
+ ltHash,
102
+ intToBytesBe(8, version),
103
+ new TextEncoder().encode(collectionName)
104
+ ]);
105
+ return (0, crypto_1.hmacSign)(derivedKeys.snapshotMacHmacKey, payload);
106
+ }
107
+ async generatePatchMac(keyData, snapshotMac, valueMacs, version, collectionName) {
108
+ const derivedKeys = await this.deriveKeys(keyData);
109
+ const payload = concatBytes([
110
+ snapshotMac,
111
+ ...valueMacs,
112
+ intToBytesBe(8, version),
113
+ new TextEncoder().encode(collectionName)
114
+ ]);
115
+ return (0, crypto_1.hmacSign)(derivedKeys.patchMacHmacKey, payload);
116
+ }
117
+ async ltHashAdd(base, addValues) {
118
+ return this.ltHashApply(base, addValues, (left, right) => left + right);
119
+ }
120
+ async ltHashSubtract(base, removeValues) {
121
+ return this.ltHashApply(base, removeValues, (left, right) => left - right);
122
+ }
123
+ async ltHashApply(base, values, combine) {
124
+ if (values.length === 0) {
125
+ return base.slice();
126
+ }
127
+ const expandedValues = await Promise.all(values.map((value) => (0, crypto_1.hkdf)(value, null, KDF_INFO_PATCH_INTEGRITY, APP_STATE_LT_HASH_SIZE)));
128
+ const out = new Uint8Array(base.byteLength);
129
+ pointwise(base, expandedValues[0], combine, out);
130
+ for (let index = 1; index < expandedValues.length; index += 1) {
131
+ pointwise(out, expandedValues[index], combine, out);
132
+ }
133
+ return out;
134
+ }
135
+ async generateValueMac(valueMacHmacKey, associatedData, cipherWithIv) {
136
+ const octetLength = new Uint8Array(APP_STATE_MAC_OCTET_LENGTH);
137
+ octetLength[octetLength.length - 1] = associatedData.byteLength & 0xff;
138
+ const full = await (0, crypto_1.hmacSign)(valueMacHmacKey, concatBytes([associatedData, cipherWithIv, octetLength]));
139
+ return full.subarray(0, APP_STATE_VALUE_MAC_LENGTH);
140
+ }
141
+ }
142
+ exports.FakeAppStateCrypto = FakeAppStateCrypto;
143
+ function generateAssociatedData(operation, keyId) {
144
+ // byte 0 is operation+1 (set=1, remove=2), then keyId bytes.
145
+ const opCode = operation === 'set' ? 1 : 2;
146
+ const out = new Uint8Array(1 + keyId.byteLength);
147
+ out[0] = opCode;
148
+ out.set(keyId, 1);
149
+ return out;
150
+ }
151
+ function pointwise(left, right, combine, out) {
152
+ if (left.byteLength !== right.byteLength) {
153
+ throw new Error('lt hash input length mismatch');
154
+ }
155
+ if (left.byteLength % APP_STATE_POINT_SIZE !== 0) {
156
+ throw new Error('lt hash input alignment mismatch');
157
+ }
158
+ if (out.byteLength !== left.byteLength) {
159
+ throw new Error('lt hash output length mismatch');
160
+ }
161
+ const leftView = new DataView(left.buffer, left.byteOffset, left.byteLength);
162
+ const rightView = new DataView(right.buffer, right.byteOffset, right.byteLength);
163
+ const outView = new DataView(out.buffer, out.byteOffset, out.byteLength);
164
+ for (let offset = 0; offset < left.byteLength; offset += APP_STATE_POINT_SIZE) {
165
+ const value = combine(leftView.getUint16(offset, true), rightView.getUint16(offset, true));
166
+ outView.setUint16(offset, value & 0xffff, true);
167
+ }
168
+ }
169
+ function intToBytesBe(byteLength, value) {
170
+ if (!Number.isSafeInteger(value) || value < 0) {
171
+ throw new Error(`invalid integer value: ${value}`);
172
+ }
173
+ const out = new Uint8Array(byteLength);
174
+ let current = value;
175
+ for (let i = byteLength - 1; i >= 0; i -= 1) {
176
+ out[i] = current & 0xff;
177
+ current = Math.floor(current / 256);
178
+ }
179
+ return out;
180
+ }
181
+ function uint8Equal(a, b) {
182
+ if (a.byteLength !== b.byteLength)
183
+ return false;
184
+ let diff = 0;
185
+ for (let index = 0; index < a.byteLength; index += 1) {
186
+ diff |= a[index] ^ b[index];
187
+ }
188
+ return diff === 0;
189
+ }
190
+ function concatBytes(parts) {
191
+ let total = 0;
192
+ for (const part of parts)
193
+ total += part.byteLength;
194
+ const out = new Uint8Array(total);
195
+ let offset = 0;
196
+ for (const part of parts) {
197
+ out.set(part, offset);
198
+ offset += part.byteLength;
199
+ }
200
+ return out;
201
+ }
202
+ //# sourceMappingURL=fake-app-state-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-app-state-crypto.js","sourceRoot":"","sources":["../../../src/protocol/signal/fake-app-state-crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /** Bidirectional Signal Double Ratchet used by fake peers. */
2
+ import type { FakePeerKeyBundle } from './fake-peer-key-bundle';
3
+ import type { ClientPreKeyBundle } from './prekey-upload';
4
+ export declare class FakePeerDoubleRatchetError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class FakePeerDoubleRatchet {
8
+ private readonly keyBundle;
9
+ private readonly localIdentityPubSerialized;
10
+ private remoteIdentityPubSerialized;
11
+ private rootKey;
12
+ private sendChain;
13
+ private recvChain;
14
+ private pendingPreKeyHeader;
15
+ private bootstrapChainKey;
16
+ private hasOutboundSendChain;
17
+ constructor(keyBundle: FakePeerKeyBundle);
18
+ get registrationId(): number;
19
+ hasSendChain(): boolean;
20
+ initiateOutbound(bundle: ClientPreKeyBundle, options?: {
21
+ readonly oneTimePreKey?: {
22
+ readonly keyId: number;
23
+ readonly publicKey: Uint8Array;
24
+ };
25
+ /** Skip DH4 (one-time prekey) when no per-peer prekey can be reserved. */
26
+ readonly skipOneTimePreKey?: boolean;
27
+ }): Promise<void>;
28
+ encrypt(plaintext: Uint8Array): Promise<{
29
+ readonly type: 'pkmsg' | 'msg';
30
+ readonly ciphertext: Uint8Array;
31
+ }>;
32
+ decryptPreKeyMessage(envelope: Uint8Array): Promise<Uint8Array>;
33
+ decryptMessage(envelope: Uint8Array): Promise<Uint8Array>;
34
+ private decryptInnerSignalMessage;
35
+ private runRecvRatchetStep;
36
+ private rotateSendRatchet;
37
+ }
38
+ //# sourceMappingURL=fake-peer-double-ratchet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-peer-double-ratchet.d.ts","sourceRoot":"","sources":["../../../src/protocol/signal/fake-peer-double-ratchet.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAkB9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAQzD,qBAAa,0BAA2B,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAIrC;AA+BD,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAY;IACvD,OAAO,CAAC,2BAA2B,CAA0B;IAC7D,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,oBAAoB,CAAQ;gBAEjB,SAAS,EAAE,iBAAiB;IAK/C,IAAW,cAAc,IAAI,MAAM,CAElC;IAEM,YAAY,IAAI,OAAO;IAIjB,gBAAgB,CACzB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE;QACL,QAAQ,CAAC,aAAa,CAAC,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;SAAE,CAAA;QACnF,0EAA0E;QAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAClC,GACP,OAAO,CAAC,IAAI,CAAC;IAsDH,OAAO,CAChB,SAAS,EAAE,UAAU,GACtB,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;IA4DlE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAgD/D,cAAc,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAIxD,yBAAyB;YA4IzB,kBAAkB;YA6BlB,iBAAiB;CAuBlC"}