@badzz88/baileys 8.3.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 (213) hide show
  1. package/README.md +27 -27
  2. package/WAProto/GenerateStatics.sh +3 -0
  3. package/WAProto/WAProto.proto +6902 -0
  4. package/WAProto/fix-import.js +29 -0
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +79257 -0
  7. package/WAProto/index.js +204305 -131020
  8. package/engine-requirements.js +3 -4
  9. package/lib/Defaults/baileys-version.json +1 -1
  10. package/lib/Defaults/index.js +119 -136
  11. package/lib/Signal/Group/ciphertext-message.js +2 -5
  12. package/lib/Signal/Group/group-session-builder.js +7 -41
  13. package/lib/Signal/Group/group_cipher.js +37 -51
  14. package/lib/Signal/Group/index.js +12 -57
  15. package/lib/Signal/Group/keyhelper.js +7 -44
  16. package/lib/Signal/Group/sender-chain-key.js +7 -15
  17. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  18. package/lib/Signal/Group/sender-key-message.js +9 -12
  19. package/lib/Signal/Group/sender-key-name.js +2 -5
  20. package/lib/Signal/Group/sender-key-record.js +9 -21
  21. package/lib/Signal/Group/sender-key-state.js +27 -42
  22. package/lib/Signal/Group/sender-message-key.js +4 -7
  23. package/lib/Signal/libsignal.js +347 -90
  24. package/lib/Signal/lid-mapping.js +277 -0
  25. package/lib/Socket/Client/index.js +3 -19
  26. package/lib/Socket/Client/types.js +11 -0
  27. package/lib/Socket/Client/websocket.js +54 -0
  28. package/lib/Socket/business.js +162 -43
  29. package/lib/Socket/chats.js +627 -404
  30. package/lib/Socket/communities.js +431 -0
  31. package/lib/Socket/community.js +392 -0
  32. package/lib/Socket/dugong.js +161 -8
  33. package/lib/Socket/groups.js +154 -160
  34. package/lib/Socket/index.js +11 -10
  35. package/lib/Socket/luxu.js +387 -0
  36. package/lib/Socket/messages-recv.js +1421 -615
  37. package/lib/Socket/messages-send.js +1150 -624
  38. package/lib/Socket/mex.js +42 -0
  39. package/lib/Socket/newsletter.js +139 -314
  40. package/lib/Socket/registration.js +2 -1
  41. package/lib/Socket/socket.js +544 -242
  42. package/lib/Store/index.js +10 -10
  43. package/lib/Store/keyed-db.js +108 -0
  44. package/lib/Store/make-cache-manager-store.js +43 -41
  45. package/lib/Store/make-in-memory-store.js +112 -341
  46. package/lib/Store/make-ordered-dictionary.js +14 -20
  47. package/lib/Store/object-repository.js +11 -6
  48. package/lib/Types/Auth.js +2 -2
  49. package/lib/Types/Bussines.js +2 -0
  50. package/lib/Types/Call.js +2 -2
  51. package/lib/Types/Chat.js +8 -4
  52. package/lib/Types/Contact.js +2 -2
  53. package/lib/Types/Events.js +2 -2
  54. package/lib/Types/GroupMetadata.js +2 -2
  55. package/lib/Types/Label.js +3 -5
  56. package/lib/Types/LabelAssociation.js +3 -5
  57. package/lib/Types/Message.js +11 -9
  58. package/lib/Types/Mex.js +37 -0
  59. package/lib/Types/Product.js +2 -2
  60. package/lib/Types/Signal.js +2 -2
  61. package/lib/Types/Socket.js +3 -2
  62. package/lib/Types/State.js +56 -2
  63. package/lib/Types/USync.js +2 -2
  64. package/lib/Types/index.js +15 -31
  65. package/lib/Utils/auth-utils.js +239 -143
  66. package/lib/Utils/browser-utils.js +48 -0
  67. package/lib/Utils/business.js +66 -69
  68. package/lib/Utils/chat-utils.js +396 -253
  69. package/lib/Utils/companion-reg-client-utils.js +35 -0
  70. package/lib/Utils/crypto.js +57 -90
  71. package/lib/Utils/decode-wa-message.js +236 -84
  72. package/lib/Utils/event-buffer.js +185 -77
  73. package/lib/Utils/generics.js +188 -283
  74. package/lib/Utils/history.js +93 -55
  75. package/lib/Utils/identity-change-handler.js +50 -0
  76. package/lib/Utils/index.js +23 -33
  77. package/lib/Utils/link-preview.js +16 -24
  78. package/lib/Utils/logger.js +3 -7
  79. package/lib/Utils/lt-hash.js +3 -46
  80. package/lib/Utils/make-mutex.js +24 -34
  81. package/lib/Utils/message-composer.js +273 -0
  82. package/lib/Utils/message-retry-manager.js +265 -0
  83. package/lib/Utils/messages-media.js +451 -482
  84. package/lib/Utils/messages.js +796 -359
  85. package/lib/Utils/noise-handler.js +145 -99
  86. package/lib/Utils/offline-node-processor.js +40 -0
  87. package/lib/Utils/pre-key-manager.js +106 -0
  88. package/lib/Utils/process-message.js +459 -150
  89. package/lib/Utils/reporting-utils.js +258 -0
  90. package/lib/Utils/signal.js +120 -72
  91. package/lib/Utils/stanza-ack.js +38 -0
  92. package/lib/Utils/sync-action-utils.js +49 -0
  93. package/lib/Utils/tc-token-utils.js +163 -0
  94. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  95. package/lib/Utils/validate-connection.js +73 -99
  96. package/lib/WABinary/constants.js +1281 -20
  97. package/lib/WABinary/decode.js +52 -42
  98. package/lib/WABinary/encode.js +110 -155
  99. package/lib/WABinary/generic-utils.js +55 -49
  100. package/lib/WABinary/index.js +6 -21
  101. package/lib/WABinary/jid-utils.js +76 -40
  102. package/lib/WABinary/types.js +2 -2
  103. package/lib/WAM/BinaryInfo.js +2 -5
  104. package/lib/WAM/constants.js +19071 -11568
  105. package/lib/WAM/encode.js +17 -22
  106. package/lib/WAM/index.js +4 -19
  107. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  108. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  109. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  110. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  111. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  112. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  113. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  114. package/lib/WAUSync/Protocols/index.js +6 -20
  115. package/lib/WAUSync/USyncQuery.js +44 -35
  116. package/lib/WAUSync/USyncUser.js +10 -5
  117. package/lib/WAUSync/index.js +4 -19
  118. package/lib/index.js +39 -53
  119. package/package.json +134 -101
  120. package/lib/Defaults/index.d.ts +0 -53
  121. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  122. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  123. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  124. package/lib/Signal/Group/index.d.ts +0 -11
  125. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  126. package/lib/Signal/Group/queue-job.d.ts +0 -1
  127. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  128. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  129. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  130. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  131. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  132. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  133. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  134. package/lib/Signal/libsignal.d.ts +0 -3
  135. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  136. package/lib/Socket/Client/index.d.ts +0 -3
  137. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  138. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  139. package/lib/Socket/business.d.ts +0 -171
  140. package/lib/Socket/chats.d.ts +0 -267
  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/messages-recv.d.ts +0 -161
  145. package/lib/Socket/messages-send.d.ts +0 -149
  146. package/lib/Socket/newsletter.d.ts +0 -134
  147. package/lib/Socket/registration.d.ts +0 -267
  148. package/lib/Socket/socket.d.ts +0 -43
  149. package/lib/Socket/usync.d.ts +0 -36
  150. package/lib/Store/index.d.ts +0 -3
  151. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  152. package/lib/Store/make-in-memory-store.d.ts +0 -118
  153. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  154. package/lib/Store/object-repository.d.ts +0 -10
  155. package/lib/Types/Auth.d.ts +0 -110
  156. package/lib/Types/Call.d.ts +0 -13
  157. package/lib/Types/Chat.d.ts +0 -102
  158. package/lib/Types/Contact.d.ts +0 -19
  159. package/lib/Types/Events.d.ts +0 -157
  160. package/lib/Types/GroupMetadata.d.ts +0 -55
  161. package/lib/Types/Label.d.ts +0 -35
  162. package/lib/Types/LabelAssociation.d.ts +0 -29
  163. package/lib/Types/Message.d.ts +0 -273
  164. package/lib/Types/Newsletter.d.ts +0 -103
  165. package/lib/Types/Product.d.ts +0 -78
  166. package/lib/Types/Signal.d.ts +0 -57
  167. package/lib/Types/Socket.d.ts +0 -111
  168. package/lib/Types/State.d.ts +0 -27
  169. package/lib/Types/USync.d.ts +0 -25
  170. package/lib/Types/index.d.ts +0 -57
  171. package/lib/Utils/auth-utils.d.ts +0 -18
  172. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  173. package/lib/Utils/business.d.ts +0 -22
  174. package/lib/Utils/chat-utils.d.ts +0 -71
  175. package/lib/Utils/crypto.d.ts +0 -41
  176. package/lib/Utils/decode-wa-message.d.ts +0 -19
  177. package/lib/Utils/event-buffer.d.ts +0 -35
  178. package/lib/Utils/generics.d.ts +0 -92
  179. package/lib/Utils/history.d.ts +0 -15
  180. package/lib/Utils/index.d.ts +0 -17
  181. package/lib/Utils/link-preview.d.ts +0 -21
  182. package/lib/Utils/logger.d.ts +0 -4
  183. package/lib/Utils/lt-hash.d.ts +0 -12
  184. package/lib/Utils/make-mutex.d.ts +0 -7
  185. package/lib/Utils/messages-media.d.ts +0 -116
  186. package/lib/Utils/messages.d.ts +0 -77
  187. package/lib/Utils/noise-handler.d.ts +0 -21
  188. package/lib/Utils/process-message.d.ts +0 -41
  189. package/lib/Utils/signal.d.ts +0 -32
  190. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  191. package/lib/Utils/validate-connection.d.ts +0 -11
  192. package/lib/WABinary/constants.d.ts +0 -30
  193. package/lib/WABinary/decode.d.ts +0 -7
  194. package/lib/WABinary/encode.d.ts +0 -3
  195. package/lib/WABinary/generic-utils.d.ts +0 -17
  196. package/lib/WABinary/index.d.ts +0 -5
  197. package/lib/WABinary/jid-utils.d.ts +0 -31
  198. package/lib/WABinary/types.d.ts +0 -18
  199. package/lib/WAM/BinaryInfo.d.ts +0 -17
  200. package/lib/WAM/constants.d.ts +0 -38
  201. package/lib/WAM/encode.d.ts +0 -3
  202. package/lib/WAM/index.d.ts +0 -3
  203. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  204. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  205. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  206. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  208. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  209. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  210. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  211. package/lib/WAUSync/USyncUser.d.ts +0 -12
  212. package/lib/WAUSync/index.d.ts +0 -3
  213. 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