lordceaser-baileys 2.0.45 → 2.0.47
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.
- package/WASignalGroup/GroupProtocol.js +1697 -0
- package/WASignalGroup/ciphertext_message.js +16 -0
- package/WASignalGroup/group_cipher.js +120 -0
- package/WASignalGroup/group_session_builder.js +46 -0
- package/WASignalGroup/index.js +5 -0
- package/WASignalGroup/keyhelper.js +21 -0
- package/WASignalGroup/protobufs.js +3 -0
- package/WASignalGroup/queue_job.js +69 -0
- package/WASignalGroup/sender_chain_key.js +50 -0
- package/WASignalGroup/sender_key_distribution_message.js +78 -0
- package/WASignalGroup/sender_key_message.js +92 -0
- package/WASignalGroup/sender_key_name.js +70 -0
- package/WASignalGroup/sender_key_record.js +56 -0
- package/WASignalGroup/sender_key_state.js +129 -0
- package/WASignalGroup/sender_message_key.js +39 -0
- package/index.js +8 -417
- package/package.json +5 -19
- package/.config/termux/termux.properties +0 -93
- package/.npm/_cacache/content-v2/sha512/04/c1/a4e7841f265bfe9f6fe9a54ab0ad4aeb9b54bd69bca81fdbbfea32d6d40c87aa5c2c41967e3a9f8123e262e7214a19d37901846c59469ea1677b55e684a9 +0 -0
- package/.npm/_cacache/content-v2/sha512/0b/a3/5a59681982082a029c734428c8a506498026e269f0ed34013289b90252b86b220a3a908c9c04d93fcb85920bdea9e683bbf31bad37f3b9254aa872e85b7f +0 -0
- package/.npm/_cacache/content-v2/sha512/20/35/fc243b2c2a9a80464ab551328ec56f509a871f11b7d5fe7e868a0352e506e6f7bc3cfd6c7950319465ade091dfd2cc96907473ded8ac564122a7ce498b53 +0 -0
- package/.npm/_cacache/content-v2/sha512/22/73/7c1e7e6ec12797b37b0c597eaceda7555b5e8fd41919a12b56ecc9860598035686f36d21ea3db9d5688503aaf749e9d67fbb16aec859e2d23d9ad33ac67b +0 -0
- package/.npm/_cacache/content-v2/sha512/24/3c/ee06d20f46237ea4d4bfd6bb9c69f13feafc5418c5eaf430f43f8852167ccd8fa9f26424c9c7f147b887f4f620f82d46efabbd72ae4c101da391f71f8edb +0 -1
- package/.npm/_cacache/content-v2/sha512/29/0c/2bba6b33fe70f1a950d25a3903dd04c749bb27cbd41382d4f5d441cdbbda6543c34b6d1ef2ae6d2d954700504b4e0e29c84d696e84e77963cc7b2711a875 +0 -0
- package/.npm/_cacache/content-v2/sha512/2a/21/dae896cf66eb9870a007d150043dad671ce5f482fbefb0863a43828485b268c66e693543170f5a2aafcc5da2c8f2930687bf33b6db1f922e91e4142a8193 +0 -0
- package/.npm/_cacache/content-v2/sha512/37/83/9b4665deb8302bf5aaa82fa78783905989fd75bec5f816e2304b802b748bf79ecdc74aa1509382e4f59239ac222fd3b4dd9f8392d9418271b0b173dbcdef +0 -0
- package/.npm/_cacache/content-v2/sha512/3c/dd/f5c709ac93d5d28176bb22eac5fe9768a4d65a4bd32e7582eeb52441dc37d523aeb98298a4811bac4aef443697baad357222b43e7e64428dd41c8d678077 +0 -1
- package/.npm/_cacache/content-v2/sha512/3d/f1/8c78f26f9f6c3e6ee52575646a2056be786be69af1ea9ebeb9d77469e7cb051fba4841e56b1807adcbf65f27ca2796b8adcf4e7089827e259657e300608b +0 -1
- package/.npm/_cacache/content-v2/sha512/47/ef/cb5c9061fda45ebd1ed0aaadda4d661c8be0c479e94d120d63af7b129798a88b693253ba610571b6ff20eae1a14e3b0f8363a036c9f1cb9d3dbcd7cd1f71 +0 -0
- package/.npm/_cacache/content-v2/sha512/4c/8a/efe49c399567eeaba40b14247a4c7d6588cc1de5ddcc1f88f5ad4e2b1b9694b78bb65902b30c9f10dc1ca808dcaa0c60aa7cb7e3c725111ebf5f4b9ac529 +0 -0
- package/.npm/_cacache/content-v2/sha512/54/68/a908e1bb5cc1db3cff8bc90472ae7118b5c6a5285ff62561a4b2a182bc034181a49b459e3cf32007e5cb7f9be831e7b030e175f2c12cf7d3677753bb69a2 +0 -1
- package/.npm/_cacache/content-v2/sha512/57/cf/309075d2cb07d593b16e2a3b23c2363cadfd229f427d85c045f3acc02b2b7da77cd140c4f7d57ae6a2b5919735ed66edd399b092a945f5b980b8a63fcbd9 +0 -0
- package/.npm/_cacache/content-v2/sha512/58/af/97f23bbc4cf1b1bd622c3fc86b63a241e8596d62e15efafb2a29f8ce617db924e6e28fda8b7f6737646765d50faf845c1b9d3f80666580079a53bf399289 +0 -0
- package/.npm/_cacache/content-v2/sha512/5b/f7/540d2b39e21c9ecf170959f9c18ca5e7f621eb1571ba4fa300fe6ea63580a5a0a305dbf0ce8574da6a26632ce85ce52bbcc266037c316d66aa192a0857d5 +0 -1
- package/.npm/_cacache/content-v2/sha512/66/4b/a28bc36c0530eb895a9a959bbaae66575de84c89df21aca17d2eb489c28aee2cb91d1d6c77485e64559432b56d29ffc806ebacfa5db95566772d7ca7465f +0 -1
- package/.npm/_cacache/content-v2/sha512/66/c4/64f2f76e6fd3cb6a54e920e1e93cc53157369a91e857de5e798c60c0c5172a27bdf274ee4dae740cb5f1862b9e6a898042191f09d31c5ad52edd73fa33ff +0 -1
- package/.npm/_cacache/content-v2/sha512/73/6b/d03ab18788acb29bd3bf637768d856fd5b6cbccdd37ffb7803377b3cebcaba945f9607a8709ddfe861b72f3b4ade73b16ce27c709d819a4dbd4ebd475658 +0 -1
- package/.npm/_cacache/content-v2/sha512/7a/67/1a898325808e983d393b84bd443a7657c1f36e162183bf34172f9abd0d5b1fd0fbfa2287dbccbdacd4abbba6f9fab0896d9434ef74ceaae2edf5188690b5 +0 -0
- package/.npm/_cacache/content-v2/sha512/7c/6c/acda26ea37960abbac8daf0dc259216b34de0836e8faf83e4a269f74a04128670c50fb2981c71a7726d2d423146e6a47b30cae5d2ee8e793180e519e9b82 +0 -0
- package/.npm/_cacache/content-v2/sha512/8c/3d/876af61c79649c1d86d2299ac45fefa179121f2812dc0a499a2c06a428908548b9d0ceec8061ad58d019aac076b36edfdd929446b71dba10e2deaf3dfa9a +0 -0
- package/.npm/_cacache/content-v2/sha512/8d/a3/711cecf3a6a634044b80dafc79b6134acc922a7daac6c14e4154acfd722de7081b4dc0e22ac64ed88011d71da2473b4ccea3cac3016fb76e6c13a8eb9b9e +0 -1
- package/.npm/_cacache/content-v2/sha512/8e/aa/0a70ad0558990da15ecebd28f985958aab0e259f64e8577cf2c5c73becffe2eb6dc263596ecc7fb2fb772d60473a6ced55a54e01499f1a9c010b9d5a01fd +0 -0
- package/.npm/_cacache/content-v2/sha512/90/c2/06ad3d753ea8d354b394aad2564854dd666b02015a94a5a400ac88edecd6e54971f151b2f4210db7f5636ae0798af1f1f1a3414bf76e9f5c18a3f0c7f0b6 +0 -1
- package/.npm/_cacache/content-v2/sha512/9b/db/aa56b4b8f6fcc1cc6f053cf817074faf1c2690a766010dc449333a7a97d1450b7a1d6897d1893b743b8cc691c8aa8ea79978f26f3ebde0422cff03640da2 +0 -1
- package/.npm/_cacache/content-v2/sha512/9e/c9/9cb8ab874a8339e8708d042bc137954989a36626c0571ff5892584ddff80e2119bafeac5b4dca6d86828094cd44677c91ab7e6cdad87df7e2adc75325192 +0 -0
- package/.npm/_cacache/content-v2/sha512/a6/89/9732c9fc52a3280dacd7ee6e004fd91387d37ee89108a504626ced30ef0ea07a8aadb1a98c9d0a00d8027d93c45a27618df5056c6313a692b35c0fe10944 +0 -1
- package/.npm/_cacache/content-v2/sha512/a7/44/329d9218fd6175ac0c2230440a12724490ff182d5197013c2d6244055b4e55bd0b2c07fb7261cc41f31158ed4cee7d0e0befc05570b8f922dcf54b2a4edc +0 -0
- package/.npm/_cacache/content-v2/sha512/b8/e1/efd9fbf933c2c182d8b03f2a33f534b5504fc165f8edd1f16c40b74f79bf98a84d6c5d72e8664334dc7659f251e3517bdd4ddf828e0cb37270fc1a60fd43 +0 -0
- package/.npm/_cacache/content-v2/sha512/bf/c9/1f9299906c9492fc030237160a31e7fb0d11ba3042633753fa455978caa5367c233468c20b9ed65d26c233eeea5c5ef712b2f235c00074b4398600c9bb1c +0 -1
- package/.npm/_cacache/content-v2/sha512/c6/f4/30d5cb38d2070b009f5d84e2dada84c4c4da89ae90eacde848245f37060ff8449da4723260d891f1dc0b3d724d14ac321d3034d9074783fa85f7db932ace +0 -1
- package/.npm/_cacache/content-v2/sha512/d4/4c/cb7a4b9ead8f4471be9d920502d7873ef23e1332fd17436e526e7521e2836c9fdc35087f9f07b4d2939e41eeab23f8037df069f171b350eaf5b152c43115 +0 -1
- package/.npm/_cacache/content-v2/sha512/d6/83/50e4d5d8b865cbbdf848ec204d8bd5517f64d087f161ff3d2f34fcd920874a429f89b95cafc56f46361deab826f461017ab0b895d8fa03c1adb9ed4c0e60 +0 -0
- package/.npm/_cacache/content-v2/sha512/d9/ed/e3f8b8857a8b8d92cb2f28481d2a56717cb2bd4aa2631ea9ff4dec090fb342efbcf93016fe0952910a712a273a9f4ffe5dd34a0a1cf2b7239edc44579483 +0 -0
- package/.npm/_cacache/content-v2/sha512/da/b6/070676fc8aa90dbee81b1e5a83bd1ed9136c538f5f217c8355a11a17752bee79fcf462cfcc2cf6183c828a18279ec278a2d837d358fc7ca0c553dfdab497 +0 -1
- package/.npm/_cacache/content-v2/sha512/e8/22/d4998efd23d8f8621fcdb60fbb615764fa41b8ea774e79d0d4cb2e30b6813c0e59030da2b5d7ee65fdd7f0b2556e098570d0dc0bde672c72f79d12596ad3 +0 -0
- package/.npm/_cacache/content-v2/sha512/ed/a7/d3bdd0c3cf779e22b5ddd73fe6d9848de5e8512d2b471651ee4c19afd50a3fda580481ba12aa0b41be1dfed6c589a60ea926bb307f6576a027d266bf2f28 +0 -1
- package/.npm/_cacache/content-v2/sha512/f3/69/13ba2896e217ed93824f71f86156975a0caee79b4c9036f5564332a37295b29213259c83042550b80960a17c4686cf08c9cf37b24cc71f285385bd03f6cc +0 -0
- package/.npm/_cacache/content-v2/sha512/fd/13/9f593b1e80be64fe9a7846e8fcb2500274dc00790b52301fd9482fe81779f6c13c662cc383cf642ec186cabce628e19abf9fdb35878ea93f786201409ed9 +0 -0
- package/.npm/_cacache/index-v5/79/9d/b9f2c9dde37f046c31b4e9c79fa005adfac128c0dd4f9acbb5a26ee6f2be +0 -2
- package/.npm/_cacache/index-v5/a4/cd/47e4f02a3bf5cdf2f503e2480fa63df8b51052feacb7cb3829a97ea24697 +0 -7
- package/.npm/_cacache/index-v5/b0/83/0c92634a1fd78bb963be6f3f094ec034e6c2612c76ec4c728330ce206907 +0 -2
- package/.npm/_cacache/index-v5/e0/f3/563a92774ad5fa62edb9cbc4624c17a784676e377b3852d16ab8dcb28bea +0 -4
- package/.npm/_cacache/index-v5/ed/a3/bb067b3296c94f40818cac61184db5090e511ef596b7b166aab2d9b18f59 +0 -22
- package/.npm/_cacache/index-v5/f0/7e/c8d04191b7c9f8f2c3a06807c6d03e683ee6da6a0775b23812fa291d9f04 +0 -3
- package/.npm/_cacache/index-v5/f6/34/73eefb1f7f68d405e4bb8568fe273a8354fa103495303a0ff74fb4167cf6 +0 -3
- package/.npm/_logs/2026-09-11T07_46_36_034Z-debug-0.log +0 -191
- package/.npm/_logs/2026-09-11T07_47_53_565Z-debug-0.log +0 -193
- package/.npm/_logs/2026-09-11T07_48_05_542Z-debug-0.log +0 -193
- package/.npm/_logs/2026-09-11T07_48_23_626Z-debug-0.log +0 -202
- package/.npm/_logs/2026-09-11T07_49_09_747Z-debug-0.log +0 -20
- package/.npm/_logs/2026-09-11T07_49_11_150Z-debug-0.log +0 -193
- package/.npm/_logs/2026-09-11T07_49_18_210Z-debug-0.log +0 -197
- package/.npm/_logs/2026-09-11T12_37_02_183Z-debug-0.log +0 -190
- package/.npm/_logs/2026-09-11T12_37_10_268Z-debug-0.log +0 -19
- package/.npm/_logs/2026-09-11T12_37_11_707Z-debug-0.log +0 -579
- package/.npm/_logs/2026-09-11T12_37_23_100Z-debug-0.log +0 -14
- package/.npm/_update-notifier-last-checked +0 -0
- package/.ssh/authorized_keys +0 -0
- package/C4-Society/node_modules/lordceaser-baileys/index.js +0 -192
- package/C4-Society/node_modules/lordceaser-baileys/package.json +0 -42
- package/lordceaser-baileys/.editorconfig +0 -5
- package/lordceaser-baileys/.gitattributes +0 -2
- package/lordceaser-baileys/.github/FUNDING.yml +0 -1
- package/lordceaser-baileys/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
- package/lordceaser-baileys/.github/ISSUE_TEMPLATE/config.yml +0 -4
- package/lordceaser-baileys/.github/ISSUE_TEMPLATE/feature-requests.md +0 -15
- package/lordceaser-baileys/.github/README.md +0 -64
- package/lordceaser-baileys/.github/workflows/build.yml +0 -40
- package/lordceaser-baileys/.github/workflows/e2e.yml +0 -72
- package/lordceaser-baileys/.github/workflows/lint.yml +0 -40
- package/lordceaser-baileys/.github/workflows/manual-release.yml +0 -49
- package/lordceaser-baileys/.github/workflows/pr-comment.yml +0 -53
- package/lordceaser-baileys/.github/workflows/publish-release.yml +0 -88
- package/lordceaser-baileys/.github/workflows/stale.yml +0 -21
- package/lordceaser-baileys/.github/workflows/test.yml +0 -41
- package/lordceaser-baileys/.github/workflows/update-proto.yml +0 -64
- package/lordceaser-baileys/.github/workflows/update-version.yml +0 -88
- package/lordceaser-baileys/.prettierignore +0 -9
- package/lordceaser-baileys/.prettierrc +0 -11
- package/lordceaser-baileys/.release-it.yml +0 -14
- package/lordceaser-baileys/.yarnrc.yml +0 -1
- package/lordceaser-baileys/AGENTS.md +0 -303
- package/lordceaser-baileys/CHANGELOG.md +0 -4
- package/lordceaser-baileys/CLAUDE.md +0 -9
- package/lordceaser-baileys/CODE_OF_CONDUCT.md +0 -100
- package/lordceaser-baileys/Example/example.ts +0 -235
- package/lordceaser-baileys/LICENSE +0 -21
- package/lordceaser-baileys/Media/cat.jpeg +0 -0
- package/lordceaser-baileys/Media/icon.png +0 -0
- package/lordceaser-baileys/Media/logo.png +0 -0
- package/lordceaser-baileys/Media/ma_gif.mp4 +0 -0
- package/lordceaser-baileys/Media/meme.jpeg +0 -0
- package/lordceaser-baileys/Media/octopus.webp +0 -0
- package/lordceaser-baileys/Media/sonata.mp3 +0 -0
- package/lordceaser-baileys/README.md +0 -899
- package/lordceaser-baileys/SECURITY.md +0 -78
- package/lordceaser-baileys/WAMessage/BinaryInfo.d.ts +0 -17
- package/lordceaser-baileys/WAMessage/BinaryInfo.js +0 -13
- package/lordceaser-baileys/WAMessage/constants.d.ts +0 -38
- package/lordceaser-baileys/WAMessage/constants.js +0 -15350
- package/lordceaser-baileys/WAMessage/encode.d.ts +0 -3
- package/lordceaser-baileys/WAMessage/encode.js +0 -155
- package/lordceaser-baileys/WAMessage/index.d.ts +0 -3
- package/lordceaser-baileys/WAMessage/index.js +0 -19
- package/lordceaser-baileys/docs/.nojekyll +0 -1
- package/lordceaser-baileys/docs/404.html +0 -16
- package/lordceaser-baileys/docs/index.html +0 -16
- package/lordceaser-baileys/engine-requirements.js +0 -10
- package/lordceaser-baileys/eslint.config.mts +0 -75
- package/lordceaser-baileys/index.js +0 -55
- package/lordceaser-baileys/jest.config.ts +0 -43
- package/lordceaser-baileys/lib/Defaults/baileys-version.json +0 -3
- package/lordceaser-baileys/lib/Defaults/index.d.ts +0 -283
- package/lordceaser-baileys/lib/Defaults/index.js +0 -121
- package/lordceaser-baileys/lib/Defaults/phonenumber-mcc.json +0 -223
- package/lordceaser-baileys/lib/Signal/libsignal.d.ts +0 -3
- package/lordceaser-baileys/lib/Signal/libsignal.js +0 -152
- package/lordceaser-baileys/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
- package/lordceaser-baileys/lib/Socket/Client/abstract-socket-client.js +0 -13
- package/lordceaser-baileys/lib/Socket/Client/index.d.ts +0 -3
- package/lordceaser-baileys/lib/Socket/Client/index.js +0 -19
- package/lordceaser-baileys/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
- package/lordceaser-baileys/lib/Socket/Client/mobile-socket-client.js +0 -65
- package/lordceaser-baileys/lib/Socket/Client/web-socket-client.d.ts +0 -12
- package/lordceaser-baileys/lib/Socket/Client/web-socket-client.js +0 -62
- package/lordceaser-baileys/lib/Socket/business.d.ts +0 -148
- package/lordceaser-baileys/lib/Socket/business.js +0 -260
- package/lordceaser-baileys/lib/Socket/chats.d.ts +0 -83
- package/lordceaser-baileys/lib/Socket/chats.js +0 -879
- package/lordceaser-baileys/lib/Socket/groups.d.ts +0 -123
- package/lordceaser-baileys/lib/Socket/groups.js +0 -314
- package/lordceaser-baileys/lib/Socket/index.d.ts +0 -150
- package/lordceaser-baileys/lib/Socket/index.js +0 -10
- package/lordceaser-baileys/lib/Socket/messages-recv.d.ts +0 -135
- package/lordceaser-baileys/lib/Socket/messages-recv.js +0 -867
- package/lordceaser-baileys/lib/Socket/messages-send.d.ts +0 -128
- package/lordceaser-baileys/lib/Socket/messages-send.js +0 -677
- package/lordceaser-baileys/lib/Socket/registration.d.ts +0 -242
- package/lordceaser-baileys/lib/Socket/registration.js +0 -166
- package/lordceaser-baileys/lib/Socket/socket.d.ts +0 -43
- package/lordceaser-baileys/lib/Socket/socket.js +0 -619
- package/lordceaser-baileys/lib/Store/index.d.ts +0 -3
- package/lordceaser-baileys/lib/Store/index.js +0 -10
- package/lordceaser-baileys/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lordceaser-baileys/lib/Store/make-cache-manager-store.js +0 -83
- package/lordceaser-baileys/lib/Store/make-in-memory-store.d.ts +0 -118
- package/lordceaser-baileys/lib/Store/make-in-memory-store.js +0 -422
- package/lordceaser-baileys/lib/Store/make-ordered-dictionary.d.ts +0 -13
- package/lordceaser-baileys/lib/Store/make-ordered-dictionary.js +0 -81
- package/lordceaser-baileys/lib/Store/object-repository.d.ts +0 -10
- package/lordceaser-baileys/lib/Store/object-repository.js +0 -27
- package/lordceaser-baileys/lib/Types/Auth.d.ts +0 -110
- package/lordceaser-baileys/lib/Types/Auth.js +0 -2
- package/lordceaser-baileys/lib/Types/Call.d.ts +0 -13
- package/lordceaser-baileys/lib/Types/Call.js +0 -2
- package/lordceaser-baileys/lib/Types/Chat.d.ts +0 -107
- package/lordceaser-baileys/lib/Types/Chat.js +0 -4
- package/lordceaser-baileys/lib/Types/Contact.d.ts +0 -19
- package/lordceaser-baileys/lib/Types/Contact.js +0 -2
- package/lordceaser-baileys/lib/Types/Events.d.ts +0 -172
- package/lordceaser-baileys/lib/Types/Events.js +0 -2
- package/lordceaser-baileys/lib/Types/GroupMetadata.d.ts +0 -56
- package/lordceaser-baileys/lib/Types/GroupMetadata.js +0 -2
- package/lordceaser-baileys/lib/Types/Label.d.ts +0 -46
- package/lordceaser-baileys/lib/Types/Label.js +0 -27
- package/lordceaser-baileys/lib/Types/LabelAssociation.d.ts +0 -29
- package/lordceaser-baileys/lib/Types/LabelAssociation.js +0 -9
- package/lordceaser-baileys/lib/Types/Message.d.ts +0 -268
- package/lordceaser-baileys/lib/Types/Message.js +0 -9
- package/lordceaser-baileys/lib/Types/Product.d.ts +0 -78
- package/lordceaser-baileys/lib/Types/Product.js +0 -2
- package/lordceaser-baileys/lib/Types/Signal.d.ts +0 -57
- package/lordceaser-baileys/lib/Types/Signal.js +0 -2
- package/lordceaser-baileys/lib/Types/Socket.d.ts +0 -116
- package/lordceaser-baileys/lib/Types/Socket.js +0 -2
- package/lordceaser-baileys/lib/Types/State.d.ts +0 -27
- package/lordceaser-baileys/lib/Types/State.js +0 -2
- package/lordceaser-baileys/lib/Types/index.d.ts +0 -63
- package/lordceaser-baileys/lib/Types/index.js +0 -41
- package/lordceaser-baileys/lib/Utils/auth-utils.d.ts +0 -18
- package/lordceaser-baileys/lib/Utils/auth-utils.js +0 -206
- package/lordceaser-baileys/lib/Utils/baileys-event-stream.d.ts +0 -16
- package/lordceaser-baileys/lib/Utils/baileys-event-stream.js +0 -63
- package/lordceaser-baileys/lib/Utils/business.d.ts +0 -22
- package/lordceaser-baileys/lib/Utils/business.js +0 -234
- package/lordceaser-baileys/lib/Utils/chat-utils.d.ts +0 -71
- package/lordceaser-baileys/lib/Utils/chat-utils.js +0 -740
- package/lordceaser-baileys/lib/Utils/crypto.d.ts +0 -41
- package/lordceaser-baileys/lib/Utils/crypto.js +0 -153
- package/lordceaser-baileys/lib/Utils/decode-wa-message.d.ts +0 -20
- package/lordceaser-baileys/lib/Utils/decode-wa-message.js +0 -188
- package/lordceaser-baileys/lib/Utils/event-buffer.d.ts +0 -35
- package/lordceaser-baileys/lib/Utils/event-buffer.js +0 -520
- package/lordceaser-baileys/lib/Utils/generics.d.ts +0 -89
- package/lordceaser-baileys/lib/Utils/generics.js +0 -394
- package/lordceaser-baileys/lib/Utils/history.d.ts +0 -19
- package/lordceaser-baileys/lib/Utils/history.js +0 -94
- package/lordceaser-baileys/lib/Utils/index.d.ts +0 -17
- package/lordceaser-baileys/lib/Utils/index.js +0 -33
- package/lordceaser-baileys/lib/Utils/link-preview.d.ts +0 -21
- package/lordceaser-baileys/lib/Utils/link-preview.js +0 -93
- package/lordceaser-baileys/lib/Utils/logger.d.ts +0 -4
- package/lordceaser-baileys/lib/Utils/logger.js +0 -7
- package/lordceaser-baileys/lib/Utils/lt-hash.d.ts +0 -12
- package/lordceaser-baileys/lib/Utils/lt-hash.js +0 -51
- package/lordceaser-baileys/lib/Utils/make-mutex.d.ts +0 -7
- package/lordceaser-baileys/lib/Utils/make-mutex.js +0 -43
- package/lordceaser-baileys/lib/Utils/messages-media.d.ts +0 -107
- package/lordceaser-baileys/lib/Utils/messages-media.js +0 -674
- package/lordceaser-baileys/lib/Utils/messages.d.ts +0 -77
- package/lordceaser-baileys/lib/Utils/messages.js +0 -758
- package/lordceaser-baileys/lib/Utils/noise-handler.d.ts +0 -21
- package/lordceaser-baileys/lib/Utils/noise-handler.js +0 -155
- package/lordceaser-baileys/lib/Utils/process-message.d.ts +0 -42
- package/lordceaser-baileys/lib/Utils/process-message.js +0 -354
- package/lordceaser-baileys/lib/Utils/signal.d.ts +0 -32
- package/lordceaser-baileys/lib/Utils/signal.js +0 -161
- package/lordceaser-baileys/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
- package/lordceaser-baileys/lib/Utils/use-multi-file-auth-state.js +0 -93
- package/lordceaser-baileys/lib/Utils/validate-connection.d.ts +0 -11
- package/lordceaser-baileys/lib/Utils/validate-connection.js +0 -205
- package/lordceaser-baileys/lib/WABinary/constants.d.ts +0 -27
- package/lordceaser-baileys/lib/WABinary/constants.js +0 -40
- package/lordceaser-baileys/lib/WABinary/decode.d.ts +0 -7
- package/lordceaser-baileys/lib/WABinary/decode.js +0 -254
- package/lordceaser-baileys/lib/WABinary/encode.d.ts +0 -3
- package/lordceaser-baileys/lib/WABinary/encode.js +0 -232
- package/lordceaser-baileys/lib/WABinary/generic-utils.d.ts +0 -15
- package/lordceaser-baileys/lib/WABinary/generic-utils.js +0 -110
- package/lordceaser-baileys/lib/WABinary/index.d.ts +0 -5
- package/lordceaser-baileys/lib/WABinary/index.js +0 -21
- package/lordceaser-baileys/lib/WABinary/jid-utils.d.ts +0 -31
- package/lordceaser-baileys/lib/WABinary/jid-utils.js +0 -62
- package/lordceaser-baileys/lib/WABinary/types.d.ts +0 -18
- package/lordceaser-baileys/lib/WABinary/types.js +0 -2
- package/lordceaser-baileys/lib/WAM/BinaryInfo.d.ts +0 -17
- package/lordceaser-baileys/lib/WAM/BinaryInfo.js +0 -13
- package/lordceaser-baileys/lib/WAM/constants.d.ts +0 -38
- package/lordceaser-baileys/lib/WAM/constants.js +0 -15350
- package/lordceaser-baileys/lib/WAM/encode.d.ts +0 -3
- package/lordceaser-baileys/lib/WAM/encode.js +0 -155
- package/lordceaser-baileys/lib/WAM/index.d.ts +0 -3
- package/lordceaser-baileys/lib/WAM/index.js +0 -19
- package/lordceaser-baileys/lib/index.d.ts +0 -11
- package/lordceaser-baileys/lib/index.js +0 -30
- package/lordceaser-baileys/package.json +0 -49
- package/lordceaser-baileys/proto-extract/README.md +0 -10
- package/lordceaser-baileys/proto-extract/index.js +0 -507
- package/lordceaser-baileys/proto-extract/package-lock.json +0 -511
- package/lordceaser-baileys/proto-extract/package.json +0 -15
- package/lordceaser-baileys/proto-extract/yarn.lock +0 -494
- package/lordceaser-baileys/scripts/update-version.ts +0 -149
- package/lordceaser-baileys/src/Defaults/baileys-version.json +0 -1
- package/lordceaser-baileys/src/Defaults/index.ts +0 -151
- package/lordceaser-baileys/src/Signal/Group/ciphertext-message.ts +0 -9
- package/lordceaser-baileys/src/Signal/Group/group-session-builder.ts +0 -56
- package/lordceaser-baileys/src/Signal/Group/group_cipher.ts +0 -117
- package/lordceaser-baileys/src/Signal/Group/index.ts +0 -11
- package/lordceaser-baileys/src/Signal/Group/keyhelper.ts +0 -28
- package/lordceaser-baileys/src/Signal/Group/sender-chain-key.ts +0 -34
- package/lordceaser-baileys/src/Signal/Group/sender-key-distribution-message.ts +0 -95
- package/lordceaser-baileys/src/Signal/Group/sender-key-message.ts +0 -96
- package/lordceaser-baileys/src/Signal/Group/sender-key-name.ts +0 -66
- package/lordceaser-baileys/src/Signal/Group/sender-key-record.ts +0 -69
- package/lordceaser-baileys/src/Signal/Group/sender-key-state.ts +0 -134
- package/lordceaser-baileys/src/Signal/Group/sender-message-key.ts +0 -36
- package/lordceaser-baileys/src/Signal/libsignal.ts +0 -555
- package/lordceaser-baileys/src/Signal/lid-mapping.ts +0 -335
- package/lordceaser-baileys/src/Socket/Client/index.ts +0 -2
- package/lordceaser-baileys/src/Socket/Client/types.ts +0 -22
- package/lordceaser-baileys/src/Socket/Client/websocket.ts +0 -63
- package/lordceaser-baileys/src/Socket/business.ts +0 -424
- package/lordceaser-baileys/src/Socket/chats.ts +0 -1533
- package/lordceaser-baileys/src/Socket/communities.ts +0 -477
- package/lordceaser-baileys/src/Socket/groups.ts +0 -384
- package/lordceaser-baileys/src/Socket/index.ts +0 -15
- package/lordceaser-baileys/src/Socket/messages-recv.ts +0 -2174
- package/lordceaser-baileys/src/Socket/messages-send.ts +0 -1419
- package/lordceaser-baileys/src/Socket/mex.ts +0 -58
- package/lordceaser-baileys/src/Socket/newsletter.ts +0 -229
- package/lordceaser-baileys/src/Socket/socket.ts +0 -1200
- package/lordceaser-baileys/src/Types/Auth.ts +0 -116
- package/lordceaser-baileys/src/Types/Bussines.ts +0 -20
- package/lordceaser-baileys/src/Types/Call.ts +0 -24
- package/lordceaser-baileys/src/Types/Chat.ts +0 -139
- package/lordceaser-baileys/src/Types/Contact.ts +0 -26
- package/lordceaser-baileys/src/Types/Events.ts +0 -179
- package/lordceaser-baileys/src/Types/GroupMetadata.ts +0 -74
- package/lordceaser-baileys/src/Types/Label.ts +0 -48
- package/lordceaser-baileys/src/Types/LabelAssociation.ts +0 -35
- package/lordceaser-baileys/src/Types/Message.ts +0 -398
- package/lordceaser-baileys/src/Types/Mex.ts +0 -105
- package/lordceaser-baileys/src/Types/Product.ts +0 -85
- package/lordceaser-baileys/src/Types/Signal.ts +0 -85
- package/lordceaser-baileys/src/Types/Socket.ts +0 -153
- package/lordceaser-baileys/src/Types/State.ts +0 -108
- package/lordceaser-baileys/src/Types/USync.ts +0 -27
- package/lordceaser-baileys/src/Types/globals.d.ts +0 -8
- package/lordceaser-baileys/src/Types/index.ts +0 -68
- package/lordceaser-baileys/src/Utils/auth-utils.ts +0 -382
- package/lordceaser-baileys/src/Utils/browser-utils.ts +0 -32
- package/lordceaser-baileys/src/Utils/business.ts +0 -286
- package/lordceaser-baileys/src/Utils/chat-utils.ts +0 -1040
- package/lordceaser-baileys/src/Utils/companion-reg-client-utils.ts +0 -48
- package/lordceaser-baileys/src/Utils/crypto.ts +0 -147
- package/lordceaser-baileys/src/Utils/decode-wa-message.ts +0 -393
- package/lordceaser-baileys/src/Utils/event-buffer.ts +0 -747
- package/lordceaser-baileys/src/Utils/generics.ts +0 -484
- package/lordceaser-baileys/src/Utils/history.ts +0 -162
- package/lordceaser-baileys/src/Utils/identity-change-handler.ts +0 -92
- package/lordceaser-baileys/src/Utils/index.ts +0 -21
- package/lordceaser-baileys/src/Utils/link-preview.ts +0 -111
- package/lordceaser-baileys/src/Utils/logger.ts +0 -13
- package/lordceaser-baileys/src/Utils/lt-hash.ts +0 -8
- package/lordceaser-baileys/src/Utils/make-mutex.ts +0 -42
- package/lordceaser-baileys/src/Utils/message-retry-manager.ts +0 -341
- package/lordceaser-baileys/src/Utils/messages-media.ts +0 -1001
- package/lordceaser-baileys/src/Utils/messages.ts +0 -1124
- package/lordceaser-baileys/src/Utils/noise-handler.ts +0 -268
- package/lordceaser-baileys/src/Utils/offline-node-processor.ts +0 -70
- package/lordceaser-baileys/src/Utils/pre-key-manager.ts +0 -126
- package/lordceaser-baileys/src/Utils/process-message.ts +0 -792
- package/lordceaser-baileys/src/Utils/reporting-utils.ts +0 -344
- package/lordceaser-baileys/src/Utils/signal.ts +0 -261
- package/lordceaser-baileys/src/Utils/stanza-ack.ts +0 -45
- package/lordceaser-baileys/src/Utils/sync-action-utils.ts +0 -75
- package/lordceaser-baileys/src/Utils/tc-token-utils.ts +0 -218
- package/lordceaser-baileys/src/Utils/use-multi-file-auth-state.ts +0 -136
- package/lordceaser-baileys/src/Utils/validate-connection.ts +0 -265
- package/lordceaser-baileys/src/WABinary/constants.ts +0 -1305
- package/lordceaser-baileys/src/WABinary/decode.ts +0 -308
- package/lordceaser-baileys/src/WABinary/encode.ts +0 -258
- package/lordceaser-baileys/src/WABinary/generic-utils.ts +0 -141
- package/lordceaser-baileys/src/WABinary/index.ts +0 -5
- package/lordceaser-baileys/src/WABinary/jid-utils.ts +0 -128
- package/lordceaser-baileys/src/WABinary/types.ts +0 -17
- package/lordceaser-baileys/src/WAM/BinaryInfo.ts +0 -12
- package/lordceaser-baileys/src/WAM/constants.ts +0 -22889
- package/lordceaser-baileys/src/WAM/encode.ts +0 -169
- package/lordceaser-baileys/src/WAM/index.ts +0 -3
- package/lordceaser-baileys/src/WAUSync/Protocols/USyncContactProtocol.ts +0 -58
- package/lordceaser-baileys/src/WAUSync/Protocols/USyncDeviceProtocol.ts +0 -78
- package/lordceaser-baileys/src/WAUSync/Protocols/USyncDisappearingModeProtocol.ts +0 -35
- package/lordceaser-baileys/src/WAUSync/Protocols/USyncStatusProtocol.ts +0 -44
- package/lordceaser-baileys/src/WAUSync/Protocols/USyncUsernameProtocol.ts +0 -28
- package/lordceaser-baileys/src/WAUSync/Protocols/UsyncBotProfileProtocol.ts +0 -76
- package/lordceaser-baileys/src/WAUSync/Protocols/UsyncLIDProtocol.ts +0 -33
- package/lordceaser-baileys/src/WAUSync/Protocols/index.ts +0 -5
- package/lordceaser-baileys/src/WAUSync/USyncQuery.ts +0 -139
- package/lordceaser-baileys/src/WAUSync/USyncUser.ts +0 -44
- package/lordceaser-baileys/src/WAUSync/index.ts +0 -3
- package/lordceaser-baileys/src/__tests__/Signal/Group/sender-key-state-regression.test.ts +0 -22
- package/lordceaser-baileys/src/__tests__/Signal/lid-mapping.test.ts +0 -47
- package/lordceaser-baileys/src/__tests__/Socket/chats.test.ts +0 -29
- package/lordceaser-baileys/src/__tests__/Socket/groups.test.ts +0 -93
- package/lordceaser-baileys/src/__tests__/Socket/identity-change-handling.test.ts +0 -252
- package/lordceaser-baileys/src/__tests__/TestUtils/session.ts +0 -47
- package/lordceaser-baileys/src/__tests__/Utils/app-state-sync-resilience.test.ts +0 -112
- package/lordceaser-baileys/src/__tests__/Utils/app-state-version.test.ts +0 -64
- package/lordceaser-baileys/src/__tests__/Utils/auth-utils.test.ts +0 -37
- package/lordceaser-baileys/src/__tests__/Utils/chat-utils-resilience.test.ts +0 -166
- package/lordceaser-baileys/src/__tests__/Utils/decode-wa-message.test.ts +0 -86
- package/lordceaser-baileys/src/__tests__/Utils/event-buffer.test.ts +0 -154
- package/lordceaser-baileys/src/__tests__/Utils/generics.test.ts +0 -70
- package/lordceaser-baileys/src/__tests__/Utils/history.test.ts +0 -432
- package/lordceaser-baileys/src/__tests__/Utils/lt-hash-generator.test.ts +0 -152
- package/lordceaser-baileys/src/__tests__/Utils/messages-media.test.ts +0 -488
- package/lordceaser-baileys/src/__tests__/Utils/noise-handler.test.ts +0 -339
- package/lordceaser-baileys/src/__tests__/Utils/offline-node-processor.test.ts +0 -318
- package/lordceaser-baileys/src/__tests__/Utils/process-message.test.ts +0 -189
- package/lordceaser-baileys/src/__tests__/Utils/process-sync-action.test.ts +0 -359
- package/lordceaser-baileys/src/__tests__/Utils/reporting-utils.test.ts +0 -160
- package/lordceaser-baileys/src/__tests__/Utils/signal.test.ts +0 -69
- package/lordceaser-baileys/src/__tests__/Utils/stanza-ack.test.ts +0 -420
- package/lordceaser-baileys/src/__tests__/Utils/sync-action-utils.test.ts +0 -183
- package/lordceaser-baileys/src/__tests__/Utils/tc-token.test.ts +0 -1110
- package/lordceaser-baileys/src/__tests__/bigint-validation.test.ts +0 -186
- package/lordceaser-baileys/src/__tests__/binary/connection-deadlock.test.ts +0 -54
- package/lordceaser-baileys/src/__tests__/binary/reconnection-sync-skip.test.ts +0 -86
- package/lordceaser-baileys/src/__tests__/e2e/fetch-wa-web-version.test-e2e.ts +0 -60
- package/lordceaser-baileys/src/__tests__/e2e/groups.test-e2e.ts +0 -113
- package/lordceaser-baileys/src/__tests__/e2e/helpers/mock-phone.ts +0 -41
- package/lordceaser-baileys/src/__tests__/e2e/helpers/test-client.ts +0 -302
- package/lordceaser-baileys/src/__tests__/e2e/messaging.test-e2e.ts +0 -67
- package/lordceaser-baileys/src/__tests__/e2e/send-receive-message.test-e2e.ts +0 -259
- package/lordceaser-baileys/src/__tests__/proto-tojson-long.test.ts +0 -115
- package/lordceaser-baileys/src/index.ts +0 -13
- package/lordceaser-baileys/tsconfig.build.json +0 -12
- package/lordceaser-baileys/tsconfig.json +0 -39
- package/lordceaser-baileys/typedoc.json +0 -13
- package/lordceaser-baileys/yarn.lock +0 -8832
- /package/{lordceaser-baileys/WABinary → WABinary}/constants.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/constants.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/decode.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/decode.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/encode.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/encode.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/generic-utils.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/generic-utils.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/index.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/index.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/jid-utils.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/jid-utils.js +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/types.d.ts +0 -0
- /package/{lordceaser-baileys/WABinary → WABinary}/types.js +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
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;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
const queue_job = require('./queue_job');
|
|
2
|
+
const SenderKeyMessage = require('./sender_key_message');
|
|
3
|
+
const crypto = require('libsignal/src/crypto');
|
|
4
|
+
|
|
5
|
+
class GroupCipher {
|
|
6
|
+
constructor(senderKeyStore, senderKeyName) {
|
|
7
|
+
this.senderKeyStore = senderKeyStore;
|
|
8
|
+
this.senderKeyName = senderKeyName;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
queueJob(awaitable) {
|
|
12
|
+
return queue_job(this.senderKeyName.toString(), awaitable)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async encrypt(paddedPlaintext) {
|
|
16
|
+
return await this.queueJob(async () => {
|
|
17
|
+
const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
|
|
18
|
+
if (!record) {
|
|
19
|
+
throw new Error("No SenderKeyRecord found for encryption")
|
|
20
|
+
}
|
|
21
|
+
const senderKeyState = record.getSenderKeyState();
|
|
22
|
+
if (!senderKeyState) {
|
|
23
|
+
throw new Error("No session to encrypt message");
|
|
24
|
+
}
|
|
25
|
+
const iteration = senderKeyState.getSenderChainKey().getIteration()
|
|
26
|
+
const senderKey = this.getSenderKey(senderKeyState, iteration === 0 ? 0 : iteration + 1)
|
|
27
|
+
|
|
28
|
+
const ciphertext = await this.getCipherText(
|
|
29
|
+
senderKey.getIv(),
|
|
30
|
+
senderKey.getCipherKey(),
|
|
31
|
+
paddedPlaintext
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const senderKeyMessage = new SenderKeyMessage(
|
|
35
|
+
senderKeyState.getKeyId(),
|
|
36
|
+
senderKey.getIteration(),
|
|
37
|
+
ciphertext,
|
|
38
|
+
senderKeyState.getSigningKeyPrivate()
|
|
39
|
+
);
|
|
40
|
+
await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
|
|
41
|
+
return senderKeyMessage.serialize()
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async decrypt(senderKeyMessageBytes) {
|
|
46
|
+
return await this.queueJob(async () => {
|
|
47
|
+
const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
|
|
48
|
+
if (!record) {
|
|
49
|
+
throw new Error("No SenderKeyRecord found for decryption")
|
|
50
|
+
}
|
|
51
|
+
const senderKeyMessage = new SenderKeyMessage(null, null, null, null, senderKeyMessageBytes);
|
|
52
|
+
const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
|
|
53
|
+
if (!senderKeyState) {
|
|
54
|
+
throw new Error("No session found to decrypt message")
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic());
|
|
58
|
+
const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration());
|
|
59
|
+
// senderKeyState.senderKeyStateStructure.senderSigningKey.private =
|
|
60
|
+
|
|
61
|
+
const plaintext = await this.getPlainText(
|
|
62
|
+
senderKey.getIv(),
|
|
63
|
+
senderKey.getCipherKey(),
|
|
64
|
+
senderKeyMessage.getCipherText()
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
|
|
68
|
+
|
|
69
|
+
return plaintext;
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getSenderKey(senderKeyState, iteration) {
|
|
74
|
+
let senderChainKey = senderKeyState.getSenderChainKey();
|
|
75
|
+
if (senderChainKey.getIteration() > iteration) {
|
|
76
|
+
if (senderKeyState.hasSenderMessageKey(iteration)) {
|
|
77
|
+
return senderKeyState.removeSenderMessageKey(iteration);
|
|
78
|
+
}
|
|
79
|
+
throw new Error(
|
|
80
|
+
`Received message with old counter: ${senderChainKey.getIteration()}, ${iteration}`
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (iteration - senderChainKey.getIteration() > 2000) {
|
|
85
|
+
throw new Error('Over 2000 messages into the future!');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
while (senderChainKey.getIteration() < iteration) {
|
|
89
|
+
senderKeyState.addSenderMessageKey(senderChainKey.getSenderMessageKey());
|
|
90
|
+
senderChainKey = senderChainKey.getNext();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
senderKeyState.setSenderChainKey(senderChainKey.getNext());
|
|
94
|
+
return senderChainKey.getSenderMessageKey();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
getPlainText(iv, key, ciphertext) {
|
|
98
|
+
try {
|
|
99
|
+
const plaintext = crypto.decrypt(key, ciphertext, iv);
|
|
100
|
+
return plaintext;
|
|
101
|
+
} catch (e) {
|
|
102
|
+
//console.log(e.stack);
|
|
103
|
+
throw new Error('InvalidMessageException');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
getCipherText(iv, key, plaintext) {
|
|
108
|
+
try {
|
|
109
|
+
iv = typeof iv === 'string' ? Buffer.from(iv, 'base64') : iv;
|
|
110
|
+
key = typeof key === 'string' ? Buffer.from(key, 'base64') : key;
|
|
111
|
+
const crypted = crypto.encrypt(key, Buffer.from(plaintext), iv);
|
|
112
|
+
return crypted;
|
|
113
|
+
} catch (e) {
|
|
114
|
+
//console.log(e.stack);
|
|
115
|
+
throw new Error('InvalidMessageException');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
module.exports = GroupCipher;
|
|
@@ -0,0 +1,46 @@
|
|
|
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;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
module.exports.GroupSessionBuilder = require('./group_session_builder')
|
|
2
|
+
module.exports.SenderKeyDistributionMessage = require('./sender_key_distribution_message')
|
|
3
|
+
module.exports.SenderKeyRecord = require('./sender_key_record')
|
|
4
|
+
module.exports.SenderKeyName = require('./sender_key_name')
|
|
5
|
+
module.exports.GroupCipher = require('./group_cipher')
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const curve = require('libsignal/src/curve');
|
|
2
|
+
const nodeCrypto = require('crypto');
|
|
3
|
+
|
|
4
|
+
exports.generateSenderKey = function() {
|
|
5
|
+
return nodeCrypto.randomBytes(32);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
exports.generateSenderKeyId = function() {
|
|
9
|
+
return nodeCrypto.randomInt(2147483647);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.generateSenderSigningKey = function(key) {
|
|
13
|
+
if (!key) {
|
|
14
|
+
key = curve.generateKeyPair();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
public: key.pubKey,
|
|
19
|
+
private: key.privKey,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const SenderMessageKey = require('./sender_message_key');
|
|
2
|
+
//const HKDF = require('./hkdf');
|
|
3
|
+
const crypto = require('libsignal/src/crypto');
|
|
4
|
+
|
|
5
|
+
class SenderChainKey {
|
|
6
|
+
MESSAGE_KEY_SEED = Buffer.from([0x01]);
|
|
7
|
+
|
|
8
|
+
CHAIN_KEY_SEED = Buffer.from([0x02]);
|
|
9
|
+
|
|
10
|
+
iteration = 0;
|
|
11
|
+
|
|
12
|
+
chainKey = Buffer.alloc(0);
|
|
13
|
+
|
|
14
|
+
constructor(iteration, chainKey) {
|
|
15
|
+
this.iteration = iteration;
|
|
16
|
+
this.chainKey = chainKey;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getIteration() {
|
|
20
|
+
return this.iteration;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
getSenderMessageKey() {
|
|
24
|
+
return new SenderMessageKey(
|
|
25
|
+
this.iteration,
|
|
26
|
+
this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey)
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getNext() {
|
|
31
|
+
return new SenderChainKey(
|
|
32
|
+
this.iteration + 1,
|
|
33
|
+
this.getDerivative(this.CHAIN_KEY_SEED, this.chainKey)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getSeed() {
|
|
38
|
+
return typeof this.chainKey === 'string' ? Buffer.from(this.chainKey, 'base64') : this.chainKey;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
getDerivative(seed, key) {
|
|
42
|
+
key = typeof key === 'string' ? Buffer.from(key, 'base64') : key;
|
|
43
|
+
const hash = crypto.calculateMAC(key, seed);
|
|
44
|
+
//const hash = new Hash().hmac_hash(key, seed, 'sha256', '');
|
|
45
|
+
|
|
46
|
+
return hash;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
module.exports = SenderChainKey;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const CiphertextMessage = require('./ciphertext_message');
|
|
2
|
+
const protobufs = require('./protobufs');
|
|
3
|
+
|
|
4
|
+
class SenderKeyDistributionMessage extends CiphertextMessage {
|
|
5
|
+
constructor(
|
|
6
|
+
id = null,
|
|
7
|
+
iteration = null,
|
|
8
|
+
chainKey = null,
|
|
9
|
+
signatureKey = null,
|
|
10
|
+
serialized = null
|
|
11
|
+
) {
|
|
12
|
+
super();
|
|
13
|
+
if (serialized) {
|
|
14
|
+
try {
|
|
15
|
+
const version = serialized[0];
|
|
16
|
+
const message = serialized.slice(1);
|
|
17
|
+
|
|
18
|
+
const distributionMessage = protobufs.SenderKeyDistributionMessage.decode(
|
|
19
|
+
message
|
|
20
|
+
).toJSON();
|
|
21
|
+
this.serialized = serialized;
|
|
22
|
+
this.id = distributionMessage.id;
|
|
23
|
+
this.iteration = distributionMessage.iteration;
|
|
24
|
+
this.chainKey = distributionMessage.chainKey;
|
|
25
|
+
this.signatureKey = distributionMessage.signingKey;
|
|
26
|
+
} catch (e) {
|
|
27
|
+
throw new Error(e);
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
const version = this.intsToByteHighAndLow(this.CURRENT_VERSION, this.CURRENT_VERSION);
|
|
31
|
+
this.id = id;
|
|
32
|
+
this.iteration = iteration;
|
|
33
|
+
this.chainKey = chainKey;
|
|
34
|
+
this.signatureKey = signatureKey;
|
|
35
|
+
const message = protobufs.SenderKeyDistributionMessage.encode(
|
|
36
|
+
protobufs.SenderKeyDistributionMessage.create({
|
|
37
|
+
id,
|
|
38
|
+
iteration,
|
|
39
|
+
chainKey,
|
|
40
|
+
signingKey: this.signatureKey,
|
|
41
|
+
})
|
|
42
|
+
).finish();
|
|
43
|
+
this.serialized = Buffer.concat([Buffer.from([version]), message]);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
intsToByteHighAndLow(highValue, lowValue) {
|
|
48
|
+
return (((highValue << 4) | lowValue) & 0xff) % 256;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
serialize() {
|
|
52
|
+
return this.serialized;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getType() {
|
|
56
|
+
return this.SENDERKEY_DISTRIBUTION_TYPE;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getIteration() {
|
|
60
|
+
return this.iteration;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getChainKey() {
|
|
64
|
+
return typeof this.chainKey === 'string' ? Buffer.from(this.chainKey, 'base64') : this.chainKey;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getSignatureKey() {
|
|
68
|
+
return typeof this.signatureKey === 'string'
|
|
69
|
+
? Buffer.from(this.signatureKey, 'base64')
|
|
70
|
+
: this.signatureKey;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getId() {
|
|
74
|
+
return this.id;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
module.exports = SenderKeyDistributionMessage;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const CiphertextMessage = require('./ciphertext_message');
|
|
2
|
+
const curve = require('libsignal/src/curve');
|
|
3
|
+
const protobufs = require('./protobufs');
|
|
4
|
+
|
|
5
|
+
class SenderKeyMessage extends CiphertextMessage {
|
|
6
|
+
SIGNATURE_LENGTH = 64;
|
|
7
|
+
|
|
8
|
+
constructor(
|
|
9
|
+
keyId = null,
|
|
10
|
+
iteration = null,
|
|
11
|
+
ciphertext = null,
|
|
12
|
+
signatureKey = null,
|
|
13
|
+
serialized = null
|
|
14
|
+
) {
|
|
15
|
+
super();
|
|
16
|
+
if (serialized) {
|
|
17
|
+
const version = serialized[0];
|
|
18
|
+
const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
|
|
19
|
+
const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
20
|
+
const senderKeyMessage = protobufs.SenderKeyMessage.decode(message).toJSON();
|
|
21
|
+
senderKeyMessage.ciphertext = Buffer.from(senderKeyMessage.ciphertext, 'base64');
|
|
22
|
+
|
|
23
|
+
this.serialized = serialized;
|
|
24
|
+
this.messageVersion = (version & 0xff) >> 4;
|
|
25
|
+
|
|
26
|
+
this.keyId = senderKeyMessage.id;
|
|
27
|
+
this.iteration = senderKeyMessage.iteration;
|
|
28
|
+
this.ciphertext = senderKeyMessage.ciphertext;
|
|
29
|
+
this.signature = signature;
|
|
30
|
+
} else {
|
|
31
|
+
const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
|
|
32
|
+
ciphertext = Buffer.from(ciphertext); // .toString('base64');
|
|
33
|
+
const message = protobufs.SenderKeyMessage.encode(
|
|
34
|
+
protobufs.SenderKeyMessage.create({
|
|
35
|
+
id: keyId,
|
|
36
|
+
iteration,
|
|
37
|
+
ciphertext,
|
|
38
|
+
})
|
|
39
|
+
).finish();
|
|
40
|
+
|
|
41
|
+
const signature = this.getSignature(
|
|
42
|
+
signatureKey,
|
|
43
|
+
Buffer.concat([Buffer.from([version]), message])
|
|
44
|
+
);
|
|
45
|
+
this.serialized = Buffer.concat([Buffer.from([version]), message, Buffer.from(signature)]);
|
|
46
|
+
this.messageVersion = this.CURRENT_VERSION;
|
|
47
|
+
this.keyId = keyId;
|
|
48
|
+
this.iteration = iteration;
|
|
49
|
+
this.ciphertext = ciphertext;
|
|
50
|
+
this.signature = signature;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getKeyId() {
|
|
55
|
+
return this.keyId;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
getIteration() {
|
|
59
|
+
return this.iteration;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getCipherText() {
|
|
63
|
+
return this.ciphertext;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
verifySignature(signatureKey) {
|
|
67
|
+
const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
|
|
68
|
+
const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
69
|
+
const res = curve.verifySignature(signatureKey, part1, part2);
|
|
70
|
+
if (!res) throw new Error('Invalid signature!');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getSignature(signatureKey, serialized) {
|
|
74
|
+
const signature = Buffer.from(
|
|
75
|
+
curve.calculateSignature(
|
|
76
|
+
signatureKey,
|
|
77
|
+
serialized
|
|
78
|
+
)
|
|
79
|
+
);
|
|
80
|
+
return signature;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
serialize() {
|
|
84
|
+
return this.serialized;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
getType() {
|
|
88
|
+
return 4;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
module.exports = SenderKeyMessage;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
function isNull(str) {
|
|
2
|
+
return str === null || str.value === '';
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* java String hashCode 的实现
|
|
7
|
+
* @param strKey
|
|
8
|
+
* @return intValue
|
|
9
|
+
*/
|
|
10
|
+
function intValue(num) {
|
|
11
|
+
const MAX_VALUE = 0x7fffffff;
|
|
12
|
+
const MIN_VALUE = -0x80000000;
|
|
13
|
+
if (num > MAX_VALUE || num < MIN_VALUE) {
|
|
14
|
+
// eslint-disable-next-line
|
|
15
|
+
return (num &= 0xffffffff);
|
|
16
|
+
}
|
|
17
|
+
return num;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function hashCode(strKey) {
|
|
21
|
+
let hash = 0;
|
|
22
|
+
if (!isNull(strKey)) {
|
|
23
|
+
for (let i = 0; i < strKey.length; i++) {
|
|
24
|
+
hash = hash * 31 + strKey.charCodeAt(i);
|
|
25
|
+
hash = intValue(hash);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return hash;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 将js页面的number类型转换为java的int类型
|
|
33
|
+
* @param num
|
|
34
|
+
* @return intValue
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
class SenderKeyName {
|
|
38
|
+
constructor(groupId, sender) {
|
|
39
|
+
this.groupId = groupId;
|
|
40
|
+
this.sender = sender;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getGroupId() {
|
|
44
|
+
return this.groupId;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
getSender() {
|
|
48
|
+
return this.sender;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
serialize() {
|
|
52
|
+
return `${this.groupId}::${this.sender.id}::${this.sender.deviceId}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
toString() {
|
|
56
|
+
return this.serialize();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
equals(other) {
|
|
60
|
+
if (other === null) return false;
|
|
61
|
+
if (!(other instanceof SenderKeyName)) return false;
|
|
62
|
+
return this.groupId === other.groupId && this.sender.toString() === other.sender.toString();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
hashCode() {
|
|
66
|
+
return hashCode(this.groupId) ^ hashCode(this.sender.toString());
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
module.exports = SenderKeyName;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const SenderKeyState = require('./sender_key_state');
|
|
2
|
+
|
|
3
|
+
class SenderKeyRecord {
|
|
4
|
+
MAX_STATES = 5;
|
|
5
|
+
|
|
6
|
+
constructor(serialized) {
|
|
7
|
+
this.senderKeyStates = [];
|
|
8
|
+
|
|
9
|
+
if (serialized) {
|
|
10
|
+
const list = serialized;
|
|
11
|
+
for (let i = 0; i < list.length; i++) {
|
|
12
|
+
const structure = list[i];
|
|
13
|
+
this.senderKeyStates.push(
|
|
14
|
+
new SenderKeyState(null, null, null, null, null, null, structure)
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
isEmpty() {
|
|
21
|
+
return this.senderKeyStates.length === 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getSenderKeyState(keyId) {
|
|
25
|
+
if (!keyId && this.senderKeyStates.length) return this.senderKeyStates[this.senderKeyStates.length - 1];
|
|
26
|
+
for (let i = 0; i < this.senderKeyStates.length; i++) {
|
|
27
|
+
const state = this.senderKeyStates[i];
|
|
28
|
+
if (state.getKeyId() === keyId) {
|
|
29
|
+
return state;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
addSenderKeyState(id, iteration, chainKey, signatureKey) {
|
|
35
|
+
this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, null, signatureKey));
|
|
36
|
+
if (this.senderKeyStates.length > 5) {
|
|
37
|
+
this.senderKeyStates.shift()
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
setSenderKeyState(id, iteration, chainKey, keyPair) {
|
|
42
|
+
this.senderKeyStates.length = 0;
|
|
43
|
+
this.senderKeyStates.push(new SenderKeyState(id, iteration, chainKey, keyPair));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
serialize() {
|
|
47
|
+
const recordStructure = [];
|
|
48
|
+
for (let i = 0; i < this.senderKeyStates.length; i++) {
|
|
49
|
+
const senderKeyState = this.senderKeyStates[i];
|
|
50
|
+
recordStructure.push(senderKeyState.getStructure());
|
|
51
|
+
}
|
|
52
|
+
return recordStructure;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = SenderKeyRecord;
|