@skyzopedia/baileys-mod 5.0.8 → 6.0.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 (210) hide show
  1. package/WAProto/index.js +133384 -57814
  2. package/engine-requirements.js +10 -0
  3. package/lib/Defaults/baileys-version.json +3 -0
  4. package/lib/Defaults/index.d.ts +53 -0
  5. package/lib/Defaults/index.js +141 -117
  6. package/lib/Defaults/phonenumber-mcc.json +223 -0
  7. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  8. package/lib/Signal/Group/ciphertext-message.js +14 -12
  9. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  10. package/lib/Signal/Group/group-session-builder.js +42 -10
  11. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  12. package/lib/Signal/Group/group_cipher.js +87 -75
  13. package/lib/Signal/Group/index.d.ts +11 -0
  14. package/lib/Signal/Group/index.js +57 -13
  15. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  16. package/lib/Signal/Group/keyhelper.js +52 -17
  17. package/lib/Signal/Group/queue-job.d.ts +1 -0
  18. package/lib/Signal/Group/queue-job.js +57 -0
  19. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  20. package/lib/Signal/Group/sender-chain-key.js +33 -27
  21. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  22. package/lib/Signal/Group/sender-key-distribution-message.js +63 -62
  23. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  24. package/lib/Signal/Group/sender-key-message.js +66 -65
  25. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  26. package/lib/Signal/Group/sender-key-name.js +44 -45
  27. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  28. package/lib/Signal/Group/sender-key-record.js +49 -39
  29. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  30. package/lib/Signal/Group/sender-key-state.js +93 -80
  31. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  32. package/lib/Signal/Group/sender-message-key.js +28 -27
  33. package/lib/Signal/libsignal.d.ts +3 -0
  34. package/lib/Signal/libsignal.js +163 -313
  35. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  36. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  37. package/lib/Socket/Client/index.d.ts +3 -0
  38. package/lib/Socket/Client/index.js +19 -4
  39. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  40. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  41. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  42. package/lib/Socket/Client/web-socket-client.js +62 -0
  43. package/lib/Socket/business.d.ts +171 -0
  44. package/lib/Socket/business.js +242 -359
  45. package/lib/Socket/chats.d.ts +267 -0
  46. package/lib/Socket/chats.js +935 -846
  47. package/lib/Socket/dugong.d.ts +254 -0
  48. package/lib/Socket/dugong.js +484 -0
  49. package/lib/Socket/groups.d.ts +115 -0
  50. package/lib/Socket/groups.js +309 -304
  51. package/lib/Socket/index.d.ts +173 -0
  52. package/lib/Socket/index.js +10 -15
  53. package/lib/Socket/messages-recv.d.ts +161 -0
  54. package/lib/Socket/messages-recv.js +1054 -1107
  55. package/lib/Socket/messages-send.d.ts +149 -0
  56. package/lib/Socket/messages-send.js +447 -706
  57. package/lib/Socket/newsletter.d.ts +134 -0
  58. package/lib/Socket/newsletter.js +314 -199
  59. package/lib/Socket/registration.d.ts +267 -0
  60. package/lib/Socket/registration.js +166 -0
  61. package/lib/Socket/socket.d.ts +43 -0
  62. package/lib/Socket/socket.js +650 -777
  63. package/lib/Socket/usync.d.ts +36 -0
  64. package/lib/Socket/usync.js +70 -0
  65. package/lib/Store/index.d.ts +3 -0
  66. package/lib/Store/index.js +10 -6
  67. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  68. package/lib/Store/make-cache-manager-store.js +81 -73
  69. package/lib/Store/make-in-memory-store.d.ts +118 -0
  70. package/lib/Store/make-in-memory-store.js +423 -286
  71. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  72. package/lib/Store/make-ordered-dictionary.js +79 -77
  73. package/lib/Store/object-repository.d.ts +10 -0
  74. package/lib/Store/object-repository.js +26 -24
  75. package/lib/Types/Auth.d.ts +110 -0
  76. package/lib/Types/Auth.js +2 -3
  77. package/lib/Types/Call.d.ts +13 -0
  78. package/lib/Types/Call.js +2 -3
  79. package/lib/Types/Chat.d.ts +102 -0
  80. package/lib/Types/Chat.js +4 -9
  81. package/lib/Types/Contact.d.ts +19 -0
  82. package/lib/Types/Contact.js +2 -3
  83. package/lib/Types/Events.d.ts +157 -0
  84. package/lib/Types/Events.js +2 -3
  85. package/lib/Types/GroupMetadata.d.ts +55 -0
  86. package/lib/Types/GroupMetadata.js +2 -3
  87. package/lib/Types/Label.d.ts +35 -0
  88. package/lib/Types/Label.js +26 -24
  89. package/lib/Types/LabelAssociation.d.ts +29 -0
  90. package/lib/Types/LabelAssociation.js +8 -6
  91. package/lib/Types/Message.d.ts +273 -0
  92. package/lib/Types/Message.js +9 -12
  93. package/lib/Types/Newsletter.d.ts +103 -0
  94. package/lib/Types/Newsletter.js +38 -33
  95. package/lib/Types/Product.d.ts +78 -0
  96. package/lib/Types/Product.js +2 -3
  97. package/lib/Types/Signal.d.ts +57 -0
  98. package/lib/Types/Signal.js +2 -3
  99. package/lib/Types/Socket.d.ts +111 -0
  100. package/lib/Types/Socket.js +2 -4
  101. package/lib/Types/State.d.ts +27 -0
  102. package/lib/Types/State.js +2 -11
  103. package/lib/Types/USync.d.ts +25 -0
  104. package/lib/Types/USync.js +2 -3
  105. package/lib/Types/index.d.ts +57 -0
  106. package/lib/Types/index.js +41 -27
  107. package/lib/Utils/auth-utils.d.ts +18 -0
  108. package/lib/Utils/auth-utils.js +198 -211
  109. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  110. package/lib/Utils/baileys-event-stream.js +61 -42
  111. package/lib/Utils/business.d.ts +22 -0
  112. package/lib/Utils/business.js +214 -213
  113. package/lib/Utils/chat-utils.d.ts +71 -0
  114. package/lib/Utils/chat-utils.js +687 -710
  115. package/lib/Utils/crypto.d.ts +41 -0
  116. package/lib/Utils/crypto.js +133 -112
  117. package/lib/Utils/decode-wa-message.d.ts +19 -0
  118. package/lib/Utils/decode-wa-message.js +183 -252
  119. package/lib/Utils/event-buffer.d.ts +35 -0
  120. package/lib/Utils/event-buffer.js +496 -510
  121. package/lib/Utils/generics.d.ts +92 -0
  122. package/lib/Utils/generics.js +387 -319
  123. package/lib/Utils/history.d.ts +15 -0
  124. package/lib/Utils/history.js +92 -83
  125. package/lib/Utils/index.d.ts +17 -0
  126. package/lib/Utils/index.js +33 -21
  127. package/lib/Utils/link-preview.d.ts +21 -0
  128. package/lib/Utils/link-preview.js +83 -71
  129. package/lib/Utils/logger.d.ts +4 -0
  130. package/lib/Utils/logger.js +7 -5
  131. package/lib/Utils/lt-hash.d.ts +12 -0
  132. package/lib/Utils/lt-hash.js +46 -40
  133. package/lib/Utils/make-mutex.d.ts +7 -0
  134. package/lib/Utils/make-mutex.js +41 -34
  135. package/lib/Utils/messages-media.d.ts +116 -0
  136. package/lib/Utils/messages-media.js +768 -550
  137. package/lib/Utils/messages.d.ts +77 -0
  138. package/lib/Utils/messages.js +263 -362
  139. package/lib/Utils/noise-handler.d.ts +21 -0
  140. package/lib/Utils/noise-handler.js +149 -138
  141. package/lib/Utils/process-message.d.ts +41 -0
  142. package/lib/Utils/process-message.js +303 -323
  143. package/lib/Utils/signal.d.ts +32 -0
  144. package/lib/Utils/signal.js +141 -149
  145. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  146. package/lib/Utils/use-multi-file-auth-state.js +103 -95
  147. package/lib/Utils/validate-connection.d.ts +11 -0
  148. package/lib/Utils/validate-connection.js +220 -183
  149. package/lib/WABinary/constants.d.ts +30 -0
  150. package/lib/WABinary/constants.js +35 -1298
  151. package/lib/WABinary/decode.d.ts +7 -0
  152. package/lib/WABinary/decode.js +249 -237
  153. package/lib/WABinary/encode.d.ts +3 -0
  154. package/lib/WABinary/encode.js +260 -213
  155. package/lib/WABinary/generic-utils.d.ts +17 -0
  156. package/lib/WABinary/generic-utils.js +65 -56
  157. package/lib/WABinary/index.d.ts +5 -0
  158. package/lib/WABinary/index.js +21 -7
  159. package/lib/WABinary/jid-utils.d.ts +31 -0
  160. package/lib/WABinary/jid-utils.js +58 -89
  161. package/lib/WABinary/types.d.ts +18 -0
  162. package/lib/WABinary/types.js +2 -3
  163. package/lib/WAM/BinaryInfo.d.ts +17 -0
  164. package/lib/WAM/BinaryInfo.js +12 -10
  165. package/lib/WAM/constants.d.ts +38 -0
  166. package/lib/WAM/constants.js +15348 -22851
  167. package/lib/WAM/encode.d.ts +3 -0
  168. package/lib/WAM/encode.js +136 -135
  169. package/lib/WAM/index.d.ts +3 -0
  170. package/lib/WAM/index.js +19 -5
  171. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  172. package/lib/WAUSync/Protocols/USyncContactProtocol.js +30 -28
  173. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  174. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +53 -49
  175. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  176. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +28 -27
  177. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  178. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -36
  179. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  180. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  181. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  182. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +20 -26
  183. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  184. package/lib/WAUSync/Protocols/index.js +20 -6
  185. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  186. package/lib/WAUSync/USyncQuery.js +85 -86
  187. package/lib/WAUSync/USyncUser.d.ts +12 -0
  188. package/lib/WAUSync/USyncUser.js +25 -23
  189. package/lib/WAUSync/index.d.ts +3 -0
  190. package/lib/WAUSync/index.js +19 -5
  191. package/lib/index.d.ts +12 -0
  192. package/lib/index.js +36 -24
  193. package/package.json +106 -98
  194. package/LICENSE +0 -21
  195. package/WAProto/WAProto.proto +0 -5311
  196. package/lib/KeyDB/BinarySearch.js +0 -20
  197. package/lib/KeyDB/KeyedDB.js +0 -167
  198. package/lib/KeyDB/index.js +0 -4
  199. package/lib/Signal/lid-mapping.js +0 -155
  200. package/lib/Socket/Client/types.js +0 -13
  201. package/lib/Socket/Client/websocket.js +0 -52
  202. package/lib/Socket/Client/websocket.js.bak +0 -53
  203. package/lib/Socket/communities.js +0 -413
  204. package/lib/Socket/mex.js +0 -45
  205. package/lib/Types/Bussines.js +0 -3
  206. package/lib/Types/Newsletter.js.bak +0 -33
  207. package/lib/Utils/browser-utils.js +0 -25
  208. package/lib/Utils/message-retry-manager.js +0 -113
  209. package/lib/Utils/messages.js.bak +0 -907
  210. package/lib/Utils/pre-key-manager.js +0 -85
@@ -1,65 +1,66 @@
1
- //=======================================================//
2
- import { CiphertextMessage } from "./ciphertext-message.js";
3
- import { proto } from "../../../WAProto/index.js";
4
- //=======================================================//
5
- export class SenderKeyDistributionMessage extends CiphertextMessage {
6
- constructor(id, iteration, chainKey, signatureKey, serialized) {
7
- super();
8
- if (serialized) {
9
- try {
10
- const message = serialized.slice(1);
11
- const distributionMessage = proto.SenderKeyDistributionMessage.decode(message).toJSON();
12
- this.serialized = serialized;
13
- this.id = distributionMessage.id;
14
- this.iteration = distributionMessage.iteration;
15
- this.chainKey =
16
- typeof distributionMessage.chainKey === "string"
17
- ? Buffer.from(distributionMessage.chainKey, "base64")
18
- : distributionMessage.chainKey;
19
- this.signatureKey =
20
- typeof distributionMessage.signingKey === "string"
21
- ? Buffer.from(distributionMessage.signingKey, "base64")
22
- : distributionMessage.signingKey;
23
- }
24
- catch (e) {
25
- throw new Error(String(e));
26
- }
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 {
7
+ constructor(id, iteration, chainKey, signatureKey, serialized) {
8
+ super();
9
+ if (serialized) {
10
+ try {
11
+ const message = serialized.slice(1);
12
+ const distributionMessage = WAProto_1.proto.SenderKeyDistributionMessage.decode(message).toJSON();
13
+ this.serialized = serialized;
14
+ this.id = distributionMessage.id;
15
+ this.iteration = distributionMessage.iteration;
16
+ this.chainKey =
17
+ typeof distributionMessage.chainKey === 'string'
18
+ ? Buffer.from(distributionMessage.chainKey, 'base64')
19
+ : distributionMessage.chainKey;
20
+ this.signatureKey =
21
+ typeof distributionMessage.signingKey === 'string'
22
+ ? Buffer.from(distributionMessage.signingKey, 'base64')
23
+ : distributionMessage.signingKey;
24
+ }
25
+ catch (e) {
26
+ throw new Error(String(e));
27
+ }
28
+ }
29
+ else {
30
+ const version = this.intsToByteHighAndLow(this.CURRENT_VERSION, this.CURRENT_VERSION);
31
+ this.id = id;
32
+ this.iteration = iteration;
33
+ this.chainKey = chainKey;
34
+ this.signatureKey = signatureKey;
35
+ const message = WAProto_1.proto.SenderKeyDistributionMessage.encode(WAProto_1.proto.SenderKeyDistributionMessage.create({
36
+ id,
37
+ iteration,
38
+ chainKey,
39
+ signingKey: this.signatureKey
40
+ })).finish();
41
+ this.serialized = Buffer.concat([Buffer.from([version]), message]);
42
+ }
27
43
  }
28
- else {
29
- const version = this.intsToByteHighAndLow(this.CURRENT_VERSION, this.CURRENT_VERSION);
30
- this.id = id;
31
- this.iteration = iteration;
32
- this.chainKey = chainKey;
33
- this.signatureKey = signatureKey;
34
- const message = proto.SenderKeyDistributionMessage.encode(proto.SenderKeyDistributionMessage.create({
35
- id,
36
- iteration,
37
- chainKey,
38
- signingKey: this.signatureKey
39
- })).finish();
40
- this.serialized = Buffer.concat([Buffer.from([version]), message]);
44
+ intsToByteHighAndLow(highValue, lowValue) {
45
+ return (((highValue << 4) | lowValue) & 0xff) % 256;
46
+ }
47
+ serialize() {
48
+ return this.serialized;
49
+ }
50
+ getType() {
51
+ return this.SENDERKEY_DISTRIBUTION_TYPE;
52
+ }
53
+ getIteration() {
54
+ return this.iteration;
55
+ }
56
+ getChainKey() {
57
+ return typeof this.chainKey === 'string' ? Buffer.from(this.chainKey, 'base64') : this.chainKey;
58
+ }
59
+ getSignatureKey() {
60
+ return typeof this.signatureKey === 'string' ? Buffer.from(this.signatureKey, 'base64') : this.signatureKey;
61
+ }
62
+ getId() {
63
+ return this.id;
41
64
  }
42
- }
43
- intsToByteHighAndLow(highValue, lowValue) {
44
- return (((highValue << 4) | lowValue) & 0xff) % 256;
45
- }
46
- serialize() {
47
- return this.serialized;
48
- }
49
- getType() {
50
- return this.SENDERKEY_DISTRIBUTION_TYPE;
51
- }
52
- getIteration() {
53
- return this.iteration;
54
- }
55
- getChainKey() {
56
- return this.chainKey;
57
- }
58
- getSignatureKey() {
59
- return this.signatureKey;
60
- }
61
- getId() {
62
- return this.id;
63
- }
64
65
  }
65
- //=======================================================//
66
+ exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
@@ -0,0 +1,18 @@
1
+ import { CiphertextMessage } from './ciphertext-message';
2
+ export declare class SenderKeyMessage extends CiphertextMessage {
3
+ private readonly SIGNATURE_LENGTH;
4
+ private readonly messageVersion;
5
+ private readonly keyId;
6
+ private readonly iteration;
7
+ private readonly ciphertext;
8
+ private readonly signature;
9
+ private readonly serialized;
10
+ constructor(keyId?: number | null, iteration?: number | null, ciphertext?: Uint8Array | null, signatureKey?: Uint8Array | null, serialized?: Uint8Array | null);
11
+ getKeyId(): number;
12
+ getIteration(): number;
13
+ getCipherText(): Uint8Array;
14
+ verifySignature(signatureKey: Uint8Array): void;
15
+ private getSignature;
16
+ serialize(): Uint8Array;
17
+ getType(): number;
18
+ }
@@ -1,68 +1,69 @@
1
- //=======================================================//
2
- import { calculateSignature, verifySignature } from "libsignal-xeuka/src/curve.js";
3
- import { CiphertextMessage } from "./ciphertext-message.js";
4
- import { proto } from "../../../WAProto/index.js";
5
- //=======================================================//
6
- export class SenderKeyMessage extends CiphertextMessage {
7
- constructor(keyId, iteration, ciphertext, signatureKey, serialized) {
8
- super();
9
- this.SIGNATURE_LENGTH = 64;
10
- if (serialized) {
11
- const version = serialized[0];
12
- const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
13
- const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
14
- const senderKeyMessage = proto.SenderKeyMessage.decode(message).toJSON();
15
- this.serialized = serialized;
16
- this.messageVersion = (version & 0xff) >> 4;
17
- this.keyId = senderKeyMessage.id;
18
- this.iteration = senderKeyMessage.iteration;
19
- this.ciphertext =
20
- typeof senderKeyMessage.ciphertext === "string"
21
- ? Buffer.from(senderKeyMessage.ciphertext, "base64")
22
- : senderKeyMessage.ciphertext;
23
- this.signature = signature;
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 {
8
+ constructor(keyId, iteration, ciphertext, signatureKey, serialized) {
9
+ super();
10
+ this.SIGNATURE_LENGTH = 64;
11
+ if (serialized) {
12
+ const version = serialized[0];
13
+ const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
14
+ const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
15
+ const senderKeyMessage = WAProto_1.proto.SenderKeyMessage.decode(message).toJSON();
16
+ this.serialized = serialized;
17
+ this.messageVersion = (version & 0xff) >> 4;
18
+ this.keyId = senderKeyMessage.id;
19
+ this.iteration = senderKeyMessage.iteration;
20
+ this.ciphertext =
21
+ typeof senderKeyMessage.ciphertext === 'string'
22
+ ? Buffer.from(senderKeyMessage.ciphertext, 'base64')
23
+ : senderKeyMessage.ciphertext;
24
+ this.signature = signature;
25
+ }
26
+ else {
27
+ const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
28
+ const ciphertextBuffer = Buffer.from(ciphertext);
29
+ const message = WAProto_1.proto.SenderKeyMessage.encode(WAProto_1.proto.SenderKeyMessage.create({
30
+ id: keyId,
31
+ iteration: iteration,
32
+ ciphertext: ciphertextBuffer
33
+ })).finish();
34
+ const signature = this.getSignature(signatureKey, Buffer.concat([Buffer.from([version]), message]));
35
+ this.serialized = Buffer.concat([Buffer.from([version]), message, Buffer.from(signature)]);
36
+ this.messageVersion = this.CURRENT_VERSION;
37
+ this.keyId = keyId;
38
+ this.iteration = iteration;
39
+ this.ciphertext = ciphertextBuffer;
40
+ this.signature = signature;
41
+ }
24
42
  }
25
- else {
26
- const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
27
- const ciphertextBuffer = Buffer.from(ciphertext);
28
- const message = proto.SenderKeyMessage.encode(proto.SenderKeyMessage.create({
29
- id: keyId,
30
- iteration: iteration,
31
- ciphertext: ciphertextBuffer
32
- })).finish();
33
- const signature = this.getSignature(signatureKey, Buffer.concat([Buffer.from([version]), message]));
34
- this.serialized = Buffer.concat([Buffer.from([version]), message, Buffer.from(signature)]);
35
- this.messageVersion = this.CURRENT_VERSION;
36
- this.keyId = keyId;
37
- this.iteration = iteration;
38
- this.ciphertext = ciphertextBuffer;
39
- this.signature = signature;
43
+ getKeyId() {
44
+ return this.keyId;
45
+ }
46
+ getIteration() {
47
+ return this.iteration;
48
+ }
49
+ getCipherText() {
50
+ return this.ciphertext;
51
+ }
52
+ verifySignature(signatureKey) {
53
+ const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
54
+ const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
55
+ const res = (0, curve_1.verifySignature)(signatureKey, part1, part2);
56
+ if (!res)
57
+ throw new Error('Invalid signature!');
58
+ }
59
+ getSignature(signatureKey, serialized) {
60
+ return Buffer.from((0, curve_1.calculateSignature)(signatureKey, serialized));
61
+ }
62
+ serialize() {
63
+ return this.serialized;
64
+ }
65
+ getType() {
66
+ return 4;
40
67
  }
41
- }
42
- getKeyId() {
43
- return this.keyId;
44
- }
45
- getIteration() {
46
- return this.iteration;
47
- }
48
- getCipherText() {
49
- return this.ciphertext;
50
- }
51
- verifySignature(signatureKey) {
52
- const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
53
- const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
54
- const res = verifySignature(signatureKey, part1, part2);
55
- if (!res)
56
- throw new Error("Invalid signature!");
57
- }
58
- getSignature(signatureKey, serialized) {
59
- return Buffer.from(calculateSignature(signatureKey, serialized));
60
- }
61
- serialize() {
62
- return this.serialized;
63
- }
64
- getType() {
65
- return 4;
66
- }
67
68
  }
68
- //=======================================================//
69
+ exports.SenderKeyMessage = SenderKeyMessage;
@@ -0,0 +1,17 @@
1
+ interface Sender {
2
+ id: string;
3
+ deviceId: number;
4
+ toString(): string;
5
+ }
6
+ export declare class SenderKeyName {
7
+ private readonly groupId;
8
+ private readonly sender;
9
+ constructor(groupId: string, sender: Sender);
10
+ getGroupId(): string;
11
+ getSender(): Sender;
12
+ serialize(): string;
13
+ toString(): string;
14
+ equals(other: SenderKeyName | null): boolean;
15
+ hashCode(): number;
16
+ }
17
+ export {};
@@ -1,52 +1,51 @@
1
- //=======================================================//
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SenderKeyName = void 0;
2
4
  function isNull(str) {
3
- return str === null || str === "";
5
+ return str === null || str === '';
4
6
  }
5
- //=======================================================//
6
7
  function intValue(num) {
7
- const MAX_VALUE = 0x7fffffff;
8
- const MIN_VALUE = -0x80000000;
9
- if (num > MAX_VALUE || num < MIN_VALUE) {
10
- return num & 0xffffffff;
11
- }
12
- return num;
8
+ const MAX_VALUE = 0x7fffffff;
9
+ const MIN_VALUE = -0x80000000;
10
+ if (num > MAX_VALUE || num < MIN_VALUE) {
11
+ return num & 0xffffffff;
12
+ }
13
+ return num;
13
14
  }
14
- //=======================================================//
15
15
  function hashCode(strKey) {
16
- let hash = 0;
17
- if (!isNull(strKey)) {
18
- for (let i = 0; i < strKey.length; i++) {
19
- hash = hash * 31 + strKey.charCodeAt(i);
20
- hash = intValue(hash);
21
- }
22
- }
23
- return hash;
16
+ let hash = 0;
17
+ if (!isNull(strKey)) {
18
+ for (let i = 0; i < strKey.length; i++) {
19
+ hash = hash * 31 + strKey.charCodeAt(i);
20
+ hash = intValue(hash);
21
+ }
22
+ }
23
+ return hash;
24
24
  }
25
- //=======================================================//
26
- export class SenderKeyName {
27
- constructor(groupId, sender) {
28
- this.groupId = groupId;
29
- this.sender = sender;
30
- }
31
- getGroupId() {
32
- return this.groupId;
33
- }
34
- getSender() {
35
- return this.sender;
36
- }
37
- serialize() {
38
- return `${this.groupId}::${this.sender.id}::${this.sender.deviceId}`;
39
- }
40
- toString() {
41
- return this.serialize();
42
- }
43
- equals(other) {
44
- if (other === null)
45
- return false;
46
- return this.groupId === other.groupId && this.sender.toString() === other.sender.toString();
47
- }
48
- hashCode() {
49
- return hashCode(this.groupId) ^ hashCode(this.sender.toString());
50
- }
25
+ class SenderKeyName {
26
+ constructor(groupId, sender) {
27
+ this.groupId = groupId;
28
+ this.sender = sender;
29
+ }
30
+ getGroupId() {
31
+ return this.groupId;
32
+ }
33
+ getSender() {
34
+ return this.sender;
35
+ }
36
+ serialize() {
37
+ return `${this.groupId}::${this.sender.id}::${this.sender.deviceId}`;
38
+ }
39
+ toString() {
40
+ return this.serialize();
41
+ }
42
+ equals(other) {
43
+ if (other === null)
44
+ return false;
45
+ return this.groupId === other.groupId && this.sender.toString() === other.sender.toString();
46
+ }
47
+ hashCode() {
48
+ return hashCode(this.groupId) ^ hashCode(this.sender.toString());
49
+ }
51
50
  }
52
- //=======================================================//
51
+ exports.SenderKeyName = SenderKeyName;
@@ -0,0 +1,30 @@
1
+ import { SenderKeyState } from './sender-key-state';
2
+ export interface SenderKeyStateStructure {
3
+ senderKeyId: number;
4
+ senderChainKey: {
5
+ iteration: number;
6
+ seed: Uint8Array;
7
+ };
8
+ senderSigningKey: {
9
+ public: Uint8Array;
10
+ private?: Uint8Array;
11
+ };
12
+ senderMessageKeys: Array<{
13
+ iteration: number;
14
+ seed: Uint8Array;
15
+ }>;
16
+ }
17
+ export declare class SenderKeyRecord {
18
+ private readonly MAX_STATES;
19
+ private readonly senderKeyStates;
20
+ constructor(serialized?: SenderKeyStateStructure[]);
21
+ isEmpty(): boolean;
22
+ getSenderKeyState(keyId?: number): SenderKeyState | undefined;
23
+ addSenderKeyState(id: number, iteration: number, chainKey: Uint8Array, signatureKey: Uint8Array): void;
24
+ setSenderKeyState(id: number, iteration: number, chainKey: Uint8Array, keyPair: {
25
+ public: Uint8Array;
26
+ private: Uint8Array;
27
+ }): void;
28
+ serialize(): SenderKeyStateStructure[];
29
+ static deserialize(data: Uint8Array | string | SenderKeyStateStructure[]): SenderKeyRecord;
30
+ }
@@ -1,43 +1,53 @@
1
- //=======================================================//
2
- import { SenderKeyState } from "./sender-key-state.js";
3
- import { BufferJSON } from "../../Utils/generics.js";
4
- //=======================================================//
5
- export class SenderKeyRecord {
6
- constructor(serialized) {
7
- this.MAX_STATES = 5;
8
- this.senderKeyStates = [];
9
- if (serialized) {
10
- for (const structure of serialized) {
11
- this.senderKeyStates.push(new SenderKeyState(null, null, null, null, null, null, structure));
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 {
7
+ constructor(serialized) {
8
+ this.MAX_STATES = 5;
9
+ this.senderKeyStates = [];
10
+ if (serialized) {
11
+ for (const structure of serialized) {
12
+ this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(null, null, null, null, null, null, structure));
13
+ }
14
+ }
13
15
  }
14
- }
15
- isEmpty() {
16
- return this.senderKeyStates.length === 0;
17
- }
18
- getSenderKeyState(keyId) {
19
- if (keyId === undefined && this.senderKeyStates.length) {
20
- return this.senderKeyStates[this.senderKeyStates.length - 1];
16
+ isEmpty() {
17
+ return this.senderKeyStates.length === 0;
21
18
  }
22
- return this.senderKeyStates.find(state => state.getKeyId() === keyId);
23
- }
24
- addSenderKeyState(id, iteration, chainKey, signatureKey) {
25
- this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, null, signatureKey));
26
- if (this.senderKeyStates.length > this.MAX_STATES) {
27
- this.senderKeyStates.shift();
19
+ getSenderKeyState(keyId) {
20
+ if (keyId === undefined && this.senderKeyStates.length) {
21
+ return this.senderKeyStates[this.senderKeyStates.length - 1];
22
+ }
23
+ return this.senderKeyStates.find(state => state.getKeyId() === keyId);
24
+ }
25
+ addSenderKeyState(id, iteration, chainKey, signatureKey) {
26
+ this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(id, iteration, chainKey, null, signatureKey));
27
+ if (this.senderKeyStates.length > this.MAX_STATES) {
28
+ this.senderKeyStates.shift();
29
+ }
30
+ }
31
+ setSenderKeyState(id, iteration, chainKey, keyPair) {
32
+ this.senderKeyStates.length = 0;
33
+ this.senderKeyStates.push(new sender_key_state_1.SenderKeyState(id, iteration, chainKey, keyPair));
34
+ }
35
+ serialize() {
36
+ return this.senderKeyStates.map(state => state.getStructure());
37
+ }
38
+ 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
+ }
50
+ return new SenderKeyRecord(parsed);
28
51
  }
29
- }
30
- setSenderKeyState(id, iteration, chainKey, keyPair) {
31
- this.senderKeyStates.length = 0;
32
- this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, keyPair));
33
- }
34
- serialize() {
35
- return this.senderKeyStates.map(state => state.getStructure());
36
- }
37
- static deserialize(data) {
38
- const str = Buffer.from(data).toString("utf-8");
39
- const parsed = JSON.parse(str, BufferJSON.reviver);
40
- return new SenderKeyRecord(parsed);
41
- }
42
52
  }
43
- //=======================================================//
53
+ exports.SenderKeyRecord = SenderKeyRecord;
@@ -0,0 +1,38 @@
1
+ import { SenderChainKey } from './sender-chain-key';
2
+ import { SenderMessageKey } from './sender-message-key';
3
+ interface SenderChainKeyStructure {
4
+ iteration: number;
5
+ seed: Uint8Array;
6
+ }
7
+ interface SenderSigningKeyStructure {
8
+ public: Uint8Array;
9
+ private?: Uint8Array;
10
+ }
11
+ interface SenderMessageKeyStructure {
12
+ iteration: number;
13
+ seed: Uint8Array;
14
+ }
15
+ interface SenderKeyStateStructure {
16
+ senderKeyId: number;
17
+ senderChainKey: SenderChainKeyStructure;
18
+ senderSigningKey: SenderSigningKeyStructure;
19
+ senderMessageKeys: SenderMessageKeyStructure[];
20
+ }
21
+ export declare class SenderKeyState {
22
+ private readonly MAX_MESSAGE_KEYS;
23
+ private readonly senderKeyStateStructure;
24
+ constructor(id?: number | null, iteration?: number | null, chainKey?: Uint8Array | null, signatureKeyPair?: {
25
+ public: Uint8Array;
26
+ private: Uint8Array;
27
+ } | null, signatureKeyPublic?: Uint8Array | null, signatureKeyPrivate?: Uint8Array | null, senderKeyStateStructure?: SenderKeyStateStructure | null);
28
+ getKeyId(): number;
29
+ getSenderChainKey(): SenderChainKey;
30
+ setSenderChainKey(chainKey: SenderChainKey): void;
31
+ getSigningKeyPublic(): Buffer;
32
+ getSigningKeyPrivate(): Buffer | undefined;
33
+ hasSenderMessageKey(iteration: number): boolean;
34
+ addSenderMessageKey(senderMessageKey: SenderMessageKey): void;
35
+ removeSenderMessageKey(iteration: number): SenderMessageKey | null;
36
+ getStructure(): SenderKeyStateStructure;
37
+ }
38
+ export {};