UNPKG

@whiskeysockets/baileys

Version:

A WebSockets library for interacting with WhatsApp Web

30 lines 1.73 kB
import * as keyhelper from './keyhelper.js'; import { SenderKeyDistributionMessage } from './sender-key-distribution-message.js'; import { SenderKeyName } from './sender-key-name.js'; import { SenderKeyRecord } from './sender-key-record.js'; export class GroupSessionBuilder { constructor(senderKeyStore) { this.senderKeyStore = senderKeyStore; } async process(senderKeyName, senderKeyDistributionMessage) { const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName); senderKeyRecord.addSenderKeyState(senderKeyDistributionMessage.getId(), senderKeyDistributionMessage.getIteration(), senderKeyDistributionMessage.getChainKey(), senderKeyDistributionMessage.getSignatureKey()); await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord); } async create(senderKeyName) { const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName); if (senderKeyRecord.isEmpty()) { const keyId = keyhelper.generateSenderKeyId(); const senderKey = keyhelper.generateSenderKey(); const signingKey = keyhelper.generateSenderSigningKey(); senderKeyRecord.setSenderKeyState(keyId, 0, senderKey, signingKey); await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord); } const state = senderKeyRecord.getSenderKeyState(); if (!state) { throw new Error('No session state available'); } return new SenderKeyDistributionMessage(state.getKeyId(), state.getSenderChainKey().getIteration(), state.getSenderChainKey().getSeed(), state.getSigningKeyPublic()); } } //# sourceMappingURL=group-session-builder.js.map