@badzz88/baileys 8.4.0 → 8.4.1

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 (214) hide show
  1. package/WAProto/GenerateStatics.sh +3 -0
  2. package/WAProto/WAProto.proto +6902 -0
  3. package/WAProto/fix-imports.js +85 -0
  4. package/WAProto/index.d.ts +79257 -0
  5. package/WAProto/index.js +204305 -131020
  6. package/engine-requirements.js +3 -4
  7. package/lib/Defaults/baileys-version.json +2 -2
  8. package/lib/Defaults/index.js +119 -136
  9. package/lib/Signal/Group/ciphertext-message.js +2 -5
  10. package/lib/Signal/Group/group-session-builder.js +7 -41
  11. package/lib/Signal/Group/group_cipher.js +37 -51
  12. package/lib/Signal/Group/index.js +12 -57
  13. package/lib/Signal/Group/keyhelper.js +7 -44
  14. package/lib/Signal/Group/sender-chain-key.js +7 -15
  15. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  16. package/lib/Signal/Group/sender-key-message.js +9 -12
  17. package/lib/Signal/Group/sender-key-name.js +2 -5
  18. package/lib/Signal/Group/sender-key-record.js +9 -21
  19. package/lib/Signal/Group/sender-key-state.js +27 -42
  20. package/lib/Signal/Group/sender-message-key.js +4 -7
  21. package/lib/Signal/libsignal.js +347 -90
  22. package/lib/Signal/lid-mapping.js +277 -0
  23. package/lib/Socket/Client/index.js +3 -19
  24. package/lib/Socket/Client/types.js +11 -0
  25. package/lib/Socket/Client/websocket.js +54 -0
  26. package/lib/Socket/business.js +162 -43
  27. package/lib/Socket/chats.js +632 -426
  28. package/lib/Socket/communities.js +90 -80
  29. package/lib/Socket/community.js +392 -0
  30. package/lib/Socket/dugong.js +161 -8
  31. package/lib/Socket/groups.js +154 -160
  32. package/lib/Socket/index.js +11 -10
  33. package/lib/Socket/luxu.js +315 -469
  34. package/lib/Socket/messages-recv.js +1421 -615
  35. package/lib/Socket/messages-send.js +1150 -799
  36. package/lib/Socket/mex.js +42 -0
  37. package/lib/Socket/newsletter.js +139 -313
  38. package/lib/Socket/registration.js +2 -1
  39. package/lib/Socket/socket.js +544 -313
  40. package/lib/Store/index.js +10 -10
  41. package/lib/Store/keyed-db.js +108 -0
  42. package/lib/Store/make-cache-manager-store.js +43 -41
  43. package/lib/Store/make-in-memory-store.js +112 -341
  44. package/lib/Store/make-ordered-dictionary.js +14 -20
  45. package/lib/Store/object-repository.js +11 -6
  46. package/lib/Types/Auth.js +2 -2
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -2
  49. package/lib/Types/Chat.js +8 -4
  50. package/lib/Types/Contact.js +2 -2
  51. package/lib/Types/Events.js +2 -2
  52. package/lib/Types/GroupMetadata.js +2 -2
  53. package/lib/Types/Label.js +3 -5
  54. package/lib/Types/LabelAssociation.js +3 -5
  55. package/lib/Types/Message.js +11 -9
  56. package/lib/Types/Mex.js +37 -0
  57. package/lib/Types/Product.js +2 -2
  58. package/lib/Types/Signal.js +2 -2
  59. package/lib/Types/Socket.js +3 -2
  60. package/lib/Types/State.js +56 -2
  61. package/lib/Types/USync.js +2 -2
  62. package/lib/Types/index.js +15 -31
  63. package/lib/Utils/auth-utils.js +239 -143
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +66 -69
  66. package/lib/Utils/chat-utils.js +396 -253
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +57 -90
  69. package/lib/Utils/decode-wa-message.js +236 -84
  70. package/lib/Utils/event-buffer.js +185 -77
  71. package/lib/Utils/generics.js +188 -283
  72. package/lib/Utils/history.js +93 -55
  73. package/lib/Utils/identity-change-handler.js +50 -0
  74. package/lib/Utils/index.js +23 -33
  75. package/lib/Utils/link-preview.js +16 -24
  76. package/lib/Utils/logger.js +3 -7
  77. package/lib/Utils/lt-hash.js +3 -46
  78. package/lib/Utils/make-mutex.js +24 -34
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/lib/Utils/message-retry-manager.js +265 -0
  81. package/lib/Utils/messages-media.js +451 -482
  82. package/lib/Utils/messages.js +795 -369
  83. package/lib/Utils/noise-handler.js +145 -99
  84. package/lib/Utils/offline-node-processor.js +40 -0
  85. package/lib/Utils/pre-key-manager.js +106 -0
  86. package/lib/Utils/process-message.js +459 -150
  87. package/lib/Utils/reporting-utils.js +258 -0
  88. package/lib/Utils/signal.js +120 -72
  89. package/lib/Utils/stanza-ack.js +38 -0
  90. package/lib/Utils/sync-action-utils.js +49 -0
  91. package/lib/Utils/tc-token-utils.js +163 -0
  92. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  93. package/lib/Utils/validate-connection.js +73 -99
  94. package/lib/WABinary/constants.js +1281 -20
  95. package/lib/WABinary/decode.js +52 -42
  96. package/lib/WABinary/encode.js +110 -155
  97. package/lib/WABinary/generic-utils.js +55 -49
  98. package/lib/WABinary/index.js +6 -21
  99. package/lib/WABinary/jid-utils.js +76 -40
  100. package/lib/WABinary/types.js +2 -2
  101. package/lib/WAM/BinaryInfo.js +2 -5
  102. package/lib/WAM/constants.js +19071 -11568
  103. package/lib/WAM/encode.js +17 -22
  104. package/lib/WAM/index.js +4 -19
  105. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  106. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  107. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  108. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  109. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  110. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  111. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  112. package/lib/WAUSync/Protocols/index.js +6 -20
  113. package/lib/WAUSync/USyncQuery.js +44 -35
  114. package/lib/WAUSync/USyncUser.js +10 -5
  115. package/lib/WAUSync/index.js +4 -19
  116. package/lib/index.js +14 -32
  117. package/package.json +133 -101
  118. package/lib/Defaults/index.d.ts +0 -53
  119. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  120. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  121. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  122. package/lib/Signal/Group/index.d.ts +0 -11
  123. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  124. package/lib/Signal/Group/queue-job.d.ts +0 -1
  125. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  126. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  127. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  128. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  129. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  130. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  131. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  132. package/lib/Signal/libsignal.d.ts +0 -3
  133. package/lib/Signal/p +0 -1
  134. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  135. package/lib/Socket/Client/index.d.ts +0 -3
  136. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  137. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  138. package/lib/Socket/business.d.ts +0 -171
  139. package/lib/Socket/chats.d.ts +0 -267
  140. package/lib/Socket/communities.d.ts +0 -180
  141. package/lib/Socket/dugong.d.ts +0 -254
  142. package/lib/Socket/groups.d.ts +0 -115
  143. package/lib/Socket/index.d.ts +0 -173
  144. package/lib/Socket/luxu.d.ts +0 -266
  145. package/lib/Socket/messages-recv.d.ts +0 -161
  146. package/lib/Socket/messages-send.d.ts +0 -183
  147. package/lib/Socket/newsletter.d.ts +0 -134
  148. package/lib/Socket/registration.d.ts +0 -267
  149. package/lib/Socket/socket.d.ts +0 -44
  150. package/lib/Socket/usync.d.ts +0 -36
  151. package/lib/Store/index.d.ts +0 -3
  152. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  153. package/lib/Store/make-in-memory-store.d.ts +0 -118
  154. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  155. package/lib/Store/object-repository.d.ts +0 -10
  156. package/lib/Types/Auth.d.ts +0 -110
  157. package/lib/Types/Call.d.ts +0 -13
  158. package/lib/Types/Chat.d.ts +0 -102
  159. package/lib/Types/Contact.d.ts +0 -19
  160. package/lib/Types/Events.d.ts +0 -157
  161. package/lib/Types/GroupMetadata.d.ts +0 -55
  162. package/lib/Types/Label.d.ts +0 -35
  163. package/lib/Types/LabelAssociation.d.ts +0 -29
  164. package/lib/Types/Message.d.ts +0 -273
  165. package/lib/Types/Newsletter.d.ts +0 -103
  166. package/lib/Types/Product.d.ts +0 -78
  167. package/lib/Types/Signal.d.ts +0 -57
  168. package/lib/Types/Socket.d.ts +0 -111
  169. package/lib/Types/State.d.ts +0 -27
  170. package/lib/Types/USync.d.ts +0 -25
  171. package/lib/Types/index.d.ts +0 -57
  172. package/lib/Utils/auth-utils.d.ts +0 -18
  173. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  174. package/lib/Utils/business.d.ts +0 -22
  175. package/lib/Utils/chat-utils.d.ts +0 -71
  176. package/lib/Utils/crypto.d.ts +0 -41
  177. package/lib/Utils/decode-wa-message.d.ts +0 -19
  178. package/lib/Utils/event-buffer.d.ts +0 -35
  179. package/lib/Utils/generics.d.ts +0 -92
  180. package/lib/Utils/history.d.ts +0 -15
  181. package/lib/Utils/index.d.ts +0 -17
  182. package/lib/Utils/link-preview.d.ts +0 -21
  183. package/lib/Utils/logger.d.ts +0 -4
  184. package/lib/Utils/lt-hash.d.ts +0 -12
  185. package/lib/Utils/make-mutex.d.ts +0 -7
  186. package/lib/Utils/messages-media.d.ts +0 -116
  187. package/lib/Utils/messages.d.ts +0 -77
  188. package/lib/Utils/noise-handler.d.ts +0 -21
  189. package/lib/Utils/process-message.d.ts +0 -41
  190. package/lib/Utils/signal.d.ts +0 -32
  191. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  192. package/lib/Utils/validate-connection.d.ts +0 -11
  193. package/lib/WABinary/constants.d.ts +0 -30
  194. package/lib/WABinary/decode.d.ts +0 -7
  195. package/lib/WABinary/encode.d.ts +0 -3
  196. package/lib/WABinary/generic-utils.d.ts +0 -17
  197. package/lib/WABinary/index.d.ts +0 -5
  198. package/lib/WABinary/jid-utils.d.ts +0 -31
  199. package/lib/WABinary/types.d.ts +0 -18
  200. package/lib/WAM/BinaryInfo.d.ts +0 -17
  201. package/lib/WAM/constants.d.ts +0 -38
  202. package/lib/WAM/encode.d.ts +0 -3
  203. package/lib/WAM/index.d.ts +0 -3
  204. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  205. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  206. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  208. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  209. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  210. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  211. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  212. package/lib/WAUSync/USyncUser.d.ts +0 -12
  213. package/lib/WAUSync/index.d.ts +0 -3
  214. package/lib/index.d.ts +0 -12
@@ -1,25 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderChainKey = void 0;
4
- const crypto_1 = require("libsignal/src/crypto");
5
- const sender_message_key_1 = require("./sender-message-key");
6
- class SenderChainKey {
1
+ import { calculateMAC } from 'libsignal/src/crypto.js';
2
+ import { SenderMessageKey } from './sender-message-key.js';
3
+ export class SenderChainKey {
7
4
  constructor(iteration, chainKey) {
8
5
  this.MESSAGE_KEY_SEED = Buffer.from([0x01]);
9
6
  this.CHAIN_KEY_SEED = Buffer.from([0x02]);
10
7
  this.iteration = iteration;
11
- if (chainKey instanceof Buffer) {
12
- this.chainKey = chainKey;
13
- }
14
- else {
15
- this.chainKey = Buffer.from(chainKey || []);
16
- }
8
+ this.chainKey = Buffer.from(chainKey);
17
9
  }
18
10
  getIteration() {
19
11
  return this.iteration;
20
12
  }
21
13
  getSenderMessageKey() {
22
- return new sender_message_key_1.SenderMessageKey(this.iteration, this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey));
14
+ return new SenderMessageKey(this.iteration, this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey));
23
15
  }
24
16
  getNext() {
25
17
  return new SenderChainKey(this.iteration + 1, this.getDerivative(this.CHAIN_KEY_SEED, this.chainKey));
@@ -28,7 +20,7 @@ class SenderChainKey {
28
20
  return this.chainKey;
29
21
  }
30
22
  getDerivative(seed, key) {
31
- return (0, crypto_1.calculateMAC)(key, seed);
23
+ return calculateMAC(key, seed);
32
24
  }
33
25
  }
34
- exports.SenderChainKey = SenderChainKey;
26
+ //# sourceMappingURL=sender-chain-key.js.map
@@ -1,15 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeyDistributionMessage = void 0;
4
- const WAProto_1 = require("../../../WAProto");
5
- const ciphertext_message_1 = require("./ciphertext-message");
6
- class SenderKeyDistributionMessage extends ciphertext_message_1.CiphertextMessage {
1
+ import { proto } from '../../../WAProto/index.js';
2
+ import { CiphertextMessage } from './ciphertext-message.js';
3
+ export class SenderKeyDistributionMessage extends CiphertextMessage {
7
4
  constructor(id, iteration, chainKey, signatureKey, serialized) {
8
5
  super();
9
6
  if (serialized) {
10
7
  try {
11
8
  const message = serialized.slice(1);
12
- const distributionMessage = WAProto_1.proto.SenderKeyDistributionMessage.decode(message).toJSON();
9
+ const distributionMessage = proto.SenderKeyDistributionMessage.decode(message).toJSON();
13
10
  this.serialized = serialized;
14
11
  this.id = distributionMessage.id;
15
12
  this.iteration = distributionMessage.iteration;
@@ -32,7 +29,7 @@ class SenderKeyDistributionMessage extends ciphertext_message_1.CiphertextMessag
32
29
  this.iteration = iteration;
33
30
  this.chainKey = chainKey;
34
31
  this.signatureKey = signatureKey;
35
- const message = WAProto_1.proto.SenderKeyDistributionMessage.encode(WAProto_1.proto.SenderKeyDistributionMessage.create({
32
+ const message = proto.SenderKeyDistributionMessage.encode(proto.SenderKeyDistributionMessage.create({
36
33
  id,
37
34
  iteration,
38
35
  chainKey,
@@ -54,13 +51,13 @@ class SenderKeyDistributionMessage extends ciphertext_message_1.CiphertextMessag
54
51
  return this.iteration;
55
52
  }
56
53
  getChainKey() {
57
- return typeof this.chainKey === 'string' ? Buffer.from(this.chainKey, 'base64') : this.chainKey;
54
+ return this.chainKey;
58
55
  }
59
56
  getSignatureKey() {
60
- return typeof this.signatureKey === 'string' ? Buffer.from(this.signatureKey, 'base64') : this.signatureKey;
57
+ return this.signatureKey;
61
58
  }
62
59
  getId() {
63
60
  return this.id;
64
61
  }
65
62
  }
66
- exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
63
+ //# sourceMappingURL=sender-key-distribution-message.js.map
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeyMessage = void 0;
4
- const curve_1 = require("libsignal/src/curve");
5
- const WAProto_1 = require("../../../WAProto");
6
- const ciphertext_message_1 = require("./ciphertext-message");
7
- class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
1
+ import { calculateSignature, verifySignature } from 'libsignal/src/curve.js';
2
+ import { proto } from '../../../WAProto/index.js';
3
+ import { CiphertextMessage } from './ciphertext-message.js';
4
+ export class SenderKeyMessage extends CiphertextMessage {
8
5
  constructor(keyId, iteration, ciphertext, signatureKey, serialized) {
9
6
  super();
10
7
  this.SIGNATURE_LENGTH = 64;
@@ -12,7 +9,7 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
12
9
  const version = serialized[0];
13
10
  const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
14
11
  const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
15
- const senderKeyMessage = WAProto_1.proto.SenderKeyMessage.decode(message).toJSON();
12
+ const senderKeyMessage = proto.SenderKeyMessage.decode(message).toJSON();
16
13
  this.serialized = serialized;
17
14
  this.messageVersion = (version & 0xff) >> 4;
18
15
  this.keyId = senderKeyMessage.id;
@@ -26,7 +23,7 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
26
23
  else {
27
24
  const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
28
25
  const ciphertextBuffer = Buffer.from(ciphertext);
29
- const message = WAProto_1.proto.SenderKeyMessage.encode(WAProto_1.proto.SenderKeyMessage.create({
26
+ const message = proto.SenderKeyMessage.encode(proto.SenderKeyMessage.create({
30
27
  id: keyId,
31
28
  iteration: iteration,
32
29
  ciphertext: ciphertextBuffer
@@ -52,12 +49,12 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
52
49
  verifySignature(signatureKey) {
53
50
  const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
54
51
  const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
55
- const res = (0, curve_1.verifySignature)(signatureKey, part1, part2);
52
+ const res = verifySignature(signatureKey, part1, part2);
56
53
  if (!res)
57
54
  throw new Error('Invalid signature!');
58
55
  }
59
56
  getSignature(signatureKey, serialized) {
60
- return Buffer.from((0, curve_1.calculateSignature)(signatureKey, serialized));
57
+ return Buffer.from(calculateSignature(signatureKey, serialized));
61
58
  }
62
59
  serialize() {
63
60
  return this.serialized;
@@ -66,4 +63,4 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
66
63
  return 4;
67
64
  }
68
65
  }
69
- exports.SenderKeyMessage = SenderKeyMessage;
66
+ //# sourceMappingURL=sender-key-message.js.map
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeyName = void 0;
4
1
  function isNull(str) {
5
2
  return str === null || str === '';
6
3
  }
@@ -22,7 +19,7 @@ function hashCode(strKey) {
22
19
  }
23
20
  return hash;
24
21
  }
25
- class SenderKeyName {
22
+ export class SenderKeyName {
26
23
  constructor(groupId, sender) {
27
24
  this.groupId = groupId;
28
25
  this.sender = sender;
@@ -48,4 +45,4 @@ class SenderKeyName {
48
45
  return hashCode(this.groupId) ^ hashCode(this.sender.toString());
49
46
  }
50
47
  }
51
- exports.SenderKeyName = SenderKeyName;
48
+ //# sourceMappingURL=sender-key-name.js.map
@@ -1,15 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeyRecord = void 0;
4
- const generics_1 = require("../../Utils/generics");
5
- const sender_key_state_1 = require("./sender-key-state");
6
- class SenderKeyRecord {
1
+ import { BufferJSON } from '../../Utils/generics.js';
2
+ import { SenderKeyState } from './sender-key-state.js';
3
+ export class SenderKeyRecord {
7
4
  constructor(serialized) {
8
5
  this.MAX_STATES = 5;
9
6
  this.senderKeyStates = [];
10
7
  if (serialized) {
11
8
  for (const structure of serialized) {
12
- this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(null, null, null, null, null, null, structure));
9
+ this.senderKeyStates.push(new SenderKeyState(null, null, null, null, null, null, structure));
13
10
  }
14
11
  }
15
12
  }
@@ -23,31 +20,22 @@ class SenderKeyRecord {
23
20
  return this.senderKeyStates.find(state => state.getKeyId() === keyId);
24
21
  }
25
22
  addSenderKeyState(id, iteration, chainKey, signatureKey) {
26
- this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(id, iteration, chainKey, null, signatureKey));
23
+ this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, null, signatureKey));
27
24
  if (this.senderKeyStates.length > this.MAX_STATES) {
28
25
  this.senderKeyStates.shift();
29
26
  }
30
27
  }
31
28
  setSenderKeyState(id, iteration, chainKey, keyPair) {
32
29
  this.senderKeyStates.length = 0;
33
- this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(id, iteration, chainKey, keyPair));
30
+ this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, keyPair));
34
31
  }
35
32
  serialize() {
36
33
  return this.senderKeyStates.map(state => state.getStructure());
37
34
  }
38
35
  static deserialize(data) {
39
- let parsed;
40
- if (typeof data === 'string') {
41
- parsed = JSON.parse(data, generics_1.BufferJSON.reviver);
42
- }
43
- else if (data instanceof Uint8Array) {
44
- const str = Buffer.from(data).toString('utf-8');
45
- parsed = JSON.parse(str, generics_1.BufferJSON.reviver);
46
- }
47
- else {
48
- parsed = data;
49
- }
36
+ const str = Buffer.from(data).toString('utf-8');
37
+ const parsed = JSON.parse(str, BufferJSON.reviver);
50
38
  return new SenderKeyRecord(parsed);
51
39
  }
52
40
  }
53
- exports.SenderKeyRecord = SenderKeyRecord;
41
+ //# sourceMappingURL=sender-key-record.js.map
@@ -1,37 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderKeyState = void 0;
4
- const sender_chain_key_1 = require("./sender-chain-key");
5
- const sender_message_key_1 = require("./sender-message-key");
6
- class SenderKeyState {
1
+ import { SenderChainKey } from './sender-chain-key.js';
2
+ import { SenderMessageKey } from './sender-message-key.js';
3
+ export class SenderKeyState {
7
4
  constructor(id, iteration, chainKey, signatureKeyPair, signatureKeyPublic, signatureKeyPrivate, senderKeyStateStructure) {
8
5
  this.MAX_MESSAGE_KEYS = 2000;
9
6
  if (senderKeyStateStructure) {
10
- this.senderKeyStateStructure = senderKeyStateStructure;
7
+ this.senderKeyStateStructure = {
8
+ ...senderKeyStateStructure,
9
+ senderMessageKeys: Array.isArray(senderKeyStateStructure.senderMessageKeys)
10
+ ? senderKeyStateStructure.senderMessageKeys
11
+ : []
12
+ };
11
13
  }
12
14
  else {
13
15
  if (signatureKeyPair) {
14
16
  signatureKeyPublic = signatureKeyPair.public;
15
17
  signatureKeyPrivate = signatureKeyPair.private;
16
18
  }
17
- chainKey = typeof chainKey === 'string' ? Buffer.from(chainKey, 'base64') : chainKey;
18
- const senderChainKeyStructure = {
19
- iteration: iteration || 0,
20
- seed: chainKey || Buffer.alloc(0)
21
- };
22
- const signingKeyStructure = {
23
- public: typeof signatureKeyPublic === 'string'
24
- ? Buffer.from(signatureKeyPublic, 'base64')
25
- : signatureKeyPublic || Buffer.alloc(0)
26
- };
27
- if (signatureKeyPrivate) {
28
- signingKeyStructure.private =
29
- typeof signatureKeyPrivate === 'string' ? Buffer.from(signatureKeyPrivate, 'base64') : signatureKeyPrivate;
30
- }
31
19
  this.senderKeyStateStructure = {
32
20
  senderKeyId: id || 0,
33
- senderChainKey: senderChainKeyStructure,
34
- senderSigningKey: signingKeyStructure,
21
+ senderChainKey: {
22
+ iteration: iteration || 0,
23
+ seed: Buffer.from(chainKey || [])
24
+ },
25
+ senderSigningKey: {
26
+ public: Buffer.from(signatureKeyPublic || []),
27
+ private: Buffer.from(signatureKeyPrivate || [])
28
+ },
35
29
  senderMessageKeys: []
36
30
  };
37
31
  }
@@ -40,7 +34,7 @@ class SenderKeyState {
40
34
  return this.senderKeyStateStructure.senderKeyId;
41
35
  }
42
36
  getSenderChainKey() {
43
- return new sender_chain_key_1.SenderChainKey(this.senderKeyStateStructure.senderChainKey.iteration, this.senderKeyStateStructure.senderChainKey.seed);
37
+ return new SenderChainKey(this.senderKeyStateStructure.senderChainKey.iteration, this.senderKeyStateStructure.senderChainKey.seed);
44
38
  }
45
39
  setSenderChainKey(chainKey) {
46
40
  this.senderKeyStateStructure.senderChainKey = {
@@ -49,26 +43,17 @@ class SenderKeyState {
49
43
  };
50
44
  }
51
45
  getSigningKeyPublic() {
52
- const publicKey = this.senderKeyStateStructure.senderSigningKey.public;
53
- if (publicKey instanceof Buffer) {
54
- return publicKey;
46
+ const publicKey = Buffer.from(this.senderKeyStateStructure.senderSigningKey.public);
47
+ if (publicKey.length === 32) {
48
+ const fixed = Buffer.alloc(33);
49
+ fixed[0] = 0x05;
50
+ publicKey.copy(fixed, 1);
51
+ return fixed;
55
52
  }
56
- else if (typeof publicKey === 'string') {
57
- return Buffer.from(publicKey, 'base64');
58
- }
59
- return Buffer.from(publicKey || []);
53
+ return publicKey;
60
54
  }
61
55
  getSigningKeyPrivate() {
62
56
  const privateKey = this.senderKeyStateStructure.senderSigningKey.private;
63
- if (!privateKey) {
64
- return undefined;
65
- }
66
- if (privateKey instanceof Buffer) {
67
- return privateKey;
68
- }
69
- else if (typeof privateKey === 'string') {
70
- return Buffer.from(privateKey, 'base64');
71
- }
72
57
  return Buffer.from(privateKey || []);
73
58
  }
74
59
  hasSenderMessageKey(iteration) {
@@ -88,7 +73,7 @@ class SenderKeyState {
88
73
  if (index !== -1) {
89
74
  const messageKey = this.senderKeyStateStructure.senderMessageKeys[index];
90
75
  this.senderKeyStateStructure.senderMessageKeys.splice(index, 1);
91
- return new sender_message_key_1.SenderMessageKey(messageKey.iteration, messageKey.seed);
76
+ return new SenderMessageKey(messageKey.iteration, messageKey.seed);
92
77
  }
93
78
  return null;
94
79
  }
@@ -96,4 +81,4 @@ class SenderKeyState {
96
81
  return this.senderKeyStateStructure;
97
82
  }
98
83
  }
99
- exports.SenderKeyState = SenderKeyState;
84
+ //# sourceMappingURL=sender-key-state.js.map
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SenderMessageKey = void 0;
4
- const crypto_1 = require("libsignal/src/crypto");
5
- class SenderMessageKey {
1
+ import { deriveSecrets } from 'libsignal/src/crypto.js';
2
+ export class SenderMessageKey {
6
3
  constructor(iteration, seed) {
7
- const derivative = (0, crypto_1.deriveSecrets)(seed, Buffer.alloc(32), Buffer.from('WhisperGroup'));
4
+ const derivative = deriveSecrets(seed, Buffer.alloc(32), Buffer.from('WhisperGroup'));
8
5
  const keys = new Uint8Array(32);
9
6
  keys.set(new Uint8Array(derivative[0].slice(16)));
10
7
  keys.set(new Uint8Array(derivative[1].slice(0, 16)), 16);
@@ -26,4 +23,4 @@ class SenderMessageKey {
26
23
  return this.seed;
27
24
  }
28
25
  }
29
- exports.SenderMessageKey = SenderMessageKey;
26
+ //# sourceMappingURL=sender-message-key.js.map