@mrlegendbot/baileys 1.2.3 → 1.2.5

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 (212) hide show
  1. package/README.upstream.md +1312 -0
  2. package/WAProto/WAProto.json +1 -0
  3. package/WAProto/WAProto.proto +6275 -0
  4. package/WAProto/compiler.js +550 -0
  5. package/WAProto/index.js +2 -97691
  6. package/lib/Defaults/index.js +89 -92
  7. package/lib/Signal/Group/ciphertext-message.js +9 -10
  8. package/lib/Signal/Group/group-session-builder.js +21 -22
  9. package/lib/Signal/Group/group_cipher.js +75 -69
  10. package/lib/Signal/Group/index.js +0 -1
  11. package/lib/Signal/Group/keyhelper.js +9 -10
  12. package/lib/Signal/Group/sender-chain-key.js +21 -22
  13. package/lib/Signal/Group/sender-key-distribution-message.js +51 -60
  14. package/lib/Signal/Group/sender-key-message.js +56 -62
  15. package/lib/Signal/Group/sender-key-name.js +38 -40
  16. package/lib/Signal/Group/sender-key-record.js +33 -34
  17. package/lib/Signal/Group/sender-key-state.js +72 -76
  18. package/lib/Signal/Group/sender-message-key.js +22 -23
  19. package/lib/Signal/libsignal.js +506 -405
  20. package/lib/Signal/lid-mapping.js +276 -258
  21. package/lib/Socket/Client/index.js +0 -1
  22. package/lib/Socket/Client/types.js +6 -7
  23. package/lib/Socket/Client/websocket.js +48 -49
  24. package/lib/Socket/business.js +349 -369
  25. package/lib/Socket/chats.js +1172 -1148
  26. package/lib/Socket/communities.js +473 -413
  27. package/lib/Socket/groups.js +387 -331
  28. package/lib/Socket/index.js +6 -8
  29. package/lib/Socket/messages-recv.js +1782 -1719
  30. package/lib/Socket/messages-send.js +1554 -2450
  31. package/lib/Socket/mex.js +40 -35
  32. package/lib/Socket/newsletter.js +239 -191
  33. package/lib/Socket/socket.js +992 -923
  34. package/lib/Store/index.js +8 -0
  35. package/lib/Store/keyed-db.js +108 -0
  36. package/lib/Store/make-cache-manager-store.js +70 -0
  37. package/lib/Store/make-in-memory-store.js +417 -0
  38. package/lib/Store/make-ordered-dictionary.js +69 -0
  39. package/lib/Store/object-repository.js +27 -0
  40. package/lib/Types/Auth.js +0 -1
  41. package/lib/Types/Bussines.js +0 -1
  42. package/lib/Types/Call.js +0 -1
  43. package/lib/Types/Chat.js +1 -8
  44. package/lib/Types/Contact.js +0 -1
  45. package/lib/Types/Events.js +1 -2
  46. package/lib/Types/GroupMetadata.js +0 -1
  47. package/lib/Types/Label.js +20 -22
  48. package/lib/Types/LabelAssociation.js +2 -4
  49. package/lib/Types/Message.js +3 -5
  50. package/lib/Types/Mex.js +26 -31
  51. package/lib/Types/Product.js +0 -1
  52. package/lib/Types/Signal.js +1 -2
  53. package/lib/Types/Socket.js +2 -3
  54. package/lib/Types/State.js +4 -52
  55. package/lib/Types/USync.js +0 -1
  56. package/lib/Types/index.js +10 -11
  57. package/lib/Utils/auth-utils.js +240 -277
  58. package/lib/Utils/browser-utils.js +20 -23
  59. package/lib/Utils/business.js +200 -204
  60. package/lib/Utils/chat-utils.js +836 -810
  61. package/lib/Utils/companion-reg-client-utils.js +23 -25
  62. package/lib/Utils/crypto.js +70 -86
  63. package/lib/Utils/decode-wa-message.js +277 -284
  64. package/lib/Utils/event-buffer.js +592 -595
  65. package/lib/Utils/generics.js +312 -335
  66. package/lib/Utils/history.js +123 -115
  67. package/lib/Utils/index.js +1 -2
  68. package/lib/Utils/link-preview.js +74 -73
  69. package/lib/Utils/logger.js +3 -2
  70. package/lib/Utils/lt-hash.js +0 -6
  71. package/lib/Utils/make-mutex.js +27 -27
  72. package/lib/Utils/message-retry-manager.js +213 -254
  73. package/lib/Utils/messages-media.js +741 -715
  74. package/lib/Utils/messages.js +791 -827
  75. package/lib/Utils/noise-handler.js +215 -187
  76. package/lib/Utils/pre-key-manager.js +69 -98
  77. package/lib/Utils/process-message.js +617 -586
  78. package/lib/Utils/reporting-utils.js +553 -234
  79. package/lib/Utils/signal.js +217 -170
  80. package/lib/Utils/stanza-ack.js +27 -35
  81. package/lib/Utils/sync-action-utils.js +37 -41
  82. package/lib/Utils/tc-token-utils.js +120 -141
  83. package/lib/Utils/use-multi-file-auth-state.js +87 -105
  84. package/lib/Utils/use-sqlite-auth-state.js +162 -0
  85. package/lib/Utils/validate-connection.js +190 -188
  86. package/lib/WABinary/constants.js +28 -1294
  87. package/lib/WABinary/decode.js +245 -249
  88. package/lib/WABinary/encode.js +201 -206
  89. package/lib/WABinary/generic-utils.js +86 -89
  90. package/lib/WABinary/index.js +0 -1
  91. package/lib/WABinary/jid-utils.js +68 -77
  92. package/lib/WABinary/types.js +0 -1
  93. package/lib/WAM/BinaryInfo.js +7 -8
  94. package/lib/WAM/constants.js +19892 -22853
  95. package/lib/WAM/encode.js +121 -132
  96. package/lib/WAM/index.js +0 -1
  97. package/lib/WAUSync/Protocols/USyncContactProtocol.js +46 -43
  98. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +47 -48
  99. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +22 -23
  100. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +30 -33
  101. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +19 -20
  102. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -44
  103. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -24
  104. package/lib/WAUSync/Protocols/index.js +0 -1
  105. package/lib/WAUSync/USyncQuery.js +79 -88
  106. package/lib/WAUSync/USyncUser.js +28 -29
  107. package/lib/WAUSync/index.js +0 -1
  108. package/lib/index.js +2 -2
  109. package/package.json +22 -86
  110. package/WAProto/GenerateStatics.sh +0 -3
  111. package/WAProto/fix-imports.js +0 -85
  112. package/WAProto/index.d.ts +0 -14017
  113. package/lib/Defaults/index.d.ts +0 -75
  114. package/lib/Signal/Group/ciphertext-message.d.ts +0 -10
  115. package/lib/Signal/Group/group-session-builder.d.ts +0 -15
  116. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  117. package/lib/Signal/Group/index.d.ts +0 -12
  118. package/lib/Signal/Group/keyhelper.d.ts +0 -11
  119. package/lib/Signal/Group/sender-chain-key.d.ts +0 -14
  120. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -17
  121. package/lib/Signal/Group/sender-key-message.d.ts +0 -19
  122. package/lib/Signal/Group/sender-key-name.d.ts +0 -18
  123. package/lib/Signal/Group/sender-key-record.d.ts +0 -31
  124. package/lib/Signal/Group/sender-key-state.d.ts +0 -39
  125. package/lib/Signal/Group/sender-message-key.d.ts +0 -12
  126. package/lib/Signal/libsignal.d.ts +0 -5
  127. package/lib/Signal/lid-mapping.d.ts +0 -23
  128. package/lib/Socket/Client/index.d.ts +0 -3
  129. package/lib/Socket/Client/types.d.ts +0 -16
  130. package/lib/Socket/Client/websocket.d.ts +0 -13
  131. package/lib/Socket/business.d.ts +0 -217
  132. package/lib/Socket/chats.d.ts +0 -125
  133. package/lib/Socket/communities.d.ts +0 -273
  134. package/lib/Socket/groups.d.ts +0 -161
  135. package/lib/Socket/index.d.ts +0 -260
  136. package/lib/Socket/messages-recv.d.ts +0 -203
  137. package/lib/Socket/messages-send.d.ts +0 -199
  138. package/lib/Socket/mex.d.ts +0 -3
  139. package/lib/Socket/newsletter.d.ts +0 -170
  140. package/lib/Socket/socket.d.ts +0 -59
  141. package/lib/Types/Auth.d.ts +0 -117
  142. package/lib/Types/Bussines.d.ts +0 -25
  143. package/lib/Types/Call.d.ts +0 -15
  144. package/lib/Types/Chat.d.ts +0 -124
  145. package/lib/Types/Contact.d.ts +0 -26
  146. package/lib/Types/Events.d.ts +0 -256
  147. package/lib/Types/GroupMetadata.d.ts +0 -71
  148. package/lib/Types/Label.d.ts +0 -47
  149. package/lib/Types/LabelAssociation.d.ts +0 -30
  150. package/lib/Types/Message.d.ts +0 -320
  151. package/lib/Types/Mex.d.ts +0 -141
  152. package/lib/Types/Product.d.ts +0 -79
  153. package/lib/Types/Signal.d.ts +0 -87
  154. package/lib/Types/Socket.d.ts +0 -136
  155. package/lib/Types/State.d.ts +0 -97
  156. package/lib/Types/USync.d.ts +0 -26
  157. package/lib/Types/index.d.ts +0 -66
  158. package/lib/Utils/auth-utils.d.ts +0 -24
  159. package/lib/Utils/browser-utils.d.ts +0 -4
  160. package/lib/Utils/business.d.ts +0 -23
  161. package/lib/Utils/chat-utils.d.ts +0 -100
  162. package/lib/Utils/companion-reg-client-utils.d.ts +0 -17
  163. package/lib/Utils/crypto.d.ts +0 -37
  164. package/lib/Utils/decode-wa-message.d.ts +0 -66
  165. package/lib/Utils/event-buffer.d.ts +0 -36
  166. package/lib/Utils/generics.d.ts +0 -92
  167. package/lib/Utils/history.d.ts +0 -24
  168. package/lib/Utils/identity-change-handler.d.ts +0 -44
  169. package/lib/Utils/identity-change-handler.js +0 -50
  170. package/lib/Utils/index.d.ts +0 -22
  171. package/lib/Utils/link-preview.d.ts +0 -21
  172. package/lib/Utils/logger.d.ts +0 -12
  173. package/lib/Utils/lt-hash.d.ts +0 -8
  174. package/lib/Utils/make-mutex.d.ts +0 -9
  175. package/lib/Utils/message-retry-manager.d.ts +0 -115
  176. package/lib/Utils/messages-media.d.ts +0 -133
  177. package/lib/Utils/messages.d.ts +0 -91
  178. package/lib/Utils/noise-handler.d.ts +0 -20
  179. package/lib/Utils/offline-node-processor.d.ts +0 -17
  180. package/lib/Utils/offline-node-processor.js +0 -40
  181. package/lib/Utils/pre-key-manager.d.ts +0 -28
  182. package/lib/Utils/process-message.d.ts +0 -60
  183. package/lib/Utils/reporting-utils.d.ts +0 -11
  184. package/lib/Utils/signal.d.ts +0 -47
  185. package/lib/Utils/stanza-ack.d.ts +0 -11
  186. package/lib/Utils/sync-action-utils.d.ts +0 -19
  187. package/lib/Utils/tc-token-utils.d.ts +0 -37
  188. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  189. package/lib/Utils/validate-connection.d.ts +0 -11
  190. package/lib/WABinary/constants.d.ts +0 -28
  191. package/lib/WABinary/decode.d.ts +0 -7
  192. package/lib/WABinary/encode.d.ts +0 -3
  193. package/lib/WABinary/generic-utils.d.ts +0 -15
  194. package/lib/WABinary/index.d.ts +0 -6
  195. package/lib/WABinary/jid-utils.d.ts +0 -48
  196. package/lib/WABinary/types.d.ts +0 -19
  197. package/lib/WAM/BinaryInfo.d.ts +0 -9
  198. package/lib/WAM/constants.d.ts +0 -40
  199. package/lib/WAM/encode.d.ts +0 -3
  200. package/lib/WAM/index.d.ts +0 -4
  201. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -10
  202. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -23
  203. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -13
  204. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -13
  205. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +0 -10
  206. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -26
  207. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -10
  208. package/lib/WAUSync/Protocols/index.d.ts +0 -6
  209. package/lib/WAUSync/USyncQuery.d.ts +0 -30
  210. package/lib/WAUSync/USyncUser.d.ts +0 -17
  211. package/lib/WAUSync/index.d.ts +0 -4
  212. package/lib/index.d.ts +0 -12
@@ -1,35 +1,33 @@
1
1
  export var CompanionWebClientType;
2
2
  (function (CompanionWebClientType) {
3
- CompanionWebClientType[CompanionWebClientType["UNKNOWN"] = 0] = "UNKNOWN";
4
- CompanionWebClientType[CompanionWebClientType["CHROME"] = 1] = "CHROME";
5
- CompanionWebClientType[CompanionWebClientType["EDGE"] = 2] = "EDGE";
6
- CompanionWebClientType[CompanionWebClientType["FIREFOX"] = 3] = "FIREFOX";
7
- CompanionWebClientType[CompanionWebClientType["IE"] = 4] = "IE";
8
- CompanionWebClientType[CompanionWebClientType["OPERA"] = 5] = "OPERA";
9
- CompanionWebClientType[CompanionWebClientType["SAFARI"] = 6] = "SAFARI";
10
- CompanionWebClientType[CompanionWebClientType["ELECTRON"] = 7] = "ELECTRON";
11
- CompanionWebClientType[CompanionWebClientType["UWP"] = 8] = "UWP";
12
- CompanionWebClientType[CompanionWebClientType["OTHER_WEB_CLIENT"] = 9] = "OTHER_WEB_CLIENT";
3
+ CompanionWebClientType[CompanionWebClientType["UNKNOWN"] = 0] = "UNKNOWN";
4
+ CompanionWebClientType[CompanionWebClientType["CHROME"] = 1] = "CHROME";
5
+ CompanionWebClientType[CompanionWebClientType["EDGE"] = 2] = "EDGE";
6
+ CompanionWebClientType[CompanionWebClientType["FIREFOX"] = 3] = "FIREFOX";
7
+ CompanionWebClientType[CompanionWebClientType["IE"] = 4] = "IE";
8
+ CompanionWebClientType[CompanionWebClientType["OPERA"] = 5] = "OPERA";
9
+ CompanionWebClientType[CompanionWebClientType["SAFARI"] = 6] = "SAFARI";
10
+ CompanionWebClientType[CompanionWebClientType["ELECTRON"] = 7] = "ELECTRON";
11
+ CompanionWebClientType[CompanionWebClientType["UWP"] = 8] = "UWP";
12
+ CompanionWebClientType[CompanionWebClientType["OTHER_WEB_CLIENT"] = 9] = "OTHER_WEB_CLIENT";
13
13
  })(CompanionWebClientType || (CompanionWebClientType = {}));
14
14
  const BROWSER_TO_COMPANION_WEB_CLIENT = {
15
- Chrome: CompanionWebClientType.CHROME,
16
- Edge: CompanionWebClientType.EDGE,
17
- Firefox: CompanionWebClientType.FIREFOX,
18
- IE: CompanionWebClientType.IE,
19
- Opera: CompanionWebClientType.OPERA,
20
- Safari: CompanionWebClientType.SAFARI
15
+ Chrome: CompanionWebClientType.CHROME,
16
+ Edge: CompanionWebClientType.EDGE,
17
+ Firefox: CompanionWebClientType.FIREFOX,
18
+ IE: CompanionWebClientType.IE,
19
+ Opera: CompanionWebClientType.OPERA,
20
+ Safari: CompanionWebClientType.SAFARI
21
21
  };
22
22
  export const getCompanionWebClientType = ([os, browserName]) => {
23
- if (browserName === 'Desktop') {
24
- return os === 'Windows' ? CompanionWebClientType.UWP : CompanionWebClientType.ELECTRON;
25
- }
26
- return BROWSER_TO_COMPANION_WEB_CLIENT[browserName] || CompanionWebClientType.OTHER_WEB_CLIENT;
23
+ if (browserName === 'Desktop') {
24
+ return os === 'Windows' ? CompanionWebClientType.UWP : CompanionWebClientType.ELECTRON;
25
+ }
26
+ return BROWSER_TO_COMPANION_WEB_CLIENT[browserName] || CompanionWebClientType.OTHER_WEB_CLIENT;
27
27
  };
28
- export const getCompanionPlatformId = (browser) => {
29
- return getCompanionWebClientType(browser).toString();
28
+ export const getCompanionPlatformId = browser => {
29
+ return getCompanionWebClientType(browser).toString();
30
30
  };
31
31
  export const buildPairingQRData = (ref, noiseKeyB64, identityKeyB64, advB64, browser) => {
32
- return ('https://wa.me/settings/linked_devices#' +
33
- [ref, noiseKeyB64, identityKeyB64, advB64, getCompanionPlatformId(browser)].join(','));
32
+ return 'https://wa.me/settings/linked_devices#' + [ref, noiseKeyB64, identityKeyB64, advB64, getCompanionPlatformId(browser)].join(',');
34
33
  };
35
- //# sourceMappingURL=companion-reg-client-utils.js.map
@@ -2,117 +2,101 @@ import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes }
2
2
  import * as curve from 'libsignal/src/curve.js';
3
3
  import { KEY_BUNDLE_TYPE } from '../Defaults/index.js';
4
4
  export { md5, hkdf } from 'whatsapp-rust-bridge';
5
- // insure browser & node compatibility
6
- const { subtle } = globalThis.crypto;
7
- /** prefix version byte to the pub keys, required for some curve crypto functions */
8
- export const generateSignalPubKey = (pubKey) => pubKey.length === 33 ? pubKey : Buffer.concat([KEY_BUNDLE_TYPE, pubKey]);
5
+ const {
6
+ subtle
7
+ } = globalThis.crypto;
8
+ export const generateSignalPubKey = pubKey => pubKey.length === 33 ? pubKey : Buffer.concat([KEY_BUNDLE_TYPE, pubKey]);
9
9
  export const Curve = {
10
- generateKeyPair: () => {
11
- const { pubKey, privKey } = curve.generateKeyPair();
12
- return {
13
- private: Buffer.from(privKey),
14
- // remove version byte
15
- public: Buffer.from(pubKey.slice(1))
16
- };
17
- },
18
- sharedKey: (privateKey, publicKey) => {
19
- const shared = curve.calculateAgreement(generateSignalPubKey(publicKey), privateKey);
20
- return Buffer.from(shared);
21
- },
22
- sign: (privateKey, buf) => curve.calculateSignature(privateKey, buf),
23
- verify: (pubKey, message, signature) => {
24
- try {
25
- curve.verifySignature(generateSignalPubKey(pubKey), message, signature);
26
- return true;
27
- }
28
- catch (error) {
29
- return false;
30
- }
10
+ generateKeyPair: () => {
11
+ const {
12
+ pubKey,
13
+ privKey
14
+ } = curve.generateKeyPair();
15
+ return {
16
+ private: Buffer.from(privKey),
17
+ public: Buffer.from(pubKey.slice(1))
18
+ };
19
+ },
20
+ sharedKey: (privateKey, publicKey) => {
21
+ const shared = curve.calculateAgreement(generateSignalPubKey(publicKey), privateKey);
22
+ return Buffer.from(shared);
23
+ },
24
+ sign: (privateKey, buf) => curve.calculateSignature(privateKey, buf),
25
+ verify: (pubKey, message, signature) => {
26
+ try {
27
+ curve.verifySignature(generateSignalPubKey(pubKey), message, signature);
28
+ return true;
29
+ } catch (error) {
30
+ return false;
31
31
  }
32
+ }
32
33
  };
33
34
  export const signedKeyPair = (identityKeyPair, keyId) => {
34
- const preKey = Curve.generateKeyPair();
35
- const pubKey = generateSignalPubKey(preKey.public);
36
- const signature = Curve.sign(identityKeyPair.private, pubKey);
37
- return { keyPair: preKey, signature, keyId };
35
+ const preKey = Curve.generateKeyPair();
36
+ const pubKey = generateSignalPubKey(preKey.public);
37
+ const signature = Curve.sign(identityKeyPair.private, pubKey);
38
+ return {
39
+ keyPair: preKey,
40
+ signature,
41
+ keyId
42
+ };
38
43
  };
39
44
  const GCM_TAG_LENGTH = 128 >> 3;
40
- /**
41
- * encrypt AES 256 GCM;
42
- * where the tag tag is suffixed to the ciphertext
43
- * */
44
45
  export function aesEncryptGCM(plaintext, key, iv, additionalData) {
45
- const cipher = createCipheriv('aes-256-gcm', key, iv);
46
- cipher.setAAD(additionalData);
47
- return Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
46
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
47
+ cipher.setAAD(additionalData);
48
+ return Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
48
49
  }
49
- /**
50
- * decrypt AES 256 GCM;
51
- * where the auth tag is suffixed to the ciphertext
52
- * */
53
50
  export function aesDecryptGCM(ciphertext, key, iv, additionalData) {
54
- const decipher = createDecipheriv('aes-256-gcm', key, iv);
55
- // decrypt additional adata
56
- const enc = ciphertext.slice(0, ciphertext.length - GCM_TAG_LENGTH);
57
- const tag = ciphertext.slice(ciphertext.length - GCM_TAG_LENGTH);
58
- // set additional data
59
- decipher.setAAD(additionalData);
60
- decipher.setAuthTag(tag);
61
- return Buffer.concat([decipher.update(enc), decipher.final()]);
51
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
52
+ const enc = ciphertext.slice(0, ciphertext.length - GCM_TAG_LENGTH);
53
+ const tag = ciphertext.slice(ciphertext.length - GCM_TAG_LENGTH);
54
+ decipher.setAAD(additionalData);
55
+ decipher.setAuthTag(tag);
56
+ return Buffer.concat([decipher.update(enc), decipher.final()]);
62
57
  }
63
58
  export function aesEncryptCTR(plaintext, key, iv) {
64
- const cipher = createCipheriv('aes-256-ctr', key, iv);
65
- return Buffer.concat([cipher.update(plaintext), cipher.final()]);
59
+ const cipher = createCipheriv('aes-256-ctr', key, iv);
60
+ return Buffer.concat([cipher.update(plaintext), cipher.final()]);
66
61
  }
67
62
  export function aesDecryptCTR(ciphertext, key, iv) {
68
- const decipher = createDecipheriv('aes-256-ctr', key, iv);
69
- return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
63
+ const decipher = createDecipheriv('aes-256-ctr', key, iv);
64
+ return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
70
65
  }
71
- /** decrypt AES 256 CBC; where the IV is prefixed to the buffer */
72
66
  export function aesDecrypt(buffer, key) {
73
- return aesDecryptWithIV(buffer.subarray(16), key, buffer.subarray(0, 16));
67
+ return aesDecryptWithIV(buffer.subarray(16), key, buffer.subarray(0, 16));
74
68
  }
75
- /** decrypt AES 256 CBC */
76
69
  export function aesDecryptWithIV(buffer, key, IV) {
77
- const aes = createDecipheriv('aes-256-cbc', key, IV);
78
- return Buffer.concat([aes.update(buffer), aes.final()]);
70
+ const aes = createDecipheriv('aes-256-cbc', key, IV);
71
+ return Buffer.concat([aes.update(buffer), aes.final()]);
79
72
  }
80
- // encrypt AES 256 CBC; where a random IV is prefixed to the buffer
81
73
  export function aesEncrypt(buffer, key) {
82
- const IV = randomBytes(16);
83
- const aes = createCipheriv('aes-256-cbc', key, IV);
84
- return Buffer.concat([IV, aes.update(buffer), aes.final()]); // prefix IV to the buffer
74
+ const IV = randomBytes(16);
75
+ const aes = createCipheriv('aes-256-cbc', key, IV);
76
+ return Buffer.concat([IV, aes.update(buffer), aes.final()]);
85
77
  }
86
- // encrypt AES 256 CBC with a given IV
87
78
  export function aesEncrypWithIV(buffer, key, IV) {
88
- const aes = createCipheriv('aes-256-cbc', key, IV);
89
- return Buffer.concat([aes.update(buffer), aes.final()]); // prefix IV to the buffer
79
+ const aes = createCipheriv('aes-256-cbc', key, IV);
80
+ return Buffer.concat([aes.update(buffer), aes.final()]);
90
81
  }
91
- // sign HMAC using SHA 256
92
82
  export function hmacSign(buffer, key, variant = 'sha256') {
93
- return createHmac(variant, key).update(buffer).digest();
83
+ return createHmac(variant, key).update(buffer).digest();
94
84
  }
95
85
  export function sha256(buffer) {
96
- return createHash('sha256').update(buffer).digest();
86
+ return createHash('sha256').update(buffer).digest();
97
87
  }
98
88
  export async function derivePairingCodeKey(pairingCode, salt) {
99
- // Convert inputs to formats Web Crypto API can work with
100
- const encoder = new TextEncoder();
101
- const pairingCodeBuffer = encoder.encode(pairingCode);
102
- const saltBuffer = new Uint8Array(salt instanceof Uint8Array ? salt : new Uint8Array(salt));
103
- // Import the pairing code as key material
104
- const keyMaterial = await subtle.importKey('raw', pairingCodeBuffer, { name: 'PBKDF2' }, false, [
105
- 'deriveBits'
106
- ]);
107
- // Derive bits using PBKDF2 with the same parameters
108
- // 2 << 16 = 131,072 iterations
109
- const derivedBits = await subtle.deriveBits({
110
- name: 'PBKDF2',
111
- salt: saltBuffer,
112
- iterations: 2 << 16,
113
- hash: 'SHA-256'
114
- }, keyMaterial, 32 * 8 // 32 bytes * 8 = 256 bits
115
- );
116
- return Buffer.from(derivedBits);
89
+ const encoder = new TextEncoder();
90
+ const pairingCodeBuffer = encoder.encode(pairingCode);
91
+ const saltBuffer = new Uint8Array(salt instanceof Uint8Array ? salt : new Uint8Array(salt));
92
+ const keyMaterial = await subtle.importKey('raw', pairingCodeBuffer, {
93
+ name: 'PBKDF2'
94
+ }, false, ['deriveBits']);
95
+ const derivedBits = await subtle.deriveBits({
96
+ name: 'PBKDF2',
97
+ salt: saltBuffer,
98
+ iterations: 2 << 16,
99
+ hash: 'SHA-256'
100
+ }, keyMaterial, 32 * 8);
101
+ return Buffer.from(derivedBits);
117
102
  }
118
- //# sourceMappingURL=crypto.js.map