@skyzopedia/baileys-mod 5.0.7 → 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
@@ -0,0 +1,41 @@
1
+ /// <reference types="node" />
2
+ import { KeyPair } from '../Types';
3
+ /** prefix version byte to the pub keys, required for some curve crypto functions */
4
+ export declare const generateSignalPubKey: (pubKey: Uint8Array | Buffer) => Uint8Array | Buffer;
5
+ export declare const Curve: {
6
+ generateKeyPair: () => KeyPair;
7
+ sharedKey: (privateKey: Uint8Array, publicKey: Uint8Array) => Buffer;
8
+ sign: (privateKey: Uint8Array, buf: Uint8Array) => any;
9
+ verify: (pubKey: Uint8Array, message: Uint8Array, signature: Uint8Array) => boolean;
10
+ };
11
+ export declare const signedKeyPair: (identityKeyPair: KeyPair, keyId: number) => {
12
+ keyPair: KeyPair;
13
+ signature: any;
14
+ keyId: number;
15
+ };
16
+ /**
17
+ * encrypt AES 256 GCM;
18
+ * where the tag tag is suffixed to the ciphertext
19
+ * */
20
+ export declare function aesEncryptGCM(plaintext: Uint8Array, key: Uint8Array, iv: Uint8Array, additionalData: Uint8Array): Buffer;
21
+ /**
22
+ * decrypt AES 256 GCM;
23
+ * where the auth tag is suffixed to the ciphertext
24
+ * */
25
+ export declare function aesDecryptGCM(ciphertext: Uint8Array, key: Uint8Array, iv: Uint8Array, additionalData: Uint8Array): Buffer;
26
+ export declare function aesEncryptCTR(plaintext: Uint8Array, key: Uint8Array, iv: Uint8Array): Buffer;
27
+ export declare function aesDecryptCTR(ciphertext: Uint8Array, key: Uint8Array, iv: Uint8Array): Buffer;
28
+ /** decrypt AES 256 CBC; where the IV is prefixed to the buffer */
29
+ export declare function aesDecrypt(buffer: Buffer, key: Buffer): Buffer;
30
+ /** decrypt AES 256 CBC */
31
+ export declare function aesDecryptWithIV(buffer: Buffer, key: Buffer, IV: Buffer): Buffer;
32
+ export declare function aesEncrypt(buffer: Buffer | Uint8Array, key: Buffer): Buffer;
33
+ export declare function aesEncrypWithIV(buffer: Buffer, key: Buffer, IV: Buffer): Buffer;
34
+ export declare function hmacSign(buffer: Buffer | Uint8Array, key: Buffer | Uint8Array, variant?: 'sha256' | 'sha512'): Buffer;
35
+ export declare function sha256(buffer: Buffer): Buffer;
36
+ export declare function md5(buffer: Buffer): Buffer;
37
+ export declare function hkdf(buffer: Uint8Array | Buffer, expandedLength: number, info: {
38
+ salt?: Buffer;
39
+ info?: string;
40
+ }): Buffer;
41
+ export declare function derivePairingCodeKey(pairingCode: string, salt: Buffer): Buffer;
@@ -1,130 +1,151 @@
1
- //=======================================================//
2
- import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from "crypto";
3
- import { KEY_BUNDLE_TYPE } from "../Defaults/index.js";
4
- import * as curve from "libsignal-xeuka/src/curve.js";
5
- //=======================================================//
6
- const { subtle } = globalThis.crypto;
7
- export const generateSignalPubKey = (pubKey) => pubKey.length === 33 ? pubKey : Buffer.concat([KEY_BUNDLE_TYPE, pubKey]);
8
- export const Curve = {
9
- generateKeyPair: () => {
10
- const { pubKey, privKey } = curve.generateKeyPair();
11
- return {
12
- private: Buffer.from(privKey),
13
- public: Buffer.from(pubKey.slice(1))
14
- };
15
- },
16
- sharedKey: (privateKey, publicKey) => {
17
- const shared = curve.calculateAgreement(generateSignalPubKey(publicKey), privateKey);
18
- return Buffer.from(shared);
19
- },
20
- sign: (privateKey, buf) => curve.calculateSignature(privateKey, buf),
21
- verify: (pubKey, message, signature) => {
22
- try {
23
- curve.verifySignature(generateSignalPubKey(pubKey), message, signature);
24
- return true;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
25
7
  }
26
- catch (error) {
27
- return false;
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.derivePairingCodeKey = exports.hkdf = exports.md5 = exports.sha256 = exports.hmacSign = exports.aesEncrypWithIV = exports.aesEncrypt = exports.aesDecryptWithIV = exports.aesDecrypt = exports.aesDecryptCTR = exports.aesEncryptCTR = exports.aesDecryptGCM = exports.aesEncryptGCM = exports.signedKeyPair = exports.Curve = exports.generateSignalPubKey = void 0;
30
+ const crypto_1 = require("crypto");
31
+ const futoin_hkdf_1 = __importDefault(require("futoin-hkdf"));
32
+ const libsignal = __importStar(require("libsignal"));
33
+ const Defaults_1 = require("../Defaults");
34
+ /** prefix version byte to the pub keys, required for some curve crypto functions */
35
+ const generateSignalPubKey = (pubKey) => (pubKey.length === 33
36
+ ? pubKey
37
+ : Buffer.concat([Defaults_1.KEY_BUNDLE_TYPE, pubKey]));
38
+ exports.generateSignalPubKey = generateSignalPubKey;
39
+ exports.Curve = {
40
+ generateKeyPair: () => {
41
+ const { pubKey, privKey } = libsignal.curve.generateKeyPair();
42
+ return {
43
+ private: Buffer.from(privKey),
44
+ // remove version byte
45
+ public: Buffer.from(pubKey.slice(1))
46
+ };
47
+ },
48
+ sharedKey: (privateKey, publicKey) => {
49
+ const shared = libsignal.curve.calculateAgreement((0, exports.generateSignalPubKey)(publicKey), privateKey);
50
+ return Buffer.from(shared);
51
+ },
52
+ sign: (privateKey, buf) => (libsignal.curve.calculateSignature(privateKey, buf)),
53
+ verify: (pubKey, message, signature) => {
54
+ try {
55
+ libsignal.curve.verifySignature((0, exports.generateSignalPubKey)(pubKey), message, signature);
56
+ return true;
57
+ }
58
+ catch (error) {
59
+ return false;
60
+ }
28
61
  }
29
- }
30
62
  };
31
- //=======================================================//
32
- export const signedKeyPair = (identityKeyPair, keyId) => {
33
- const preKey = Curve.generateKeyPair();
34
- const pubKey = generateSignalPubKey(preKey.public);
35
- const signature = Curve.sign(identityKeyPair.private, pubKey);
36
- return { keyPair: preKey, signature, keyId };
63
+ const signedKeyPair = (identityKeyPair, keyId) => {
64
+ const preKey = exports.Curve.generateKeyPair();
65
+ const pubKey = (0, exports.generateSignalPubKey)(preKey.public);
66
+ const signature = exports.Curve.sign(identityKeyPair.private, pubKey);
67
+ return { keyPair: preKey, signature, keyId };
37
68
  };
38
- //=======================================================//
69
+ exports.signedKeyPair = signedKeyPair;
39
70
  const GCM_TAG_LENGTH = 128 >> 3;
40
- export function aesEncryptGCM(plaintext, key, iv, additionalData) {
41
- const cipher = createCipheriv("aes-256-gcm", key, iv);
42
- cipher.setAAD(additionalData);
43
- return Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
71
+ /**
72
+ * encrypt AES 256 GCM;
73
+ * where the tag tag is suffixed to the ciphertext
74
+ * */
75
+ function aesEncryptGCM(plaintext, key, iv, additionalData) {
76
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', key, iv);
77
+ cipher.setAAD(additionalData);
78
+ return Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
44
79
  }
45
- //=======================================================//
46
- export function aesDecryptGCM(ciphertext, key, iv, additionalData) {
47
- const decipher = createDecipheriv("aes-256-gcm", key, iv);
48
- const enc = ciphertext.slice(0, ciphertext.length - GCM_TAG_LENGTH);
49
- const tag = ciphertext.slice(ciphertext.length - GCM_TAG_LENGTH);
50
- decipher.setAAD(additionalData);
51
- decipher.setAuthTag(tag);
52
- return Buffer.concat([decipher.update(enc), decipher.final()]);
80
+ exports.aesEncryptGCM = aesEncryptGCM;
81
+ /**
82
+ * decrypt AES 256 GCM;
83
+ * where the auth tag is suffixed to the ciphertext
84
+ * */
85
+ function aesDecryptGCM(ciphertext, key, iv, additionalData) {
86
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', key, iv);
87
+ // decrypt additional adata
88
+ const enc = ciphertext.slice(0, ciphertext.length - GCM_TAG_LENGTH);
89
+ const tag = ciphertext.slice(ciphertext.length - GCM_TAG_LENGTH);
90
+ // set additional data
91
+ decipher.setAAD(additionalData);
92
+ decipher.setAuthTag(tag);
93
+ return Buffer.concat([decipher.update(enc), decipher.final()]);
53
94
  }
54
- //=======================================================//
55
- export function aesEncryptCTR(plaintext, key, iv) {
56
- const cipher = createCipheriv("aes-256-ctr", key, iv);
57
- return Buffer.concat([cipher.update(plaintext), cipher.final()]);
95
+ exports.aesDecryptGCM = aesDecryptGCM;
96
+ function aesEncryptCTR(plaintext, key, iv) {
97
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-ctr', key, iv);
98
+ return Buffer.concat([cipher.update(plaintext), cipher.final()]);
58
99
  }
59
- //=======================================================//
60
- export function aesDecryptCTR(ciphertext, key, iv) {
61
- const decipher = createDecipheriv("aes-256-ctr", key, iv);
62
- return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
100
+ exports.aesEncryptCTR = aesEncryptCTR;
101
+ function aesDecryptCTR(ciphertext, key, iv) {
102
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-ctr', key, iv);
103
+ return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
63
104
  }
64
- //=======================================================//
65
- export function aesDecrypt(buffer, key) {
66
- return aesDecryptWithIV(buffer.slice(16, buffer.length), key, buffer.slice(0, 16));
105
+ exports.aesDecryptCTR = aesDecryptCTR;
106
+ /** decrypt AES 256 CBC; where the IV is prefixed to the buffer */
107
+ function aesDecrypt(buffer, key) {
108
+ return aesDecryptWithIV(buffer.slice(16, buffer.length), key, buffer.slice(0, 16));
67
109
  }
68
- //=======================================================//
69
- export function aesDecryptWithIV(buffer, key, IV) {
70
- const aes = createDecipheriv("aes-256-cbc", key, IV);
71
- return Buffer.concat([aes.update(buffer), aes.final()]);
110
+ exports.aesDecrypt = aesDecrypt;
111
+ /** decrypt AES 256 CBC */
112
+ function aesDecryptWithIV(buffer, key, IV) {
113
+ const aes = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, IV);
114
+ return Buffer.concat([aes.update(buffer), aes.final()]);
72
115
  }
73
- //=======================================================//
74
- export function aesEncrypt(buffer, key) {
75
- const IV = randomBytes(16);
76
- const aes = createCipheriv("aes-256-cbc", key, IV);
77
- return Buffer.concat([IV, aes.update(buffer), aes.final()]);
116
+ exports.aesDecryptWithIV = aesDecryptWithIV;
117
+ // encrypt AES 256 CBC; where a random IV is prefixed to the buffer
118
+ function aesEncrypt(buffer, key) {
119
+ const IV = (0, crypto_1.randomBytes)(16);
120
+ const aes = (0, crypto_1.createCipheriv)('aes-256-cbc', key, IV);
121
+ return Buffer.concat([IV, aes.update(buffer), aes.final()]); // prefix IV to the buffer
78
122
  }
79
- //=======================================================//
80
- export function aesEncrypWithIV(buffer, key, IV) {
81
- const aes = createCipheriv("aes-256-cbc", key, IV);
82
- return Buffer.concat([aes.update(buffer), aes.final()]);
123
+ exports.aesEncrypt = aesEncrypt;
124
+ // encrypt AES 256 CBC with a given IV
125
+ function aesEncrypWithIV(buffer, key, IV) {
126
+ const aes = (0, crypto_1.createCipheriv)('aes-256-cbc', key, IV);
127
+ return Buffer.concat([aes.update(buffer), aes.final()]); // prefix IV to the buffer
83
128
  }
84
- //=======================================================//
85
- export function hmacSign(buffer, key, variant = "sha256") {
86
- return createHmac(variant, key).update(buffer).digest();
129
+ exports.aesEncrypWithIV = aesEncrypWithIV;
130
+ // sign HMAC using SHA 256
131
+ function hmacSign(buffer, key, variant = 'sha256') {
132
+ return (0, crypto_1.createHmac)(variant, key).update(buffer).digest();
87
133
  }
88
- //=======================================================//
89
- export function sha256(buffer) {
90
- return createHash("sha256").update(buffer).digest();
134
+ exports.hmacSign = hmacSign;
135
+ function sha256(buffer) {
136
+ return (0, crypto_1.createHash)('sha256').update(buffer).digest();
91
137
  }
92
- //=======================================================//
93
- export function md5(buffer) {
94
- return createHash("md5").update(buffer).digest();
138
+ exports.sha256 = sha256;
139
+ function md5(buffer) {
140
+ return (0, crypto_1.createHash)('md5').update(buffer).digest();
95
141
  }
96
- //=======================================================//
97
- export async function hkdf(buffer, expandedLength, info) {
98
- const inputKeyMaterial = new Uint8Array(buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer));
99
- const salt = info.salt ? new Uint8Array(info.salt) : new Uint8Array(0);
100
- const infoBytes = info.info ? new TextEncoder().encode(info.info) : new Uint8Array(0);
101
- const importedKey = await subtle.importKey("raw", inputKeyMaterial, { name: "HKDF" }, false, [
102
- "deriveBits"
103
- ]);
104
- const derivedBits = await subtle.deriveBits({
105
- name: "HKDF",
106
- hash: "SHA-256",
107
- salt: salt,
108
- info: infoBytes
109
- }, importedKey, expandedLength * 8
110
- );
111
- return Buffer.from(derivedBits);
142
+ exports.md5 = md5;
143
+ // HKDF key expansion
144
+ function hkdf(buffer, expandedLength, info) {
145
+ return (0, futoin_hkdf_1.default)(!Buffer.isBuffer(buffer) ? Buffer.from(buffer) : buffer, expandedLength, info);
112
146
  }
113
- //=======================================================//
114
- export async function derivePairingCodeKey(pairingCode, salt) {
115
- const encoder = new TextEncoder();
116
- const pairingCodeBuffer = encoder.encode(pairingCode);
117
- const saltBuffer = new Uint8Array(salt instanceof Uint8Array ? salt : new Uint8Array(salt));
118
- const keyMaterial = await subtle.importKey("raw", pairingCodeBuffer, { name: "PBKDF2" }, false, [
119
- "deriveBits"
120
- ]);
121
- const derivedBits = await subtle.deriveBits({
122
- name: "PBKDF2",
123
- salt: saltBuffer,
124
- iterations: 2 << 16,
125
- hash: "SHA-256"
126
- }, keyMaterial, 32 * 8
127
- );
128
- return Buffer.from(derivedBits);
147
+ exports.hkdf = hkdf;
148
+ function derivePairingCodeKey(pairingCode, salt) {
149
+ return (0, crypto_1.pbkdf2Sync)(pairingCode, salt, 2 << 16, 32, 'sha256');
129
150
  }
130
- //=======================================================//
151
+ exports.derivePairingCodeKey = derivePairingCodeKey;
@@ -0,0 +1,19 @@
1
+ import { Logger } from 'pino';
2
+ import { proto } from '../../WAProto';
3
+ import { SignalRepository } from '../Types';
4
+ import { BinaryNode } from '../WABinary';
5
+ /**
6
+ * Decode the received node as a message.
7
+ * @note this will only parse the message, not decrypt it
8
+ */
9
+ export declare function decodeMessageNode(stanza: BinaryNode, meId: string, meLid: string): {
10
+ fullMessage: proto.IWebMessageInfo;
11
+ author: string;
12
+ sender: string;
13
+ };
14
+ export declare const decryptMessageNode: (stanza: BinaryNode, meId: string, meLid: string, repository: SignalRepository, logger: Logger) => {
15
+ fullMessage: proto.IWebMessageInfo;
16
+ category: string;
17
+ author: string;
18
+ decrypt(): Promise<void>;
19
+ };