@alannxd/baileys 6.0.6 → 6.0.9

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