@badzz88/baileys 8.4.0 → 8.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/WAProto/GenerateStatics.sh +3 -0
  2. package/WAProto/WAProto.proto +6902 -0
  3. package/WAProto/fix-imports.js +85 -0
  4. package/WAProto/index.d.ts +79257 -0
  5. package/WAProto/index.js +204305 -131020
  6. package/engine-requirements.js +3 -4
  7. package/lib/Defaults/baileys-version.json +2 -2
  8. package/lib/Defaults/index.js +119 -136
  9. package/lib/Signal/Group/ciphertext-message.js +2 -5
  10. package/lib/Signal/Group/group-session-builder.js +7 -41
  11. package/lib/Signal/Group/group_cipher.js +37 -51
  12. package/lib/Signal/Group/index.js +12 -57
  13. package/lib/Signal/Group/keyhelper.js +7 -44
  14. package/lib/Signal/Group/sender-chain-key.js +7 -15
  15. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  16. package/lib/Signal/Group/sender-key-message.js +9 -12
  17. package/lib/Signal/Group/sender-key-name.js +2 -5
  18. package/lib/Signal/Group/sender-key-record.js +9 -21
  19. package/lib/Signal/Group/sender-key-state.js +27 -42
  20. package/lib/Signal/Group/sender-message-key.js +4 -7
  21. package/lib/Signal/libsignal.js +347 -90
  22. package/lib/Signal/lid-mapping.js +277 -0
  23. package/lib/Socket/Client/index.js +3 -19
  24. package/lib/Socket/Client/types.js +11 -0
  25. package/lib/Socket/Client/websocket.js +54 -0
  26. package/lib/Socket/business.js +162 -43
  27. package/lib/Socket/chats.js +632 -426
  28. package/lib/Socket/communities.js +90 -80
  29. package/lib/Socket/community.js +392 -0
  30. package/lib/Socket/dugong.js +161 -8
  31. package/lib/Socket/groups.js +154 -160
  32. package/lib/Socket/index.js +11 -10
  33. package/lib/Socket/luxu.js +315 -469
  34. package/lib/Socket/messages-recv.js +1421 -615
  35. package/lib/Socket/messages-send.js +1150 -799
  36. package/lib/Socket/mex.js +42 -0
  37. package/lib/Socket/newsletter.js +139 -313
  38. package/lib/Socket/registration.js +2 -1
  39. package/lib/Socket/socket.js +544 -313
  40. package/lib/Store/index.js +10 -10
  41. package/lib/Store/keyed-db.js +108 -0
  42. package/lib/Store/make-cache-manager-store.js +43 -41
  43. package/lib/Store/make-in-memory-store.js +112 -341
  44. package/lib/Store/make-ordered-dictionary.js +14 -20
  45. package/lib/Store/object-repository.js +11 -6
  46. package/lib/Types/Auth.js +2 -2
  47. package/lib/Types/Bussines.js +2 -0
  48. package/lib/Types/Call.js +2 -2
  49. package/lib/Types/Chat.js +8 -4
  50. package/lib/Types/Contact.js +2 -2
  51. package/lib/Types/Events.js +2 -2
  52. package/lib/Types/GroupMetadata.js +2 -2
  53. package/lib/Types/Label.js +3 -5
  54. package/lib/Types/LabelAssociation.js +3 -5
  55. package/lib/Types/Message.js +11 -9
  56. package/lib/Types/Mex.js +37 -0
  57. package/lib/Types/Product.js +2 -2
  58. package/lib/Types/Signal.js +2 -2
  59. package/lib/Types/Socket.js +3 -2
  60. package/lib/Types/State.js +56 -2
  61. package/lib/Types/USync.js +2 -2
  62. package/lib/Types/index.js +15 -31
  63. package/lib/Utils/auth-utils.js +239 -143
  64. package/lib/Utils/browser-utils.js +48 -0
  65. package/lib/Utils/business.js +66 -69
  66. package/lib/Utils/chat-utils.js +396 -253
  67. package/lib/Utils/companion-reg-client-utils.js +35 -0
  68. package/lib/Utils/crypto.js +57 -90
  69. package/lib/Utils/decode-wa-message.js +236 -84
  70. package/lib/Utils/event-buffer.js +185 -77
  71. package/lib/Utils/generics.js +188 -283
  72. package/lib/Utils/history.js +93 -55
  73. package/lib/Utils/identity-change-handler.js +50 -0
  74. package/lib/Utils/index.js +23 -33
  75. package/lib/Utils/link-preview.js +16 -24
  76. package/lib/Utils/logger.js +3 -7
  77. package/lib/Utils/lt-hash.js +3 -46
  78. package/lib/Utils/make-mutex.js +24 -34
  79. package/lib/Utils/message-composer.js +273 -0
  80. package/lib/Utils/message-retry-manager.js +265 -0
  81. package/lib/Utils/messages-media.js +451 -482
  82. package/lib/Utils/messages.js +795 -369
  83. package/lib/Utils/noise-handler.js +145 -99
  84. package/lib/Utils/offline-node-processor.js +40 -0
  85. package/lib/Utils/pre-key-manager.js +106 -0
  86. package/lib/Utils/process-message.js +459 -150
  87. package/lib/Utils/reporting-utils.js +258 -0
  88. package/lib/Utils/signal.js +120 -72
  89. package/lib/Utils/stanza-ack.js +38 -0
  90. package/lib/Utils/sync-action-utils.js +49 -0
  91. package/lib/Utils/tc-token-utils.js +163 -0
  92. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  93. package/lib/Utils/validate-connection.js +73 -99
  94. package/lib/WABinary/constants.js +1281 -20
  95. package/lib/WABinary/decode.js +52 -42
  96. package/lib/WABinary/encode.js +110 -155
  97. package/lib/WABinary/generic-utils.js +55 -49
  98. package/lib/WABinary/index.js +6 -21
  99. package/lib/WABinary/jid-utils.js +76 -40
  100. package/lib/WABinary/types.js +2 -2
  101. package/lib/WAM/BinaryInfo.js +2 -5
  102. package/lib/WAM/constants.js +19071 -11568
  103. package/lib/WAM/encode.js +17 -22
  104. package/lib/WAM/index.js +4 -19
  105. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  106. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  107. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  108. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  109. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  110. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  111. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  112. package/lib/WAUSync/Protocols/index.js +6 -20
  113. package/lib/WAUSync/USyncQuery.js +44 -35
  114. package/lib/WAUSync/USyncUser.js +10 -5
  115. package/lib/WAUSync/index.js +4 -19
  116. package/lib/index.js +14 -32
  117. package/package.json +133 -101
  118. package/lib/Defaults/index.d.ts +0 -53
  119. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  120. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  121. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  122. package/lib/Signal/Group/index.d.ts +0 -11
  123. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  124. package/lib/Signal/Group/queue-job.d.ts +0 -1
  125. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  126. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  127. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  128. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  129. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  130. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  131. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  132. package/lib/Signal/libsignal.d.ts +0 -3
  133. package/lib/Signal/p +0 -1
  134. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  135. package/lib/Socket/Client/index.d.ts +0 -3
  136. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  137. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  138. package/lib/Socket/business.d.ts +0 -171
  139. package/lib/Socket/chats.d.ts +0 -267
  140. package/lib/Socket/communities.d.ts +0 -180
  141. package/lib/Socket/dugong.d.ts +0 -254
  142. package/lib/Socket/groups.d.ts +0 -115
  143. package/lib/Socket/index.d.ts +0 -173
  144. package/lib/Socket/luxu.d.ts +0 -266
  145. package/lib/Socket/messages-recv.d.ts +0 -161
  146. package/lib/Socket/messages-send.d.ts +0 -183
  147. package/lib/Socket/newsletter.d.ts +0 -134
  148. package/lib/Socket/registration.d.ts +0 -267
  149. package/lib/Socket/socket.d.ts +0 -44
  150. package/lib/Socket/usync.d.ts +0 -36
  151. package/lib/Store/index.d.ts +0 -3
  152. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  153. package/lib/Store/make-in-memory-store.d.ts +0 -118
  154. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  155. package/lib/Store/object-repository.d.ts +0 -10
  156. package/lib/Types/Auth.d.ts +0 -110
  157. package/lib/Types/Call.d.ts +0 -13
  158. package/lib/Types/Chat.d.ts +0 -102
  159. package/lib/Types/Contact.d.ts +0 -19
  160. package/lib/Types/Events.d.ts +0 -157
  161. package/lib/Types/GroupMetadata.d.ts +0 -55
  162. package/lib/Types/Label.d.ts +0 -35
  163. package/lib/Types/LabelAssociation.d.ts +0 -29
  164. package/lib/Types/Message.d.ts +0 -273
  165. package/lib/Types/Newsletter.d.ts +0 -103
  166. package/lib/Types/Product.d.ts +0 -78
  167. package/lib/Types/Signal.d.ts +0 -57
  168. package/lib/Types/Socket.d.ts +0 -111
  169. package/lib/Types/State.d.ts +0 -27
  170. package/lib/Types/USync.d.ts +0 -25
  171. package/lib/Types/index.d.ts +0 -57
  172. package/lib/Utils/auth-utils.d.ts +0 -18
  173. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  174. package/lib/Utils/business.d.ts +0 -22
  175. package/lib/Utils/chat-utils.d.ts +0 -71
  176. package/lib/Utils/crypto.d.ts +0 -41
  177. package/lib/Utils/decode-wa-message.d.ts +0 -19
  178. package/lib/Utils/event-buffer.d.ts +0 -35
  179. package/lib/Utils/generics.d.ts +0 -92
  180. package/lib/Utils/history.d.ts +0 -15
  181. package/lib/Utils/index.d.ts +0 -17
  182. package/lib/Utils/link-preview.d.ts +0 -21
  183. package/lib/Utils/logger.d.ts +0 -4
  184. package/lib/Utils/lt-hash.d.ts +0 -12
  185. package/lib/Utils/make-mutex.d.ts +0 -7
  186. package/lib/Utils/messages-media.d.ts +0 -116
  187. package/lib/Utils/messages.d.ts +0 -77
  188. package/lib/Utils/noise-handler.d.ts +0 -21
  189. package/lib/Utils/process-message.d.ts +0 -41
  190. package/lib/Utils/signal.d.ts +0 -32
  191. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  192. package/lib/Utils/validate-connection.d.ts +0 -11
  193. package/lib/WABinary/constants.d.ts +0 -30
  194. package/lib/WABinary/decode.d.ts +0 -7
  195. package/lib/WABinary/encode.d.ts +0 -3
  196. package/lib/WABinary/generic-utils.d.ts +0 -17
  197. package/lib/WABinary/index.d.ts +0 -5
  198. package/lib/WABinary/jid-utils.d.ts +0 -31
  199. package/lib/WABinary/types.d.ts +0 -18
  200. package/lib/WAM/BinaryInfo.d.ts +0 -17
  201. package/lib/WAM/constants.d.ts +0 -38
  202. package/lib/WAM/encode.d.ts +0 -3
  203. package/lib/WAM/index.d.ts +0 -3
  204. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  205. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  206. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  208. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  209. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  210. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  211. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  212. package/lib/WAUSync/USyncUser.d.ts +0 -12
  213. package/lib/WAUSync/index.d.ts +0 -3
  214. package/lib/index.d.ts +0 -12
@@ -0,0 +1,35 @@
1
+ export var CompanionWebClientType;
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";
13
+ })(CompanionWebClientType || (CompanionWebClientType = {}));
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
21
+ };
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;
27
+ };
28
+ export const getCompanionPlatformId = (browser) => {
29
+ return getCompanionWebClientType(browser).toString();
30
+ };
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(','));
34
+ };
35
+ //# sourceMappingURL=companion-reg-client-utils.js.map
@@ -1,44 +1,14 @@
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]; } };
7
- }
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");
1
+ import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from 'crypto';
2
+ import * as curve from 'libsignal/src/curve.js';
3
+ import { KEY_BUNDLE_TYPE } from '../Defaults/index.js';
4
+ export { md5, hkdf } from 'whatsapp-rust-bridge';
5
+ // insure browser & node compatibility
6
+ const { subtle } = globalThis.crypto;
34
7
  /** 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 = {
8
+ export const generateSignalPubKey = (pubKey) => pubKey.length === 33 ? pubKey : Buffer.concat([KEY_BUNDLE_TYPE, pubKey]);
9
+ export const Curve = {
40
10
  generateKeyPair: () => {
41
- const { pubKey, privKey } = libsignal.curve.generateKeyPair();
11
+ const { pubKey, privKey } = curve.generateKeyPair();
42
12
  return {
43
13
  private: Buffer.from(privKey),
44
14
  // remove version byte
@@ -46,13 +16,13 @@ exports.Curve = {
46
16
  };
47
17
  },
48
18
  sharedKey: (privateKey, publicKey) => {
49
- const shared = libsignal.curve.calculateAgreement((0, exports.generateSignalPubKey)(publicKey), privateKey);
19
+ const shared = curve.calculateAgreement(generateSignalPubKey(publicKey), privateKey);
50
20
  return Buffer.from(shared);
51
21
  },
52
- sign: (privateKey, buf) => (libsignal.curve.calculateSignature(privateKey, buf)),
22
+ sign: (privateKey, buf) => curve.calculateSignature(privateKey, buf),
53
23
  verify: (pubKey, message, signature) => {
54
24
  try {
55
- libsignal.curve.verifySignature((0, exports.generateSignalPubKey)(pubKey), message, signature);
25
+ curve.verifySignature(generateSignalPubKey(pubKey), message, signature);
56
26
  return true;
57
27
  }
58
28
  catch (error) {
@@ -60,30 +30,28 @@ exports.Curve = {
60
30
  }
61
31
  }
62
32
  };
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);
33
+ export const signedKeyPair = (identityKeyPair, keyId) => {
34
+ const preKey = Curve.generateKeyPair();
35
+ const pubKey = generateSignalPubKey(preKey.public);
36
+ const signature = Curve.sign(identityKeyPair.private, pubKey);
67
37
  return { keyPair: preKey, signature, keyId };
68
38
  };
69
- exports.signedKeyPair = signedKeyPair;
70
39
  const GCM_TAG_LENGTH = 128 >> 3;
71
40
  /**
72
41
  * encrypt AES 256 GCM;
73
42
  * where the tag tag is suffixed to the ciphertext
74
43
  * */
75
- function aesEncryptGCM(plaintext, key, iv, additionalData) {
76
- const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', key, iv);
44
+ export function aesEncryptGCM(plaintext, key, iv, additionalData) {
45
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
77
46
  cipher.setAAD(additionalData);
78
47
  return Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
79
48
  }
80
- exports.aesEncryptGCM = aesEncryptGCM;
81
49
  /**
82
50
  * decrypt AES 256 GCM;
83
51
  * where the auth tag is suffixed to the ciphertext
84
52
  * */
85
- function aesDecryptGCM(ciphertext, key, iv, additionalData) {
86
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', key, iv);
53
+ export function aesDecryptGCM(ciphertext, key, iv, additionalData) {
54
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
87
55
  // decrypt additional adata
88
56
  const enc = ciphertext.slice(0, ciphertext.length - GCM_TAG_LENGTH);
89
57
  const tag = ciphertext.slice(ciphertext.length - GCM_TAG_LENGTH);
@@ -92,60 +60,59 @@ function aesDecryptGCM(ciphertext, key, iv, additionalData) {
92
60
  decipher.setAuthTag(tag);
93
61
  return Buffer.concat([decipher.update(enc), decipher.final()]);
94
62
  }
95
- exports.aesDecryptGCM = aesDecryptGCM;
96
- function aesEncryptCTR(plaintext, key, iv) {
97
- const cipher = (0, crypto_1.createCipheriv)('aes-256-ctr', key, iv);
63
+ export function aesEncryptCTR(plaintext, key, iv) {
64
+ const cipher = createCipheriv('aes-256-ctr', key, iv);
98
65
  return Buffer.concat([cipher.update(plaintext), cipher.final()]);
99
66
  }
100
- exports.aesEncryptCTR = aesEncryptCTR;
101
- function aesDecryptCTR(ciphertext, key, iv) {
102
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-ctr', key, iv);
67
+ export function aesDecryptCTR(ciphertext, key, iv) {
68
+ const decipher = createDecipheriv('aes-256-ctr', key, iv);
103
69
  return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
104
70
  }
105
- exports.aesDecryptCTR = aesDecryptCTR;
106
71
  /** 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));
72
+ export function aesDecrypt(buffer, key) {
73
+ return aesDecryptWithIV(buffer.subarray(16), key, buffer.subarray(0, 16));
109
74
  }
110
- exports.aesDecrypt = aesDecrypt;
111
75
  /** decrypt AES 256 CBC */
112
- function aesDecryptWithIV(buffer, key, IV) {
113
- const aes = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, IV);
76
+ export function aesDecryptWithIV(buffer, key, IV) {
77
+ const aes = createDecipheriv('aes-256-cbc', key, IV);
114
78
  return Buffer.concat([aes.update(buffer), aes.final()]);
115
79
  }
116
- exports.aesDecryptWithIV = aesDecryptWithIV;
117
80
  // 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);
81
+ export function aesEncrypt(buffer, key) {
82
+ const IV = randomBytes(16);
83
+ const aes = createCipheriv('aes-256-cbc', key, IV);
121
84
  return Buffer.concat([IV, aes.update(buffer), aes.final()]); // prefix IV to the buffer
122
85
  }
123
- exports.aesEncrypt = aesEncrypt;
124
86
  // 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);
87
+ export function aesEncrypWithIV(buffer, key, IV) {
88
+ const aes = createCipheriv('aes-256-cbc', key, IV);
127
89
  return Buffer.concat([aes.update(buffer), aes.final()]); // prefix IV to the buffer
128
90
  }
129
- exports.aesEncrypWithIV = aesEncrypWithIV;
130
91
  // sign HMAC using SHA 256
131
- function hmacSign(buffer, key, variant = 'sha256') {
132
- return (0, crypto_1.createHmac)(variant, key).update(buffer).digest();
133
- }
134
- exports.hmacSign = hmacSign;
135
- function sha256(buffer) {
136
- return (0, crypto_1.createHash)('sha256').update(buffer).digest();
137
- }
138
- exports.sha256 = sha256;
139
- function md5(buffer) {
140
- return (0, crypto_1.createHash)('md5').update(buffer).digest();
92
+ export function hmacSign(buffer, key, variant = 'sha256') {
93
+ return createHmac(variant, key).update(buffer).digest();
141
94
  }
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);
95
+ export function sha256(buffer) {
96
+ return createHash('sha256').update(buffer).digest();
146
97
  }
147
- exports.hkdf = hkdf;
148
- function derivePairingCodeKey(pairingCode, salt) {
149
- return (0, crypto_1.pbkdf2Sync)(pairingCode, salt, 2 << 16, 32, 'sha256');
98
+ 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);
150
117
  }
151
- exports.derivePairingCodeKey = derivePairingCodeKey;
118
+ //# sourceMappingURL=crypto.js.map