@neelegirl/baileys 1.5.3 → 1.5.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 (224) hide show
  1. package/README.md +16 -195
  2. package/index.js +38 -0
  3. package/package.json +16 -96
  4. package/LICENSE +0 -21
  5. package/WAProto/WAProto.proto +0 -5308
  6. package/WAProto/index.d.ts +0 -61295
  7. package/WAProto/index.js +0 -189754
  8. package/lib/Defaults/baileys-version.json +0 -3
  9. package/lib/Defaults/index.d.ts +0 -78
  10. package/lib/Defaults/index.js +0 -149
  11. package/lib/Defaults/phonenumber-mcc.json +0 -223
  12. package/lib/Signal/WASignalGroup/GroupProtocol.js +0 -1909
  13. package/lib/Signal/WASignalGroup/ciphertext-message.d.ts +0 -9
  14. package/lib/Signal/WASignalGroup/ciphertext-message.js +0 -19
  15. package/lib/Signal/WASignalGroup/ciphertext_message.js +0 -16
  16. package/lib/Signal/WASignalGroup/generate-proto.sh +0 -1
  17. package/lib/Signal/WASignalGroup/group-session-builder.d.ts +0 -17
  18. package/lib/Signal/WASignalGroup/group-session-builder.js +0 -72
  19. package/lib/Signal/WASignalGroup/group.proto +0 -42
  20. package/lib/Signal/WASignalGroup/group_cipher.d.ts +0 -19
  21. package/lib/Signal/WASignalGroup/group_cipher.js +0 -111
  22. package/lib/Signal/WASignalGroup/group_session_builder.js +0 -46
  23. package/lib/Signal/WASignalGroup/index.d.ts +0 -11
  24. package/lib/Signal/WASignalGroup/index.js +0 -61
  25. package/lib/Signal/WASignalGroup/keyhelper.d.ts +0 -16
  26. package/lib/Signal/WASignalGroup/keyhelper.js +0 -66
  27. package/lib/Signal/WASignalGroup/protobufs.js +0 -3
  28. package/lib/Signal/WASignalGroup/queue_job.js +0 -69
  29. package/lib/Signal/WASignalGroup/readme.md +0 -6
  30. package/lib/Signal/WASignalGroup/sender-chain-key.d.ts +0 -14
  31. package/lib/Signal/WASignalGroup/sender-chain-key.js +0 -47
  32. package/lib/Signal/WASignalGroup/sender-key-distribution-message.d.ts +0 -17
  33. package/lib/Signal/WASignalGroup/sender-key-distribution-message.js +0 -71
  34. package/lib/Signal/WASignalGroup/sender-key-message.d.ts +0 -19
  35. package/lib/Signal/WASignalGroup/sender-key-message.js +0 -73
  36. package/lib/Signal/WASignalGroup/sender-key-name.d.ts +0 -19
  37. package/lib/Signal/WASignalGroup/sender-key-name.js +0 -59
  38. package/lib/Signal/WASignalGroup/sender-key-record.d.ts +0 -32
  39. package/lib/Signal/WASignalGroup/sender-key-record.js +0 -58
  40. package/lib/Signal/WASignalGroup/sender-key-state.d.ts +0 -44
  41. package/lib/Signal/WASignalGroup/sender-key-state.js +0 -147
  42. package/lib/Signal/WASignalGroup/sender-message-key.d.ts +0 -11
  43. package/lib/Signal/WASignalGroup/sender-message-key.js +0 -33
  44. package/lib/Signal/WASignalGroup/sender_chain_key.js +0 -50
  45. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +0 -78
  46. package/lib/Signal/WASignalGroup/sender_key_message.js +0 -92
  47. package/lib/Signal/WASignalGroup/sender_key_name.js +0 -70
  48. package/lib/Signal/WASignalGroup/sender_key_record.js +0 -56
  49. package/lib/Signal/WASignalGroup/sender_key_state.js +0 -129
  50. package/lib/Signal/WASignalGroup/sender_message_key.js +0 -39
  51. package/lib/Signal/libsignal.d.ts +0 -8
  52. package/lib/Signal/libsignal.js +0 -391
  53. package/lib/Signal/lid-mapping.d.ts +0 -28
  54. package/lib/Signal/lid-mapping.js +0 -184
  55. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -15
  56. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  57. package/lib/Socket/Client/index.d.ts +0 -2
  58. package/lib/Socket/Client/index.js +0 -22
  59. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -12
  60. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  61. package/lib/Socket/Client/types.d.ts +0 -16
  62. package/lib/Socket/Client/types.js +0 -18
  63. package/lib/Socket/Client/websocket.d.ts +0 -13
  64. package/lib/Socket/Client/websocket.js +0 -62
  65. package/lib/Socket/business.d.ts +0 -187
  66. package/lib/Socket/business.js +0 -415
  67. package/lib/Socket/chats.d.ts +0 -97
  68. package/lib/Socket/chats.js +0 -1118
  69. package/lib/Socket/communities.d.ts +0 -223
  70. package/lib/Socket/communities.js +0 -433
  71. package/lib/Socket/groups.d.ts +0 -129
  72. package/lib/Socket/groups.js +0 -360
  73. package/lib/Socket/index.d.ts +0 -191
  74. package/lib/Socket/index.js +0 -24
  75. package/lib/Socket/messages-recv.d.ts +0 -174
  76. package/lib/Socket/messages-recv.js +0 -1506
  77. package/lib/Socket/messages-send.d.ts +0 -165
  78. package/lib/Socket/messages-send.js +0 -1785
  79. package/lib/Socket/mex.d.ts +0 -2
  80. package/lib/Socket/mex.js +0 -47
  81. package/lib/Socket/newsletter.d.ts +0 -145
  82. package/lib/Socket/newsletter.js +0 -295
  83. package/lib/Socket/socket.d.ts +0 -45
  84. package/lib/Socket/socket.js +0 -934
  85. package/lib/Socket/usync.d.ts +0 -37
  86. package/lib/Socket/usync.js +0 -83
  87. package/lib/Store/index.d.ts +0 -4
  88. package/lib/Store/index.js +0 -24
  89. package/lib/Store/make-cache-manager-store.d.ts +0 -14
  90. package/lib/Store/make-cache-manager-store.js +0 -90
  91. package/lib/Store/make-in-memory-store.d.ts +0 -123
  92. package/lib/Store/make-in-memory-store.js +0 -429
  93. package/lib/Store/make-ordered-dictionary.d.ts +0 -12
  94. package/lib/Store/make-ordered-dictionary.js +0 -86
  95. package/lib/Store/object-repository.d.ts +0 -10
  96. package/lib/Store/object-repository.js +0 -31
  97. package/lib/Types/Auth.d.ts +0 -121
  98. package/lib/Types/Auth.js +0 -3
  99. package/lib/Types/Bussines.js +0 -3
  100. package/lib/Types/Bussiness.d.ts +0 -28
  101. package/lib/Types/Call.d.ts +0 -14
  102. package/lib/Types/Call.js +0 -3
  103. package/lib/Types/Chat.d.ts +0 -143
  104. package/lib/Types/Chat.js +0 -9
  105. package/lib/Types/Contact.d.ts +0 -23
  106. package/lib/Types/Contact.js +0 -3
  107. package/lib/Types/Events.d.ts +0 -226
  108. package/lib/Types/Events.js +0 -3
  109. package/lib/Types/GroupMetadata.d.ts +0 -66
  110. package/lib/Types/GroupMetadata.js +0 -3
  111. package/lib/Types/Label.d.ts +0 -48
  112. package/lib/Types/Label.js +0 -31
  113. package/lib/Types/LabelAssociation.d.ts +0 -35
  114. package/lib/Types/LabelAssociation.js +0 -13
  115. package/lib/Types/Message.d.ts +0 -484
  116. package/lib/Types/Message.js +0 -19
  117. package/lib/Types/MexUpdates.d.ts +0 -9
  118. package/lib/Types/MexUpdates.js +0 -18
  119. package/lib/Types/Newsletter.d.ts +0 -109
  120. package/lib/Types/Newsletter.js +0 -40
  121. package/lib/Types/Product.d.ts +0 -92
  122. package/lib/Types/Product.js +0 -3
  123. package/lib/Types/Signal.d.ts +0 -98
  124. package/lib/Types/Signal.js +0 -3
  125. package/lib/Types/Socket.d.ts +0 -141
  126. package/lib/Types/Socket.js +0 -3
  127. package/lib/Types/State.d.ts +0 -41
  128. package/lib/Types/State.js +0 -14
  129. package/lib/Types/USync.d.ts +0 -26
  130. package/lib/Types/USync.js +0 -3
  131. package/lib/Types/index.d.ts +0 -80
  132. package/lib/Types/index.js +0 -50
  133. package/lib/Utils/auth-utils.d.ts +0 -21
  134. package/lib/Utils/auth-utils.js +0 -528
  135. package/lib/Utils/baileys-event-stream.d.ts +0 -18
  136. package/lib/Utils/baileys-event-stream.js +0 -70
  137. package/lib/Utils/business.d.ts +0 -29
  138. package/lib/Utils/business.js +0 -255
  139. package/lib/Utils/chat-utils.d.ts +0 -82
  140. package/lib/Utils/chat-utils.js +0 -809
  141. package/lib/Utils/crypto.d.ts +0 -56
  142. package/lib/Utils/crypto.js +0 -189
  143. package/lib/Utils/decode-wa-message.d.ts +0 -53
  144. package/lib/Utils/decode-wa-message.js +0 -323
  145. package/lib/Utils/event-buffer.d.ts +0 -39
  146. package/lib/Utils/event-buffer.js +0 -595
  147. package/lib/Utils/generics.d.ts +0 -131
  148. package/lib/Utils/generics.js +0 -630
  149. package/lib/Utils/history.d.ts +0 -23
  150. package/lib/Utils/history.js +0 -104
  151. package/lib/Utils/index.d.ts +0 -20
  152. package/lib/Utils/index.js +0 -40
  153. package/lib/Utils/link-preview.d.ts +0 -23
  154. package/lib/Utils/link-preview.js +0 -120
  155. package/lib/Utils/logger.d.ts +0 -13
  156. package/lib/Utils/logger.js +0 -7
  157. package/lib/Utils/lt-hash.d.ts +0 -14
  158. package/lib/Utils/lt-hash.js +0 -58
  159. package/lib/Utils/make-mutex.d.ts +0 -9
  160. package/lib/Utils/make-mutex.js +0 -49
  161. package/lib/Utils/message-retry-manager.d.ts +0 -88
  162. package/lib/Utils/message-retry-manager.js +0 -160
  163. package/lib/Utils/messages-media.d.ts +0 -135
  164. package/lib/Utils/messages-media.js +0 -869
  165. package/lib/Utils/messages.d.ts +0 -105
  166. package/lib/Utils/messages.js +0 -1745
  167. package/lib/Utils/noise-handler.d.ts +0 -21
  168. package/lib/Utils/noise-handler.js +0 -165
  169. package/lib/Utils/process-message.d.ts +0 -49
  170. package/lib/Utils/process-message.js +0 -427
  171. package/lib/Utils/signal.d.ts +0 -42
  172. package/lib/Utils/signal.js +0 -166
  173. package/lib/Utils/use-mongo-file-auth-state.d.ts +0 -6
  174. package/lib/Utils/use-mongo-file-auth-state.js +0 -84
  175. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -18
  176. package/lib/Utils/use-multi-file-auth-state.js +0 -238
  177. package/lib/Utils/use-single-file-auth-state.d.ts +0 -13
  178. package/lib/Utils/use-single-file-auth-state.js +0 -80
  179. package/lib/Utils/validate-connection.d.ts +0 -13
  180. package/lib/Utils/validate-connection.js +0 -220
  181. package/lib/WABinary/constants.d.ts +0 -30
  182. package/lib/WABinary/constants.js +0 -1316
  183. package/lib/WABinary/decode.d.ts +0 -9
  184. package/lib/WABinary/decode.js +0 -288
  185. package/lib/WABinary/encode.d.ts +0 -3
  186. package/lib/WABinary/encode.js +0 -265
  187. package/lib/WABinary/generic-utils.d.ts +0 -28
  188. package/lib/WABinary/generic-utils.js +0 -142
  189. package/lib/WABinary/index.d.ts +0 -5
  190. package/lib/WABinary/index.js +0 -25
  191. package/lib/WABinary/jid-utils.d.ts +0 -58
  192. package/lib/WABinary/jid-utils.js +0 -104
  193. package/lib/WABinary/types.d.ts +0 -22
  194. package/lib/WABinary/types.js +0 -3
  195. package/lib/WAM/BinaryInfo.d.ts +0 -16
  196. package/lib/WAM/BinaryInfo.js +0 -17
  197. package/lib/WAM/constants.d.ts +0 -47
  198. package/lib/WAM/constants.js +0 -15371
  199. package/lib/WAM/encode.d.ts +0 -3
  200. package/lib/WAM/encode.js +0 -164
  201. package/lib/WAM/index.d.ts +0 -3
  202. package/lib/WAM/index.js +0 -23
  203. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +0 -28
  204. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -69
  205. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -10
  206. package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -36
  207. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -26
  208. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -62
  209. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -14
  210. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -35
  211. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +0 -10
  212. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +0 -38
  213. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -14
  214. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -46
  215. package/lib/WAUSync/Protocols/index.d.ts +0 -6
  216. package/lib/WAUSync/Protocols/index.js +0 -26
  217. package/lib/WAUSync/USyncQuery.d.ts +0 -31
  218. package/lib/WAUSync/USyncQuery.js +0 -92
  219. package/lib/WAUSync/USyncUser.d.ts +0 -12
  220. package/lib/WAUSync/USyncUser.js +0 -30
  221. package/lib/WAUSync/index.d.ts +0 -3
  222. package/lib/WAUSync/index.js +0 -23
  223. package/lib/index.d.ts +0 -13
  224. package/lib/index.js +0 -33
@@ -1,9 +0,0 @@
1
- export declare class CiphertextMessage {
2
- readonly UNSUPPORTED_VERSION: number
3
- readonly CURRENT_VERSION: number
4
- readonly WHISPER_TYPE: number
5
- readonly PREKEY_TYPE: number
6
- readonly SENDERKEY_TYPE: number
7
- readonly SENDERKEY_DISTRIBUTION_TYPE: number
8
- readonly ENCRYPTED_MESSAGE_OVERHEAD: number
9
- }
@@ -1,19 +0,0 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- class CiphertextMessage {
6
- constructor() {
7
- this.UNSUPPORTED_VERSION = 1
8
- this.CURRENT_VERSION = 3
9
- this.WHISPER_TYPE = 2
10
- this.PREKEY_TYPE = 3
11
- this.SENDERKEY_TYPE = 4
12
- this.SENDERKEY_DISTRIBUTION_TYPE = 5
13
- this.ENCRYPTED_MESSAGE_OVERHEAD = 53
14
- }
15
- }
16
-
17
- module.exports = {
18
- CiphertextMessage
19
- }
@@ -1,16 +0,0 @@
1
- class CiphertextMessage {
2
- UNSUPPORTED_VERSION = 1;
3
-
4
- CURRENT_VERSION = 3;
5
-
6
- WHISPER_TYPE = 2;
7
-
8
- PREKEY_TYPE = 3;
9
-
10
- SENDERKEY_TYPE = 4;
11
-
12
- SENDERKEY_DISTRIBUTION_TYPE = 5;
13
-
14
- ENCRYPTED_MESSAGE_OVERHEAD = 53;
15
- }
16
- module.exports = CiphertextMessage;
@@ -1 +0,0 @@
1
- yarn pbjs -t static-module -w commonjs -o ./WASignalGroup/GroupProtocol.js ./WASignalGroup/group.proto
@@ -1,17 +0,0 @@
1
- import { SenderKeyDistributionMessage } from './sender-key-distribution-message'
2
- import { SenderKeyName } from './sender-key-name'
3
- import { SenderKeyRecord } from './sender-key-record'
4
-
5
- interface SenderKeyStore {
6
- loadSenderKey(senderKeyName: SenderKeyName): Promise<SenderKeyRecord>
7
- storeSenderKey(senderKeyName: SenderKeyName, record: SenderKeyRecord): Promise<void>
8
- }
9
-
10
- export declare class GroupSessionBuilder {
11
- private readonly senderKeyStore
12
- constructor(senderKeyStore: SenderKeyStore)
13
- process(senderKeyName: SenderKeyName, senderKeyDistributionMessage: SenderKeyDistributionMessage): Promise<void>
14
- create(senderKeyName: SenderKeyName): Promise<SenderKeyDistributionMessage>
15
- }
16
-
17
- export {}
@@ -1,72 +0,0 @@
1
- "use strict"
2
-
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k
5
- var desc = Object.getOwnPropertyDescriptor(m, k)
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k] } }
8
- }
9
- Object.defineProperty(o, k2, desc)
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k
12
- o[k2] = m[k]
13
- }))
14
-
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v })
17
- }) : function(o, v) {
18
- o["default"] = v
19
- })
20
-
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = []
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k
26
- return ar
27
- }
28
- return ownKeys(o)
29
- }
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod
32
- var result = {}
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i])
34
- __setModuleDefault(result, mod)
35
- return result
36
- }
37
- })()
38
-
39
- Object.defineProperty(exports, "__esModule", { value: true })
40
-
41
- const keyhelper = __importStar(require("./keyhelper"))
42
- const sender_key_distribution_message_1 = require("./sender-key-distribution-message")
43
-
44
- class GroupSessionBuilder {
45
- constructor(senderKeyStore) {
46
- this.senderKeyStore = senderKeyStore
47
- }
48
- async process(senderKeyName, senderKeyDistributionMessage) {
49
- const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName)
50
- senderKeyRecord.addSenderKeyState(senderKeyDistributionMessage.getId(), senderKeyDistributionMessage.getIteration(), senderKeyDistributionMessage.getChainKey(), senderKeyDistributionMessage.getSignatureKey())
51
- await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord)
52
- }
53
- async create(senderKeyName) {
54
- const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName)
55
- if (senderKeyRecord.isEmpty()) {
56
- const keyId = keyhelper.generateSenderKeyId()
57
- const senderKey = keyhelper.generateSenderKey()
58
- const signingKey = keyhelper.generateSenderSigningKey()
59
- senderKeyRecord.setSenderKeyState(keyId, 0, senderKey, signingKey)
60
- await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord)
61
- }
62
- const state = senderKeyRecord.getSenderKeyState()
63
- if (!state) {
64
- throw new Error('No session state available')
65
- }
66
- return new sender_key_distribution_message_1.SenderKeyDistributionMessage(state.getKeyId(), state.getSenderChainKey().getIteration(), state.getSenderChainKey().getSeed(), state.getSigningKeyPublic())
67
- }
68
- }
69
-
70
- module.exports = {
71
- GroupSessionBuilder
72
- }
@@ -1,42 +0,0 @@
1
- package groupproto;
2
-
3
- message SenderKeyMessage {
4
- optional uint32 id = 1;
5
- optional uint32 iteration = 2;
6
- optional bytes ciphertext = 3;
7
- }
8
-
9
- message SenderKeyDistributionMessage {
10
- optional uint32 id = 1;
11
- optional uint32 iteration = 2;
12
- optional bytes chainKey = 3;
13
- optional bytes signingKey = 4;
14
- }
15
-
16
- message SenderChainKey {
17
- optional uint32 iteration = 1;
18
- optional bytes seed = 2;
19
- }
20
-
21
- message SenderMessageKey {
22
- optional uint32 iteration = 1;
23
- optional bytes seed = 2;
24
- }
25
-
26
- message SenderSigningKey {
27
- optional bytes public = 1;
28
- optional bytes private = 2;
29
- }
30
-
31
- message SenderKeyStateStructure {
32
-
33
-
34
- optional uint32 senderKeyId = 1;
35
- optional SenderChainKey senderChainKey = 2;
36
- optional SenderSigningKey senderSigningKey = 3;
37
- repeated SenderMessageKey senderMessageKeys = 4;
38
- }
39
-
40
- message SenderKeyRecordStructure {
41
- repeated SenderKeyStateStructure senderKeyStates = 1;
42
- }
@@ -1,19 +0,0 @@
1
- import { SenderKeyName } from './sender-key-name'
2
- import { SenderKeyRecord } from './sender-key-record'
3
-
4
- export interface SenderKeyStore {
5
- loadSenderKey(senderKeyName: SenderKeyName): Promise<SenderKeyRecord>
6
- storeSenderKey(senderKeyName: SenderKeyName, record: SenderKeyRecord): Promise<void>
7
- }
8
-
9
- export declare class GroupCipher {
10
- private readonly senderKeyStore
11
- private readonly senderKeyName
12
- constructor(senderKeyStore: SenderKeyStore, senderKeyName: SenderKeyName)
13
- private queueJob
14
- encrypt(paddedPlaintext: Uint8Array | string): Promise<Uint8Array>
15
- decrypt(senderKeyMessageBytes: Uint8Array): Promise<Uint8Array>
16
- private getSenderKey
17
- private getPlainText
18
- private getCipherText
19
- }
@@ -1,111 +0,0 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- const crypto_1 = require("@neelegirl/libsignal/src/crypto")
6
- const sender_key_message_1 = require("./sender-key-message")
7
-
8
- class GroupCipher {
9
- constructor(senderKeyStore, senderKeyName) {
10
- this.senderKeyStore = senderKeyStore
11
- this.senderKeyName = senderKeyName
12
- }
13
- async encrypt(paddedPlaintext) {
14
- const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName)
15
-
16
- if (!record) {
17
- throw new Error('No SenderKeyRecord found for encryption')
18
- }
19
-
20
- const senderKeyState = record.getSenderKeyState()
21
-
22
- if (!senderKeyState) {
23
- throw new Error('No session to encrypt message')
24
- }
25
-
26
- const iteration = senderKeyState.getSenderChainKey().getIteration()
27
- const senderKey = this.getSenderKey(senderKeyState, iteration === 0 ? 0 : iteration + 1)
28
- const ciphertext = await this.getCipherText(senderKey.getIv(), senderKey.getCipherKey(), paddedPlaintext)
29
- const senderKeyMessage = new sender_key_message_1.SenderKeyMessage(senderKeyState.getKeyId(), senderKey.getIteration(), ciphertext, senderKeyState.getSigningKeyPrivate())
30
-
31
- await this.senderKeyStore.storeSenderKey(this.senderKeyName, record)
32
-
33
- return senderKeyMessage.serialize()
34
- }
35
- async decrypt(senderKeyMessageBytes) {
36
- const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName)
37
-
38
- if (!record) {
39
- throw new Error('No SenderKeyRecord found for decryption')
40
- }
41
-
42
- const senderKeyMessage = new sender_key_message_1.SenderKeyMessage(null, null, null, null, senderKeyMessageBytes)
43
- const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId())
44
-
45
- if (!senderKeyState) {
46
- throw new Error('No session found to decrypt message');
47
- }
48
-
49
- senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic())
50
-
51
- const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration())
52
- const plaintext = await this.getPlainText(senderKey.getIv(), senderKey.getCipherKey(), senderKeyMessage.getCipherText())
53
-
54
- await this.senderKeyStore.storeSenderKey(this.senderKeyName, record)
55
-
56
- return plaintext
57
- }
58
- getSenderKey(senderKeyState, iteration) {
59
- let senderChainKey = senderKeyState.getSenderChainKey()
60
-
61
- if (senderChainKey.getIteration() > iteration) {
62
- if (senderKeyState.hasSenderMessageKey(iteration)) {
63
- const messageKey = senderKeyState.removeSenderMessageKey(iteration)
64
-
65
- if (!messageKey) {
66
- throw new Error('No sender message key found for iteration')
67
- }
68
-
69
- return messageKey
70
- }
71
-
72
- throw new Error(`Received message with old counter: ${senderChainKey.getIteration()}, ${iteration}`)
73
- }
74
-
75
- if (iteration - senderChainKey.getIteration() > 2000) {
76
- throw new Error('Over 2000 messages into the future!');
77
- }
78
-
79
- while (senderChainKey.getIteration() < iteration) {
80
- senderKeyState.addSenderMessageKey(senderChainKey.getSenderMessageKey())
81
- senderChainKey = senderChainKey.getNext()
82
- }
83
-
84
- senderKeyState.setSenderChainKey(senderChainKey.getNext())
85
-
86
- return senderChainKey.getSenderMessageKey()
87
- }
88
- async getPlainText(iv, key, ciphertext) {
89
- try {
90
- return crypto_1.decrypt(key, ciphertext, iv)
91
- }
92
- catch (e) {
93
- throw new Error('InvalidMessageException')
94
- }
95
- }
96
- async getCipherText(iv, key, plaintext) {
97
- try {
98
- const ivBuffer = typeof iv === 'string' ? Buffer.from(iv, 'base64') : iv
99
- const keyBuffer = typeof key === 'string' ? Buffer.from(key, 'base64') : key
100
- const plaintextBuffer = typeof plaintext === 'string' ? Buffer.from(plaintext) : plaintext
101
- return crypto_1.encrypt(keyBuffer, plaintextBuffer, ivBuffer)
102
- }
103
- catch (e) {
104
- throw new Error('InvalidMessageException')
105
- }
106
- }
107
- }
108
-
109
- module.exports = {
110
- GroupCipher
111
- }
@@ -1,46 +0,0 @@
1
- //const utils = require('../../common/utils');
2
- const SenderKeyDistributionMessage = require('./sender_key_distribution_message');
3
-
4
- const keyhelper = require("./keyhelper");
5
- class GroupSessionBuilder {
6
- constructor(senderKeyStore) {
7
- this.senderKeyStore = senderKeyStore;
8
- }
9
-
10
- async process(senderKeyName, senderKeyDistributionMessage) {
11
- //console.log('GroupSessionBuilder process', senderKeyName, senderKeyDistributionMessage);
12
- const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName);
13
- senderKeyRecord.addSenderKeyState(
14
- senderKeyDistributionMessage.getId(),
15
- senderKeyDistributionMessage.getIteration(),
16
- senderKeyDistributionMessage.getChainKey(),
17
- senderKeyDistributionMessage.getSignatureKey()
18
- );
19
- await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
20
- }
21
-
22
- // [{"senderKeyId":1742199468,"senderChainKey":{"iteration":0,"seed":"yxMY9VFQcXEP34olRAcGCtsgx1XoKsHfDIh+1ea4HAQ="},"senderSigningKey":{"public":""}}]
23
- async create(senderKeyName) {
24
- const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName);
25
- //console.log('GroupSessionBuilder create session', senderKeyName, senderKeyRecord);
26
-
27
- if (senderKeyRecord.isEmpty()) {
28
- const keyId = keyhelper.generateSenderKeyId();
29
- const senderKey = keyhelper.generateSenderKey();
30
- const signingKey = keyhelper.generateSenderSigningKey();
31
-
32
- senderKeyRecord.setSenderKeyState(keyId, 0, senderKey, signingKey);
33
- await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
34
- }
35
-
36
- const state = senderKeyRecord.getSenderKeyState();
37
-
38
- return new SenderKeyDistributionMessage(
39
- state.getKeyId(),
40
- state.getSenderChainKey().getIteration(),
41
- state.getSenderChainKey().getSeed(),
42
- state.getSigningKeyPublic()
43
- );
44
- }
45
- }
46
- module.exports = GroupSessionBuilder;
@@ -1,11 +0,0 @@
1
- export { GroupSessionBuilder } from './group-session-builder'
2
- export { SenderKeyDistributionMessage } from './sender-key-distribution-message'
3
- export { SenderKeyRecord } from './sender-key-record'
4
- export { SenderKeyName } from './sender-key-name'
5
- export { GroupCipher } from './group_cipher'
6
- export { SenderKeyState } from './sender-key-state'
7
- export { SenderKeyMessage } from './sender-key-message'
8
- export { SenderMessageKey } from './sender-message-key'
9
- export { SenderChainKey } from './sender-chain-key'
10
- export { CiphertextMessage } from './ciphertext-message'
11
- export * as keyhelper from './keyhelper'
@@ -1,61 +0,0 @@
1
- "use strict"
2
-
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k
5
- var desc = Object.getOwnPropertyDescriptor(m, k)
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k] } }
8
- }
9
- Object.defineProperty(o, k2, desc)
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k
12
- o[k2] = m[k]
13
- }))
14
-
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v })
17
- }) : function(o, v) {
18
- o["default"] = v
19
- })
20
-
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = []
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k
26
- return ar
27
- }
28
- return ownKeys(o)
29
- }
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod
32
- var result = {}
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i])
34
- __setModuleDefault(result, mod)
35
- return result
36
- }
37
- })()
38
-
39
- Object.defineProperty(exports, "__esModule", { value: true })
40
- exports.keyhelper = exports.CiphertextMessage = exports.SenderChainKey = exports.SenderMessageKey = exports.SenderKeyMessage = exports.SenderKeyState = exports.GroupCipher = exports.SenderKeyName = exports.SenderKeyRecord = exports.SenderKeyDistributionMessage = exports.GroupSessionBuilder = void 0
41
- var group_session_builder_1 = require("./group-session-builder")
42
- Object.defineProperty(exports, "GroupSessionBuilder", { enumerable: true, get: function () { return group_session_builder_1.GroupSessionBuilder } })
43
- var sender_key_distribution_message_1 = require("./sender-key-distribution-message")
44
- Object.defineProperty(exports, "SenderKeyDistributionMessage", { enumerable: true, get: function () { return sender_key_distribution_message_1.SenderKeyDistributionMessage } })
45
- var sender_key_record_1 = require("./sender-key-record")
46
- Object.defineProperty(exports, "SenderKeyRecord", { enumerable: true, get: function () { return sender_key_record_1.SenderKeyRecord } })
47
- var sender_key_name_1 = require("./sender-key-name")
48
- Object.defineProperty(exports, "SenderKeyName", { enumerable: true, get: function () { return sender_key_name_1.SenderKeyName } })
49
- var group_cipher_1 = require("./group_cipher")
50
- Object.defineProperty(exports, "GroupCipher", { enumerable: true, get: function () { return group_cipher_1.GroupCipher } })
51
- var sender_key_state_1 = require("./sender-key-state")
52
- Object.defineProperty(exports, "SenderKeyState", { enumerable: true, get: function () { return sender_key_state_1.SenderKeyState } })
53
- var sender_key_message_1 = require("./sender-key-message")
54
- Object.defineProperty(exports, "SenderKeyMessage", { enumerable: true, get: function () { return sender_key_message_1.SenderKeyMessage } })
55
- var sender_message_key_1 = require("./sender-message-key")
56
- Object.defineProperty(exports, "SenderMessageKey", { enumerable: true, get: function () { return sender_message_key_1.SenderMessageKey } })
57
- var sender_chain_key_1 = require("./sender-chain-key")
58
- Object.defineProperty(exports, "SenderChainKey", { enumerable: true, get: function () { return sender_chain_key_1.SenderChainKey } })
59
- var ciphertext_message_1 = require("./ciphertext-message")
60
- Object.defineProperty(exports, "CiphertextMessage", { enumerable: true, get: function () { return ciphertext_message_1.CiphertextMessage } })
61
- exports.keyhelper = __importStar(require("./keyhelper"))
@@ -1,16 +0,0 @@
1
- import { generateKeyPair } from '@neelegirl/libsignal/src/curve'
2
-
3
- type KeyPairType = ReturnType<typeof generateKeyPair>
4
-
5
- export declare function generateSenderKey(): Buffer
6
-
7
- export declare function generateSenderKeyId(): number
8
-
9
- export interface SigningKeyPair {
10
- public: Buffer
11
- private: Buffer
12
- }
13
-
14
- export declare function generateSenderSigningKey(key?: KeyPairType): SigningKeyPair
15
-
16
- export {}
@@ -1,66 +0,0 @@
1
- "use strict"
2
-
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k
5
- var desc = Object.getOwnPropertyDescriptor(m, k)
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k] } }
8
- }
9
- Object.defineProperty(o, k2, desc)
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k
12
- o[k2] = m[k]
13
- }))
14
-
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v })
17
- }) : function(o, v) {
18
- o["default"] = v
19
- })
20
-
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = []
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k
26
- return ar
27
- }
28
- return ownKeys(o)
29
- }
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod
32
- var result = {}
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i])
34
- __setModuleDefault(result, mod)
35
- return result
36
- }
37
- })()
38
-
39
- Object.defineProperty(exports, "__esModule", { value: true })
40
-
41
- const nodeCrypto = __importStar(require("crypto"))
42
- const curve_1 = require("@neelegirl/libsignal/src/curve")
43
-
44
- function generateSenderKey() {
45
- return nodeCrypto.randomBytes(32)
46
- }
47
-
48
- function generateSenderKeyId() {
49
- return nodeCrypto.randomInt(2147483647)
50
- }
51
-
52
- function generateSenderSigningKey(key) {
53
- if (!key) {
54
- key = curve_1.generateKeyPair()
55
- }
56
- return {
57
- public: Buffer.from(key.pubKey),
58
- private: Buffer.from(key.privKey)
59
- }
60
- }
61
-
62
- module.exports = {
63
- generateSenderKey,
64
- generateSenderKeyId,
65
- generateSenderSigningKey
66
- }
@@ -1,3 +0,0 @@
1
- const { groupproto } = require('./GroupProtocol')
2
-
3
- module.exports = groupproto
@@ -1,69 +0,0 @@
1
- // vim: ts=4:sw=4:expandtab
2
-
3
- /*
4
- * jobQueue manages multiple queues indexed by device to serialize
5
- * session io ops on the database.
6
- */
7
- 'use strict';
8
-
9
-
10
- const _queueAsyncBuckets = new Map();
11
- const _gcLimit = 10000;
12
-
13
- async function _asyncQueueExecutor(queue, cleanup) {
14
- let offt = 0;
15
- while (true) {
16
- let limit = Math.min(queue.length, _gcLimit); // Break up thundering hurds for GC duty.
17
- for (let i = offt; i < limit; i++) {
18
- const job = queue[i];
19
- try {
20
- job.resolve(await job.awaitable());
21
- } catch (e) {
22
- job.reject(e);
23
- }
24
- }
25
- if (limit < queue.length) {
26
- /* Perform lazy GC of queue for faster iteration. */
27
- if (limit >= _gcLimit) {
28
- queue.splice(0, limit);
29
- offt = 0;
30
- } else {
31
- offt = limit;
32
- }
33
- } else {
34
- break;
35
- }
36
- }
37
- cleanup();
38
- }
39
-
40
- module.exports = function (bucket, awaitable) {
41
- /* Run the async awaitable only when all other async calls registered
42
- * here have completed (or thrown). The bucket argument is a hashable
43
- * key representing the task queue to use. */
44
- if (!awaitable.name) {
45
- // Make debuging easier by adding a name to this function.
46
- Object.defineProperty(awaitable, 'name', { writable: true });
47
- if (typeof bucket === 'string') {
48
- awaitable.name = bucket;
49
- } else {
50
- console.warn("Unhandled bucket type (for naming):", typeof bucket, bucket);
51
- }
52
- }
53
- let inactive;
54
- if (!_queueAsyncBuckets.has(bucket)) {
55
- _queueAsyncBuckets.set(bucket, []);
56
- inactive = true;
57
- }
58
- const queue = _queueAsyncBuckets.get(bucket);
59
- const job = new Promise((resolve, reject) => queue.push({
60
- awaitable,
61
- resolve,
62
- reject
63
- }));
64
- if (inactive) {
65
- /* An executor is not currently active; Start one now. */
66
- _asyncQueueExecutor(queue, () => _queueAsyncBuckets.delete(bucket));
67
- }
68
- return job;
69
- };
@@ -1,6 +0,0 @@
1
- # Signal-Group
2
-
3
- This contains the code to decrypt/encrypt WA group messages.
4
- Originally from [pokearaujo/libsignal-node](https://github.com/pokearaujo/libsignal-node)
5
-
6
- The code has been moved outside the signal package as I felt it didn't belong in ths signal package, as it isn't inherently a part of signal but of WA.
@@ -1,14 +0,0 @@
1
- import { SenderMessageKey } from './sender-message-key'
2
-
3
- export declare class SenderChainKey {
4
- private readonly MESSAGE_KEY_SEED
5
- private readonly CHAIN_KEY_SEED
6
- private readonly iteration
7
- private readonly chainKey
8
- constructor(iteration: number, chainKey: any)
9
- getIteration(): number
10
- getSenderMessageKey(): SenderMessageKey
11
- getNext(): SenderChainKey
12
- getSeed(): Uint8Array
13
- private getDerivative
14
- }
@@ -1,47 +0,0 @@
1
- "use strict"
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true })
4
-
5
- const crypto_1 = require("@neelegirl/libsignal/src/crypto")
6
- const sender_message_key_1 = require("./sender-message-key")
7
-
8
- class SenderChainKey {
9
- constructor(iteration, chainKey) {
10
- this.MESSAGE_KEY_SEED = Buffer.from([0x01])
11
- this.CHAIN_KEY_SEED = Buffer.from([0x02])
12
- this.iteration = iteration
13
- if (Buffer.isBuffer(chainKey)) {
14
- // backported from @MartinSchere's PR
15
- this.chainKey = chainKey
16
- }
17
- else if (chainKey instanceof Uint8Array) {
18
- this.chainKey = Buffer.from(chainKey)
19
- }
20
- else if (chainKey && typeof chainKey === 'object') {
21
- // backported from @MartinSchere (#1741)
22
- this.chainKey = Buffer.from(Object.values(chainKey)) // temp fix // backported from @MartinSchere (#1741)
23
- }
24
- else {
25
- this.chainKey = Buffer.alloc(0)
26
- }
27
- }
28
- getIteration() {
29
- return this.iteration
30
- }
31
- getSenderMessageKey() {
32
- return new sender_message_key_1.SenderMessageKey(this.iteration, this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey))
33
- }
34
- getNext() {
35
- return new SenderChainKey(this.iteration + 1, this.getDerivative(this.CHAIN_KEY_SEED, this.chainKey))
36
- }
37
- getSeed() {
38
- return this.chainKey
39
- }
40
- getDerivative(seed, key) {
41
- return (0, crypto_1.calculateMAC)(key, seed)
42
- }
43
- }
44
-
45
- module.exports = {
46
- SenderChainKey
47
- }