ts-mls
Version:
[](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [](https://badge.fury.io/js/ts-mls) [) {
test(`Update ${cs}`, async () => {
await update(cs);
});
}
async function update(cipherSuite) {
const impl = await getCiphersuiteImpl(getCiphersuiteFromName(cipherSuite));
const aliceCredential = { credentialType: "basic", identity: new TextEncoder().encode("alice") };
const alice = await generateKeyPackage(aliceCredential, defaultCapabilities(), defaultLifetime, [], impl);
const groupId = new TextEncoder().encode("group1");
let aliceGroup = await createGroup(groupId, alice.publicPackage, alice.privatePackage, [], impl);
const bobCredential = { credentialType: "basic", identity: new TextEncoder().encode("bob") };
const bob = await generateKeyPackage(bobCredential, defaultCapabilities(), defaultLifetime, [], impl);
const addBobProposal = {
proposalType: "add",
add: {
keyPackage: bob.publicPackage,
},
};
const addBobCommitResult = await createCommit(aliceGroup, emptyPskIndex, false, [addBobProposal], impl);
aliceGroup = addBobCommitResult.newState;
let bobGroup = await joinGroup(addBobCommitResult.welcome, bob.publicPackage, bob.privatePackage, emptyPskIndex, impl, aliceGroup.ratchetTree);
expect(bobGroup.keySchedule.epochAuthenticator).toStrictEqual(aliceGroup.keySchedule.epochAuthenticator);
const emptyCommitResult = await createCommit(aliceGroup, emptyPskIndex, false, [], impl);
if (emptyCommitResult.commit.wireformat !== "mls_private_message")
throw new Error("Expected private message");
aliceGroup = emptyCommitResult.newState;
const bobProcessCommitResult = await processPrivateMessage(bobGroup, emptyCommitResult.commit.privateMessage, makePskIndex(bobGroup, {}), impl);
bobGroup = bobProcessCommitResult.newState;
const emptyCommitResult3 = await createCommit(bobGroup, emptyPskIndex, false, [], impl);
if (emptyCommitResult3.commit.wireformat !== "mls_private_message")
throw new Error("Expected private message");
bobGroup = emptyCommitResult3.newState;
const aliceProcessCommitResult3 = await processPrivateMessage(aliceGroup, emptyCommitResult3.commit.privateMessage, makePskIndex(aliceGroup, {}), impl);
aliceGroup = aliceProcessCommitResult3.newState;
await checkHpkeKeysMatch(aliceGroup, impl);
await checkHpkeKeysMatch(bobGroup, impl);
await testEveryoneCanMessageEveryone([aliceGroup, bobGroup], impl);
}
//# sourceMappingURL=update.test.js.map