@deffa5556/bail 1.0.6 → 1.0.7
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/cjs/WAProto/index.cjs +106053 -0
- package/cjs/deffa/config.cjs +14 -0
- package/cjs/deffa/plugins/ai/deepseekr1.cjs +35 -0
- package/cjs/deffa/plugins/ai/gita.cjs +26 -0
- package/cjs/deffa/plugins/ai/glm47flash.cjs +35 -0
- package/cjs/deffa/plugins/ai/gptoss120b.cjs +35 -0
- package/cjs/deffa/plugins/ai/qwq32b.cjs +35 -0
- package/cjs/deffa/plugins/berita/antara.cjs +25 -0
- package/cjs/deffa/plugins/berita/cnbcindonesia.cjs +25 -0
- package/cjs/deffa/plugins/berita/cnn.cjs +25 -0
- package/cjs/deffa/plugins/berita/kompas.cjs +25 -0
- package/cjs/deffa/plugins/berita/liputan6.cjs +25 -0
- package/cjs/deffa/plugins/berita/merdeka.cjs +25 -0
- package/cjs/deffa/plugins/berita/sindonews.cjs +25 -0
- package/cjs/deffa/plugins/berita/tribunnews.cjs +25 -0
- package/cjs/deffa/plugins/downloader/douyin.cjs +30 -0
- package/cjs/deffa/plugins/downloader/facebook.cjs +30 -0
- package/cjs/deffa/plugins/downloader/github.cjs +35 -0
- package/cjs/deffa/plugins/downloader/lahelu.cjs +30 -0
- package/cjs/deffa/plugins/downloader/snackvideo.cjs +30 -0
- package/cjs/deffa/plugins/downloader/soundcloud.cjs +30 -0
- package/cjs/deffa/plugins/downloader/tiktok.cjs +30 -0
- package/cjs/deffa/plugins/downloader/tiktokhd.cjs +30 -0
- package/cjs/deffa/plugins/downloader/twitter.cjs +30 -0
- package/cjs/deffa/plugins/downloader/ummy.cjs +36 -0
- package/cjs/deffa/plugins/index.cjs +213 -0
- package/cjs/deffa/plugins/info/bmkg.cjs +34 -0
- package/cjs/deffa/plugins/info/cuaca.cjs +31 -0
- package/cjs/deffa/plugins/info/jadwaltv.cjs +29 -0
- package/cjs/deffa/plugins/maker/brat.cjs +45 -0
- package/cjs/deffa/plugins/maker/bratvid.cjs +52 -0
- package/cjs/deffa/plugins/search/8font.cjs +28 -0
- package/cjs/deffa/plugins/search/applemusic.cjs +28 -0
- package/cjs/deffa/plugins/search/bimg.cjs +30 -0
- package/cjs/deffa/plugins/search/brave.cjs +34 -0
- package/cjs/deffa/plugins/search/duckduckgo.cjs +28 -0
- package/cjs/deffa/plugins/search/lahelu.cjs +28 -0
- package/cjs/deffa/plugins/search/mangatoon.cjs +28 -0
- package/cjs/deffa/plugins/search/mcpedl.cjs +28 -0
- package/cjs/deffa/plugins/search/myinstants.cjs +28 -0
- package/cjs/deffa/plugins/search/otakotaku.cjs +28 -0
- package/cjs/deffa/plugins/search/pinterest.cjs +30 -0
- package/cjs/deffa/plugins/search/resep.cjs +28 -0
- package/cjs/deffa/plugins/search/seegore.cjs +30 -0
- package/cjs/deffa/plugins/search/soundcloud.cjs +28 -0
- package/cjs/deffa/plugins/search/youtube.cjs +28 -0
- package/cjs/deffa/plugins/stalk/github.cjs +38 -0
- package/cjs/deffa/plugins/stalk/pinterest.cjs +37 -0
- package/cjs/deffa/plugins/stalk/threads.cjs +34 -0
- package/cjs/deffa/plugins/stalk/tiktok.cjs +37 -0
- package/cjs/deffa/plugins/stalk/twitter.cjs +37 -0
- package/cjs/deffa/plugins/stalk/youtube.cjs +37 -0
- package/cjs/lib/Defaults/index.cjs +158 -0
- package/cjs/lib/Discord/Client.cjs +263 -0
- package/cjs/lib/Discord/Constants.cjs +1842 -0
- package/cjs/lib/Discord/connect-dc.cjs +11 -0
- package/cjs/lib/Discord/esm-bridge.cjs +136 -0
- package/cjs/lib/Discord/gateway/Dispatcher.cjs +93 -0
- package/cjs/lib/Discord/gateway/Shard.cjs +695 -0
- package/cjs/lib/Discord/gateway/ShardManager.cjs +344 -0
- package/cjs/lib/Discord/gateway/compression/base.cjs +13 -0
- package/cjs/lib/Discord/gateway/compression/config.cjs +47 -0
- package/cjs/lib/Discord/gateway/compression/pako.cjs +44 -0
- package/cjs/lib/Discord/gateway/compression/zlib-native.cjs +47 -0
- package/cjs/lib/Discord/gateway/compression/zlib-sync.cjs +31 -0
- package/cjs/lib/Discord/gateway/compression/zstd-napi.cjs +80 -0
- package/cjs/lib/Discord/gateway/compression/zstd-native.cjs +46 -0
- package/cjs/lib/Discord/gateway/events.cjs +956 -0
- package/cjs/lib/Discord/index.cjs +238 -0
- package/cjs/lib/Discord/rest/Bucket.cjs +69 -0
- package/cjs/lib/Discord/rest/DiscordHTTPError.cjs +63 -0
- package/cjs/lib/Discord/rest/DiscordRESTError.cjs +84 -0
- package/cjs/lib/Discord/rest/OAuthHelper.cjs +226 -0
- package/cjs/lib/Discord/rest/RESTManager.cjs +116 -0
- package/cjs/lib/Discord/rest/RequestHandler.cjs +320 -0
- package/cjs/lib/Discord/rest/SequentialBucket.cjs +69 -0
- package/cjs/lib/Discord/routes/Applications.cjs +625 -0
- package/cjs/lib/Discord/routes/Channels.cjs +1199 -0
- package/cjs/lib/Discord/routes/Guilds.cjs +1792 -0
- package/cjs/lib/Discord/routes/Interactions.cjs +212 -0
- package/cjs/lib/Discord/routes/Lobbies.cjs +197 -0
- package/cjs/lib/Discord/routes/Miscellaneous.cjs +120 -0
- package/cjs/lib/Discord/routes/OAuth.cjs +350 -0
- package/cjs/lib/Discord/routes/Users.cjs +107 -0
- package/cjs/lib/Discord/routes/Webhooks.cjs +308 -0
- package/cjs/lib/Discord/structures/AnnouncementChannel.cjs +46 -0
- package/cjs/lib/Discord/structures/AnnouncementThreadChannel.cjs +28 -0
- package/cjs/lib/Discord/structures/Application.cjs +345 -0
- package/cjs/lib/Discord/structures/ApplicationCommand.cjs +109 -0
- package/cjs/lib/Discord/structures/Attachment.cjs +46 -0
- package/cjs/lib/Discord/structures/AuditLogEntry.cjs +41 -0
- package/cjs/lib/Discord/structures/AutoModerationRule.cjs +117 -0
- package/cjs/lib/Discord/structures/AutocompleteInteraction.cjs +90 -0
- package/cjs/lib/Discord/structures/Base.cjs +56 -0
- package/cjs/lib/Discord/structures/BaseEntitlement.cjs +40 -0
- package/cjs/lib/Discord/structures/CategoryChannel.cjs +102 -0
- package/cjs/lib/Discord/structures/Channel.cjs +89 -0
- package/cjs/lib/Discord/structures/ClientApplication.cjs +269 -0
- package/cjs/lib/Discord/structures/CommandInteraction.cjs +294 -0
- package/cjs/lib/Discord/structures/ComponentInteraction.cjs +306 -0
- package/cjs/lib/Discord/structures/Entitlement.cjs +24 -0
- package/cjs/lib/Discord/structures/ExtendedUser.cjs +48 -0
- package/cjs/lib/Discord/structures/ForumChannel.cjs +20 -0
- package/cjs/lib/Discord/structures/GroupChannel.cjs +160 -0
- package/cjs/lib/Discord/structures/Guild.cjs +1289 -0
- package/cjs/lib/Discord/structures/GuildChannel.cjs +82 -0
- package/cjs/lib/Discord/structures/GuildPreview.cjs +141 -0
- package/cjs/lib/Discord/structures/GuildScheduledEvent.cjs +166 -0
- package/cjs/lib/Discord/structures/GuildTemplate.cjs +96 -0
- package/cjs/lib/Discord/structures/Integration.cjs +123 -0
- package/cjs/lib/Discord/structures/Interaction.cjs +78 -0
- package/cjs/lib/Discord/structures/InteractionResolvedChannel.cjs +36 -0
- package/cjs/lib/Discord/structures/Invite.cjs +196 -0
- package/cjs/lib/Discord/structures/InviteGuild.cjs +117 -0
- package/cjs/lib/Discord/structures/InviteRole.cjs +88 -0
- package/cjs/lib/Discord/structures/Lobby.cjs +84 -0
- package/cjs/lib/Discord/structures/LobbyMember.cjs +30 -0
- package/cjs/lib/Discord/structures/MediaChannel.cjs +20 -0
- package/cjs/lib/Discord/structures/Member.cjs +300 -0
- package/cjs/lib/Discord/structures/Message.cjs +553 -0
- package/cjs/lib/Discord/structures/ModalSubmitInteraction.cjs +263 -0
- package/cjs/lib/Discord/structures/OAuthApplication.cjs +203 -0
- package/cjs/lib/Discord/structures/OAuthGuild.cjs +98 -0
- package/cjs/lib/Discord/structures/PartialApplication.cjs +97 -0
- package/cjs/lib/Discord/structures/Permission.cjs +61 -0
- package/cjs/lib/Discord/structures/PermissionOverwrite.cjs +46 -0
- package/cjs/lib/Discord/structures/PingInteraction.cjs +27 -0
- package/cjs/lib/Discord/structures/Poll.cjs +69 -0
- package/cjs/lib/Discord/structures/PrimaryGuild.cjs +93 -0
- package/cjs/lib/Discord/structures/PrivateChannel.cjs +131 -0
- package/cjs/lib/Discord/structures/PrivateThreadChannel.cjs +28 -0
- package/cjs/lib/Discord/structures/PublicThreadChannel.cjs +36 -0
- package/cjs/lib/Discord/structures/Role.cjs +126 -0
- package/cjs/lib/Discord/structures/SKU.cjs +58 -0
- package/cjs/lib/Discord/structures/Soundboard.cjs +58 -0
- package/cjs/lib/Discord/structures/StageChannel.cjs +45 -0
- package/cjs/lib/Discord/structures/StageInstance.cjs +80 -0
- package/cjs/lib/Discord/structures/Subscription.cjs +21 -0
- package/cjs/lib/Discord/structures/Team.cjs +70 -0
- package/cjs/lib/Discord/structures/TestEntitlement.cjs +22 -0
- package/cjs/lib/Discord/structures/TextChannel.cjs +48 -0
- package/cjs/lib/Discord/structures/TextableChannel.cjs +265 -0
- package/cjs/lib/Discord/structures/TextableVoiceChannel.cjs +70 -0
- package/cjs/lib/Discord/structures/ThreadChannel.cjs +276 -0
- package/cjs/lib/Discord/structures/ThreadOnlyChannel.cjs +205 -0
- package/cjs/lib/Discord/structures/ThreadableChannel.cjs +57 -0
- package/cjs/lib/Discord/structures/UnavailableGuild.cjs +21 -0
- package/cjs/lib/Discord/structures/User.cjs +223 -0
- package/cjs/lib/Discord/structures/VoiceChannel.cjs +34 -0
- package/cjs/lib/Discord/structures/VoiceState.cjs +113 -0
- package/cjs/lib/Discord/structures/Webhook.cjs +224 -0
- package/cjs/lib/Discord/util/Collection.cjs +77 -0
- package/cjs/lib/Discord/util/Errors.cjs +81 -0
- package/cjs/lib/Discord/util/QueryBuilder.cjs +20 -0
- package/cjs/lib/Discord/util/Routes.cjs +293 -0
- package/cjs/lib/Discord/util/SimpleCollection.cjs +78 -0
- package/cjs/lib/Discord/util/Time.cjs +92 -0
- package/cjs/lib/Discord/util/TypedCollection.cjs +78 -0
- package/cjs/lib/Discord/util/TypedEmitter.cjs +20 -0
- package/cjs/lib/Discord/util/Util.cjs +906 -0
- package/cjs/lib/Discord/util/interactions/InteractionOptionsWrapper.cjs +207 -0
- package/cjs/lib/Discord/util/interactions/MessageInteractionResponse.cjs +26 -0
- package/cjs/lib/Discord/util/interactions/ModalSubmitInteractionComponentsWrapper.cjs +98 -0
- package/cjs/lib/Discord/util/interactions/SelectMenuValuesWrapper.cjs +77 -0
- package/cjs/lib/Discord/util/interactions/shared.cjs +20 -0
- package/cjs/lib/Discord/util/warning.cjs +34 -0
- package/cjs/lib/Signal/Group/ciphertext-message.cjs +16 -0
- package/cjs/lib/Signal/Group/group-session-builder.cjs +67 -0
- package/cjs/lib/Signal/Group/group_cipher.cjs +86 -0
- package/cjs/lib/Signal/Group/index.cjs +58 -0
- package/cjs/lib/Signal/Group/keyhelper.cjs +56 -0
- package/cjs/lib/Signal/Group/sender-chain-key.cjs +30 -0
- package/cjs/lib/Signal/Group/sender-key-distribution-message.cjs +67 -0
- package/cjs/lib/Signal/Group/sender-key-message.cjs +70 -0
- package/cjs/lib/Signal/Group/sender-key-name.cjs +52 -0
- package/cjs/lib/Signal/Group/sender-key-record.cjs +45 -0
- package/cjs/lib/Signal/Group/sender-key-state.cjs +88 -0
- package/cjs/lib/Signal/Group/sender-message-key.cjs +30 -0
- package/cjs/lib/Signal/libsignal.cjs +467 -0
- package/cjs/lib/Signal/lid-mapping.cjs +281 -0
- package/cjs/lib/Socket/Client/index.cjs +19 -0
- package/cjs/lib/Socket/Client/types.cjs +15 -0
- package/cjs/lib/Socket/Client/websocket.cjs +61 -0
- package/cjs/lib/Socket/business.cjs +384 -0
- package/cjs/lib/Socket/chats.cjs +1221 -0
- package/cjs/lib/Socket/communities.cjs +440 -0
- package/cjs/lib/Socket/groups.cjs +353 -0
- package/cjs/lib/Socket/index.cjs +14 -0
- package/cjs/lib/Socket/messages-recv.cjs +1772 -0
- package/cjs/lib/Socket/messages-send.cjs +1376 -0
- package/cjs/lib/Socket/mex.cjs +46 -0
- package/cjs/lib/Socket/newsletter.cjs +230 -0
- package/cjs/lib/Socket/socket.cjs +976 -0
- package/cjs/lib/Store/index.cjs +20 -0
- package/cjs/lib/Store/make-in-memory-store.cjs +470 -0
- package/cjs/lib/Store/make-ordered-dictionary.cjs +82 -0
- package/cjs/lib/Store/object-repository.cjs +28 -0
- package/cjs/lib/Telegram/button.cjs +147 -0
- package/cjs/lib/Telegram/composer.cjs +582 -0
- package/cjs/lib/Telegram/context.cjs +853 -0
- package/cjs/lib/Telegram/core/helpers/args.cjs +57 -0
- package/cjs/lib/Telegram/core/helpers/check.cjs +55 -0
- package/cjs/lib/Telegram/core/helpers/compact.cjs +16 -0
- package/cjs/lib/Telegram/core/helpers/deunionize.cjs +12 -0
- package/cjs/lib/Telegram/core/helpers/formatting.cjs +91 -0
- package/cjs/lib/Telegram/core/helpers/util.cjs +50 -0
- package/cjs/lib/Telegram/core/network/client.cjs +338 -0
- package/cjs/lib/Telegram/core/network/error.cjs +21 -0
- package/cjs/lib/Telegram/core/network/multipart-stream.cjs +79 -0
- package/cjs/lib/Telegram/core/network/polling.cjs +87 -0
- package/cjs/lib/Telegram/core/network/webhook.cjs +54 -0
- package/cjs/lib/Telegram/core/types/typegram.cjs +31 -0
- package/cjs/lib/Telegram/deffa-telegraf.cjs +264 -0
- package/cjs/lib/Telegram/esm-bridge.cjs +20 -0
- package/cjs/lib/Telegram/filters.cjs +69 -0
- package/cjs/lib/Telegram/format.cjs +58 -0
- package/cjs/lib/Telegram/future.cjs +140 -0
- package/cjs/lib/Telegram/index.cjs +67 -0
- package/cjs/lib/Telegram/input.cjs +61 -0
- package/cjs/lib/Telegram/markup.cjs +129 -0
- package/cjs/lib/Telegram/middleware.cjs +2 -0
- package/cjs/lib/Telegram/reactions.cjs +84 -0
- package/cjs/lib/Telegram/router.cjs +46 -0
- package/cjs/lib/Telegram/scenes/base.cjs +39 -0
- package/cjs/lib/Telegram/scenes/context.cjs +104 -0
- package/cjs/lib/Telegram/scenes/index.cjs +21 -0
- package/cjs/lib/Telegram/scenes/stage.cjs +49 -0
- package/cjs/lib/Telegram/scenes/wizard/context.cjs +31 -0
- package/cjs/lib/Telegram/scenes/wizard/index.cjs +45 -0
- package/cjs/lib/Telegram/scenes.cjs +21 -0
- package/cjs/lib/Telegram/session.cjs +166 -0
- package/cjs/lib/Telegram/telegram-types.cjs +6 -0
- package/cjs/lib/Telegram/telegram.cjs +945 -0
- package/cjs/lib/Telegram/types.cjs +2 -0
- package/cjs/lib/Telegram/utils.cjs +5 -0
- package/cjs/lib/Types/Auth.cjs +3 -0
- package/cjs/lib/Types/Bussines.cjs +3 -0
- package/cjs/lib/Types/Call.cjs +3 -0
- package/cjs/lib/Types/Chat.cjs +11 -0
- package/cjs/lib/Types/Contact.cjs +3 -0
- package/cjs/lib/Types/Events.cjs +4 -0
- package/cjs/lib/Types/GroupMetadata.cjs +3 -0
- package/cjs/lib/Types/Label.cjs +26 -0
- package/cjs/lib/Types/LabelAssociation.cjs +8 -0
- package/cjs/lib/Types/Message.cjs +19 -0
- package/cjs/lib/Types/Mex.cjs +40 -0
- package/cjs/lib/Types/Product.cjs +3 -0
- package/cjs/lib/Types/RichType.cjs +24 -0
- package/cjs/lib/Types/Signal.cjs +4 -0
- package/cjs/lib/Types/Socket.cjs +4 -0
- package/cjs/lib/Types/State.cjs +54 -0
- package/cjs/lib/Types/USync.cjs +4 -0
- package/cjs/lib/Types/index.cjs +42 -0
- package/cjs/lib/Utils/auth-utils.cjs +312 -0
- package/cjs/lib/Utils/browser-utils.cjs +39 -0
- package/cjs/lib/Utils/business.cjs +241 -0
- package/cjs/lib/Utils/chat-utils.cjs +890 -0
- package/cjs/lib/Utils/companion-reg-client-utils.cjs +51 -0
- package/cjs/lib/Utils/crypto.cjs +170 -0
- package/cjs/lib/Utils/decode-wa-message.cjs +330 -0
- package/cjs/lib/Utils/event-buffer.cjs +629 -0
- package/cjs/lib/Utils/generics.cjs +427 -0
- package/cjs/lib/Utils/history.cjs +141 -0
- package/cjs/lib/Utils/identity-change-handler.cjs +56 -0
- package/cjs/lib/Utils/index.cjs +43 -0
- package/cjs/lib/Utils/link-preview.cjs +122 -0
- package/cjs/lib/Utils/logger.cjs +8 -0
- package/cjs/lib/Utils/lt-hash.cjs +11 -0
- package/cjs/lib/Utils/make-mutex.cjs +38 -0
- package/cjs/lib/Utils/message-retry-manager.cjs +267 -0
- package/cjs/lib/Utils/messages-media.cjs +906 -0
- package/cjs/lib/Utils/messages.cjs +1909 -0
- package/cjs/lib/Utils/noise-handler.cjs +205 -0
- package/cjs/lib/Utils/offline-node-processor.cjs +43 -0
- package/cjs/lib/Utils/pre-key-manager.cjs +113 -0
- package/cjs/lib/Utils/process-message.cjs +755 -0
- package/cjs/lib/Utils/reporting-utils.cjs +263 -0
- package/cjs/lib/Utils/rich-message-utils.cjs +434 -0
- package/cjs/lib/Utils/session-guard.cjs +163 -0
- package/cjs/lib/Utils/signal.cjs +214 -0
- package/cjs/lib/Utils/stanza-ack.cjs +41 -0
- package/cjs/lib/Utils/sync-action-utils.cjs +54 -0
- package/cjs/lib/Utils/tc-token-utils.cjs +174 -0
- package/cjs/lib/Utils/text-sticker.cjs +174 -0
- package/cjs/lib/Utils/use-multi-file-auth-state.cjs +125 -0
- package/cjs/lib/Utils/use-single-file-auth-state.cjs +113 -0
- package/cjs/lib/Utils/use-sqlite-auth-state.cjs +145 -0
- package/cjs/lib/Utils/validate-connection.cjs +210 -0
- package/cjs/lib/WABinary/constants.cjs +1470 -0
- package/cjs/lib/WABinary/decode.cjs +301 -0
- package/cjs/lib/WABinary/encode.cjs +257 -0
- package/cjs/lib/WABinary/generic-utils.cjs +240 -0
- package/cjs/lib/WABinary/index.cjs +22 -0
- package/cjs/lib/WABinary/jid-utils.cjs +114 -0
- package/cjs/lib/WABinary/types.cjs +37 -0
- package/cjs/lib/WAM/BinaryInfo.cjs +14 -0
- package/cjs/lib/WAM/constants.cjs +22856 -0
- package/cjs/lib/WAM/encode.cjs +154 -0
- package/cjs/lib/WAM/index.cjs +20 -0
- package/cjs/lib/WAUSync/Protocols/USyncContactProtocol.cjs +56 -0
- package/cjs/lib/WAUSync/Protocols/USyncDeviceProtocol.cjs +58 -0
- package/cjs/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.cjs +31 -0
- package/cjs/lib/WAUSync/Protocols/USyncStatusProtocol.cjs +42 -0
- package/cjs/lib/WAUSync/Protocols/USyncUsernameProtocol.cjs +29 -0
- package/cjs/lib/WAUSync/Protocols/UsyncBotProfileProtocol.cjs +55 -0
- package/cjs/lib/WAUSync/Protocols/UsyncLIDProtocol.cjs +33 -0
- package/cjs/lib/WAUSync/Protocols/index.cjs +22 -0
- package/cjs/lib/WAUSync/USyncQuery.cjs +102 -0
- package/cjs/lib/WAUSync/USyncUser.cjs +35 -0
- package/cjs/lib/WAUSync/index.cjs +20 -0
- package/cjs/lib/index.cjs +372 -0
- package/cjs/lib/plugins/loader.cjs +117 -0
- package/lib/Defaults/index.js +1 -1
- package/package.json +11 -6
|
@@ -0,0 +1,58 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.keyhelper = exports.CiphertextMessage = exports.SenderChainKey = exports.SenderMessageKey = exports.SenderKeyMessage = exports.SenderKeyState = exports.GroupCipher = exports.SenderKeyName = exports.SenderKeyRecord = exports.SenderKeyDistributionMessage = exports.GroupSessionBuilder = void 0;
|
|
37
|
+
var group_session_builder_js_1 = require("./group-session-builder.cjs");
|
|
38
|
+
Object.defineProperty(exports, "GroupSessionBuilder", { enumerable: true, get: function () { return group_session_builder_js_1.GroupSessionBuilder; } });
|
|
39
|
+
var sender_key_distribution_message_js_1 = require("./sender-key-distribution-message.cjs");
|
|
40
|
+
Object.defineProperty(exports, "SenderKeyDistributionMessage", { enumerable: true, get: function () { return sender_key_distribution_message_js_1.SenderKeyDistributionMessage; } });
|
|
41
|
+
var sender_key_record_js_1 = require("./sender-key-record.cjs");
|
|
42
|
+
Object.defineProperty(exports, "SenderKeyRecord", { enumerable: true, get: function () { return sender_key_record_js_1.SenderKeyRecord; } });
|
|
43
|
+
var sender_key_name_js_1 = require("./sender-key-name.cjs");
|
|
44
|
+
Object.defineProperty(exports, "SenderKeyName", { enumerable: true, get: function () { return sender_key_name_js_1.SenderKeyName; } });
|
|
45
|
+
var group_cipher_js_1 = require("./group_cipher.cjs");
|
|
46
|
+
Object.defineProperty(exports, "GroupCipher", { enumerable: true, get: function () { return group_cipher_js_1.GroupCipher; } });
|
|
47
|
+
var sender_key_state_js_1 = require("./sender-key-state.cjs");
|
|
48
|
+
Object.defineProperty(exports, "SenderKeyState", { enumerable: true, get: function () { return sender_key_state_js_1.SenderKeyState; } });
|
|
49
|
+
var sender_key_message_js_1 = require("./sender-key-message.cjs");
|
|
50
|
+
Object.defineProperty(exports, "SenderKeyMessage", { enumerable: true, get: function () { return sender_key_message_js_1.SenderKeyMessage; } });
|
|
51
|
+
var sender_message_key_js_1 = require("./sender-message-key.cjs");
|
|
52
|
+
Object.defineProperty(exports, "SenderMessageKey", { enumerable: true, get: function () { return sender_message_key_js_1.SenderMessageKey; } });
|
|
53
|
+
var sender_chain_key_js_1 = require("./sender-chain-key.cjs");
|
|
54
|
+
Object.defineProperty(exports, "SenderChainKey", { enumerable: true, get: function () { return sender_chain_key_js_1.SenderChainKey; } });
|
|
55
|
+
var ciphertext_message_js_1 = require("./ciphertext-message.cjs");
|
|
56
|
+
Object.defineProperty(exports, "CiphertextMessage", { enumerable: true, get: function () { return ciphertext_message_js_1.CiphertextMessage; } });
|
|
57
|
+
exports.keyhelper = __importStar(require("./keyhelper.cjs"));
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateSenderKey = generateSenderKey;
|
|
37
|
+
exports.generateSenderKeyId = generateSenderKeyId;
|
|
38
|
+
exports.generateSenderSigningKey = generateSenderSigningKey;
|
|
39
|
+
const nodeCrypto = __importStar(require("crypto"));
|
|
40
|
+
const curve_js_1 = require("libsignal/src/curve.js");
|
|
41
|
+
function generateSenderKey() {
|
|
42
|
+
return nodeCrypto.randomBytes(32);
|
|
43
|
+
}
|
|
44
|
+
function generateSenderKeyId() {
|
|
45
|
+
return nodeCrypto.randomInt(2147483647);
|
|
46
|
+
}
|
|
47
|
+
function generateSenderSigningKey(key) {
|
|
48
|
+
if (!key) {
|
|
49
|
+
key = (0, curve_js_1.generateKeyPair)();
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
public: Buffer.from(key.pubKey),
|
|
53
|
+
private: Buffer.from(key.privKey)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=keyhelper.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderChainKey = void 0;
|
|
4
|
+
const crypto_js_1 = require("libsignal/src/crypto.js");
|
|
5
|
+
const sender_message_key_js_1 = require("./sender-message-key.cjs");
|
|
6
|
+
class SenderChainKey {
|
|
7
|
+
constructor(iteration, chainKey) {
|
|
8
|
+
this.MESSAGE_KEY_SEED = Buffer.from([0x01]);
|
|
9
|
+
this.CHAIN_KEY_SEED = Buffer.from([0x02]);
|
|
10
|
+
this.iteration = iteration;
|
|
11
|
+
this.chainKey = Buffer.from(chainKey);
|
|
12
|
+
}
|
|
13
|
+
getIteration() {
|
|
14
|
+
return this.iteration;
|
|
15
|
+
}
|
|
16
|
+
getSenderMessageKey() {
|
|
17
|
+
return new sender_message_key_js_1.SenderMessageKey(this.iteration, this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey));
|
|
18
|
+
}
|
|
19
|
+
getNext() {
|
|
20
|
+
return new SenderChainKey(this.iteration + 1, this.getDerivative(this.CHAIN_KEY_SEED, this.chainKey));
|
|
21
|
+
}
|
|
22
|
+
getSeed() {
|
|
23
|
+
return this.chainKey;
|
|
24
|
+
}
|
|
25
|
+
getDerivative(seed, key) {
|
|
26
|
+
return (0, crypto_js_1.calculateMAC)(key, seed);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.SenderChainKey = SenderChainKey;
|
|
30
|
+
//# sourceMappingURL=sender-chain-key.js.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderKeyDistributionMessage = void 0;
|
|
4
|
+
const index_js_1 = require("../../../WAProto/index.cjs");
|
|
5
|
+
const ciphertext_message_js_1 = require("./ciphertext-message.cjs");
|
|
6
|
+
class SenderKeyDistributionMessage extends ciphertext_message_js_1.CiphertextMessage {
|
|
7
|
+
constructor(id, iteration, chainKey, signatureKey, serialized) {
|
|
8
|
+
super();
|
|
9
|
+
if (serialized) {
|
|
10
|
+
try {
|
|
11
|
+
const message = serialized.slice(1);
|
|
12
|
+
const distributionMessage = index_js_1.proto.SenderKeyDistributionMessage.decode(message).toJSON();
|
|
13
|
+
this.serialized = serialized;
|
|
14
|
+
this.id = distributionMessage.id;
|
|
15
|
+
this.iteration = distributionMessage.iteration;
|
|
16
|
+
this.chainKey =
|
|
17
|
+
typeof distributionMessage.chainKey === 'string'
|
|
18
|
+
? Buffer.from(distributionMessage.chainKey, 'base64')
|
|
19
|
+
: distributionMessage.chainKey;
|
|
20
|
+
this.signatureKey =
|
|
21
|
+
typeof distributionMessage.signingKey === 'string'
|
|
22
|
+
? Buffer.from(distributionMessage.signingKey, 'base64')
|
|
23
|
+
: distributionMessage.signingKey;
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
throw new Error(String(e));
|
|
27
|
+
}
|
|
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 = index_js_1.proto.SenderKeyDistributionMessage.encode(index_js_1.proto.SenderKeyDistributionMessage.create({
|
|
36
|
+
id,
|
|
37
|
+
iteration,
|
|
38
|
+
chainKey,
|
|
39
|
+
signingKey: this.signatureKey
|
|
40
|
+
})).finish();
|
|
41
|
+
this.serialized = Buffer.concat([Buffer.from([version]), message]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
intsToByteHighAndLow(highValue, lowValue) {
|
|
45
|
+
return (((highValue << 4) | lowValue) & 0xff) % 256;
|
|
46
|
+
}
|
|
47
|
+
serialize() {
|
|
48
|
+
return this.serialized;
|
|
49
|
+
}
|
|
50
|
+
getType() {
|
|
51
|
+
return this.SENDERKEY_DISTRIBUTION_TYPE;
|
|
52
|
+
}
|
|
53
|
+
getIteration() {
|
|
54
|
+
return this.iteration;
|
|
55
|
+
}
|
|
56
|
+
getChainKey() {
|
|
57
|
+
return this.chainKey;
|
|
58
|
+
}
|
|
59
|
+
getSignatureKey() {
|
|
60
|
+
return this.signatureKey;
|
|
61
|
+
}
|
|
62
|
+
getId() {
|
|
63
|
+
return this.id;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
|
|
67
|
+
//# sourceMappingURL=sender-key-distribution-message.js.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderKeyMessage = void 0;
|
|
4
|
+
const curve_js_1 = require("libsignal/src/curve.js");
|
|
5
|
+
const index_js_1 = require("../../../WAProto/index.cjs");
|
|
6
|
+
const ciphertext_message_js_1 = require("./ciphertext-message.cjs");
|
|
7
|
+
class SenderKeyMessage extends ciphertext_message_js_1.CiphertextMessage {
|
|
8
|
+
constructor(keyId, iteration, ciphertext, signatureKey, serialized) {
|
|
9
|
+
super();
|
|
10
|
+
this.SIGNATURE_LENGTH = 64;
|
|
11
|
+
if (serialized) {
|
|
12
|
+
const version = serialized[0];
|
|
13
|
+
const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
|
|
14
|
+
const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
15
|
+
const senderKeyMessage = index_js_1.proto.SenderKeyMessage.decode(message).toJSON();
|
|
16
|
+
this.serialized = serialized;
|
|
17
|
+
this.messageVersion = (version & 0xff) >> 4;
|
|
18
|
+
this.keyId = senderKeyMessage.id;
|
|
19
|
+
this.iteration = senderKeyMessage.iteration;
|
|
20
|
+
this.ciphertext =
|
|
21
|
+
typeof senderKeyMessage.ciphertext === 'string'
|
|
22
|
+
? Buffer.from(senderKeyMessage.ciphertext, 'base64')
|
|
23
|
+
: senderKeyMessage.ciphertext;
|
|
24
|
+
this.signature = signature;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
|
|
28
|
+
const ciphertextBuffer = Buffer.from(ciphertext);
|
|
29
|
+
const message = index_js_1.proto.SenderKeyMessage.encode(index_js_1.proto.SenderKeyMessage.create({
|
|
30
|
+
id: keyId,
|
|
31
|
+
iteration: iteration,
|
|
32
|
+
ciphertext: ciphertextBuffer
|
|
33
|
+
})).finish();
|
|
34
|
+
const signature = this.getSignature(signatureKey, Buffer.concat([Buffer.from([version]), message]));
|
|
35
|
+
this.serialized = Buffer.concat([Buffer.from([version]), message, Buffer.from(signature)]);
|
|
36
|
+
this.messageVersion = this.CURRENT_VERSION;
|
|
37
|
+
this.keyId = keyId;
|
|
38
|
+
this.iteration = iteration;
|
|
39
|
+
this.ciphertext = ciphertextBuffer;
|
|
40
|
+
this.signature = signature;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getKeyId() {
|
|
44
|
+
return this.keyId;
|
|
45
|
+
}
|
|
46
|
+
getIteration() {
|
|
47
|
+
return this.iteration;
|
|
48
|
+
}
|
|
49
|
+
getCipherText() {
|
|
50
|
+
return this.ciphertext;
|
|
51
|
+
}
|
|
52
|
+
verifySignature(signatureKey) {
|
|
53
|
+
const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
|
|
54
|
+
const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
55
|
+
const res = (0, curve_js_1.verifySignature)(signatureKey, part1, part2);
|
|
56
|
+
if (!res)
|
|
57
|
+
throw new Error('Invalid signature!');
|
|
58
|
+
}
|
|
59
|
+
getSignature(signatureKey, serialized) {
|
|
60
|
+
return Buffer.from((0, curve_js_1.calculateSignature)(signatureKey, serialized));
|
|
61
|
+
}
|
|
62
|
+
serialize() {
|
|
63
|
+
return this.serialized;
|
|
64
|
+
}
|
|
65
|
+
getType() {
|
|
66
|
+
return 4;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.SenderKeyMessage = SenderKeyMessage;
|
|
70
|
+
//# sourceMappingURL=sender-key-message.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderKeyName = void 0;
|
|
4
|
+
function isNull(str) {
|
|
5
|
+
return str === null || str === '';
|
|
6
|
+
}
|
|
7
|
+
function intValue(num) {
|
|
8
|
+
const MAX_VALUE = 0x7fffffff;
|
|
9
|
+
const MIN_VALUE = -0x80000000;
|
|
10
|
+
if (num > MAX_VALUE || num < MIN_VALUE) {
|
|
11
|
+
return num & 0xffffffff;
|
|
12
|
+
}
|
|
13
|
+
return num;
|
|
14
|
+
}
|
|
15
|
+
function hashCode(strKey) {
|
|
16
|
+
let hash = 0;
|
|
17
|
+
if (!isNull(strKey)) {
|
|
18
|
+
for (let i = 0; i < strKey.length; i++) {
|
|
19
|
+
hash = hash * 31 + strKey.charCodeAt(i);
|
|
20
|
+
hash = intValue(hash);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return hash;
|
|
24
|
+
}
|
|
25
|
+
class SenderKeyName {
|
|
26
|
+
constructor(groupId, sender) {
|
|
27
|
+
this.groupId = groupId;
|
|
28
|
+
this.sender = sender;
|
|
29
|
+
}
|
|
30
|
+
getGroupId() {
|
|
31
|
+
return this.groupId;
|
|
32
|
+
}
|
|
33
|
+
getSender() {
|
|
34
|
+
return this.sender;
|
|
35
|
+
}
|
|
36
|
+
serialize() {
|
|
37
|
+
return `${this.groupId}::${this.sender.id}::${this.sender.deviceId}`;
|
|
38
|
+
}
|
|
39
|
+
toString() {
|
|
40
|
+
return this.serialize();
|
|
41
|
+
}
|
|
42
|
+
equals(other) {
|
|
43
|
+
if (other === null)
|
|
44
|
+
return false;
|
|
45
|
+
return this.groupId === other.groupId && this.sender.toString() === other.sender.toString();
|
|
46
|
+
}
|
|
47
|
+
hashCode() {
|
|
48
|
+
return hashCode(this.groupId) ^ hashCode(this.sender.toString());
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.SenderKeyName = SenderKeyName;
|
|
52
|
+
//# sourceMappingURL=sender-key-name.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderKeyRecord = void 0;
|
|
4
|
+
const generics_js_1 = require("../../Utils/generics.cjs");
|
|
5
|
+
const sender_key_state_js_1 = require("./sender-key-state.cjs");
|
|
6
|
+
class SenderKeyRecord {
|
|
7
|
+
constructor(serialized) {
|
|
8
|
+
this.MAX_STATES = 5;
|
|
9
|
+
this.senderKeyStates = [];
|
|
10
|
+
if (serialized) {
|
|
11
|
+
for (const structure of serialized) {
|
|
12
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(null, null, null, null, null, null, structure));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
isEmpty() {
|
|
17
|
+
return this.senderKeyStates.length === 0;
|
|
18
|
+
}
|
|
19
|
+
getSenderKeyState(keyId) {
|
|
20
|
+
if (keyId === undefined && this.senderKeyStates.length) {
|
|
21
|
+
return this.senderKeyStates[this.senderKeyStates.length - 1];
|
|
22
|
+
}
|
|
23
|
+
return this.senderKeyStates.find(state => state.getKeyId() === keyId);
|
|
24
|
+
}
|
|
25
|
+
addSenderKeyState(id, iteration, chainKey, signatureKey) {
|
|
26
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(id, iteration, chainKey, null, signatureKey));
|
|
27
|
+
if (this.senderKeyStates.length > this.MAX_STATES) {
|
|
28
|
+
this.senderKeyStates.shift();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
setSenderKeyState(id, iteration, chainKey, keyPair) {
|
|
32
|
+
this.senderKeyStates.length = 0;
|
|
33
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(id, iteration, chainKey, keyPair));
|
|
34
|
+
}
|
|
35
|
+
serialize() {
|
|
36
|
+
return this.senderKeyStates.map(state => state.getStructure());
|
|
37
|
+
}
|
|
38
|
+
static deserialize(data) {
|
|
39
|
+
const str = Buffer.from(data).toString('utf-8');
|
|
40
|
+
const parsed = JSON.parse(str, generics_js_1.BufferJSON.reviver);
|
|
41
|
+
return new SenderKeyRecord(parsed);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.SenderKeyRecord = SenderKeyRecord;
|
|
45
|
+
//# sourceMappingURL=sender-key-record.js.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderKeyState = void 0;
|
|
4
|
+
const sender_chain_key_js_1 = require("./sender-chain-key.cjs");
|
|
5
|
+
const sender_message_key_js_1 = require("./sender-message-key.cjs");
|
|
6
|
+
class SenderKeyState {
|
|
7
|
+
constructor(id, iteration, chainKey, signatureKeyPair, signatureKeyPublic, signatureKeyPrivate, senderKeyStateStructure) {
|
|
8
|
+
this.MAX_MESSAGE_KEYS = 2000;
|
|
9
|
+
if (senderKeyStateStructure) {
|
|
10
|
+
this.senderKeyStateStructure = {
|
|
11
|
+
...senderKeyStateStructure,
|
|
12
|
+
senderMessageKeys: Array.isArray(senderKeyStateStructure.senderMessageKeys)
|
|
13
|
+
? senderKeyStateStructure.senderMessageKeys
|
|
14
|
+
: []
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
if (signatureKeyPair) {
|
|
19
|
+
signatureKeyPublic = signatureKeyPair.public;
|
|
20
|
+
signatureKeyPrivate = signatureKeyPair.private;
|
|
21
|
+
}
|
|
22
|
+
this.senderKeyStateStructure = {
|
|
23
|
+
senderKeyId: id || 0,
|
|
24
|
+
senderChainKey: {
|
|
25
|
+
iteration: iteration || 0,
|
|
26
|
+
seed: Buffer.from(chainKey || [])
|
|
27
|
+
},
|
|
28
|
+
senderSigningKey: {
|
|
29
|
+
public: Buffer.from(signatureKeyPublic || []),
|
|
30
|
+
private: Buffer.from(signatureKeyPrivate || [])
|
|
31
|
+
},
|
|
32
|
+
senderMessageKeys: []
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getKeyId() {
|
|
37
|
+
return this.senderKeyStateStructure.senderKeyId;
|
|
38
|
+
}
|
|
39
|
+
getSenderChainKey() {
|
|
40
|
+
return new sender_chain_key_js_1.SenderChainKey(this.senderKeyStateStructure.senderChainKey.iteration, this.senderKeyStateStructure.senderChainKey.seed);
|
|
41
|
+
}
|
|
42
|
+
setSenderChainKey(chainKey) {
|
|
43
|
+
this.senderKeyStateStructure.senderChainKey = {
|
|
44
|
+
iteration: chainKey.getIteration(),
|
|
45
|
+
seed: chainKey.getSeed()
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
getSigningKeyPublic() {
|
|
49
|
+
const publicKey = Buffer.from(this.senderKeyStateStructure.senderSigningKey.public);
|
|
50
|
+
if (publicKey.length === 32) {
|
|
51
|
+
const fixed = Buffer.alloc(33);
|
|
52
|
+
fixed[0] = 0x05;
|
|
53
|
+
publicKey.copy(fixed, 1);
|
|
54
|
+
return fixed;
|
|
55
|
+
}
|
|
56
|
+
return publicKey;
|
|
57
|
+
}
|
|
58
|
+
getSigningKeyPrivate() {
|
|
59
|
+
const privateKey = this.senderKeyStateStructure.senderSigningKey.private;
|
|
60
|
+
return Buffer.from(privateKey || []);
|
|
61
|
+
}
|
|
62
|
+
hasSenderMessageKey(iteration) {
|
|
63
|
+
return this.senderKeyStateStructure.senderMessageKeys.some(key => key.iteration === iteration);
|
|
64
|
+
}
|
|
65
|
+
addSenderMessageKey(senderMessageKey) {
|
|
66
|
+
this.senderKeyStateStructure.senderMessageKeys.push({
|
|
67
|
+
iteration: senderMessageKey.getIteration(),
|
|
68
|
+
seed: senderMessageKey.getSeed()
|
|
69
|
+
});
|
|
70
|
+
if (this.senderKeyStateStructure.senderMessageKeys.length > this.MAX_MESSAGE_KEYS) {
|
|
71
|
+
this.senderKeyStateStructure.senderMessageKeys.shift();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
removeSenderMessageKey(iteration) {
|
|
75
|
+
const index = this.senderKeyStateStructure.senderMessageKeys.findIndex(key => key.iteration === iteration);
|
|
76
|
+
if (index !== -1) {
|
|
77
|
+
const messageKey = this.senderKeyStateStructure.senderMessageKeys[index];
|
|
78
|
+
this.senderKeyStateStructure.senderMessageKeys.splice(index, 1);
|
|
79
|
+
return new sender_message_key_js_1.SenderMessageKey(messageKey.iteration, messageKey.seed);
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
getStructure() {
|
|
84
|
+
return this.senderKeyStateStructure;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.SenderKeyState = SenderKeyState;
|
|
88
|
+
//# sourceMappingURL=sender-key-state.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SenderMessageKey = void 0;
|
|
4
|
+
const crypto_js_1 = require("libsignal/src/crypto.js");
|
|
5
|
+
class SenderMessageKey {
|
|
6
|
+
constructor(iteration, seed) {
|
|
7
|
+
const derivative = (0, crypto_js_1.deriveSecrets)(seed, Buffer.alloc(32), Buffer.from('WhisperGroup'));
|
|
8
|
+
const keys = new Uint8Array(32);
|
|
9
|
+
keys.set(new Uint8Array(derivative[0].slice(16)));
|
|
10
|
+
keys.set(new Uint8Array(derivative[1].slice(0, 16)), 16);
|
|
11
|
+
this.iv = Buffer.from(derivative[0].slice(0, 16));
|
|
12
|
+
this.cipherKey = Buffer.from(keys.buffer);
|
|
13
|
+
this.iteration = iteration;
|
|
14
|
+
this.seed = seed;
|
|
15
|
+
}
|
|
16
|
+
getIteration() {
|
|
17
|
+
return this.iteration;
|
|
18
|
+
}
|
|
19
|
+
getIv() {
|
|
20
|
+
return this.iv;
|
|
21
|
+
}
|
|
22
|
+
getCipherKey() {
|
|
23
|
+
return this.cipherKey;
|
|
24
|
+
}
|
|
25
|
+
getSeed() {
|
|
26
|
+
return this.seed;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.SenderMessageKey = SenderMessageKey;
|
|
30
|
+
//# sourceMappingURL=sender-message-key.js.map
|