// Generate Signature KeyPairs for Alice and Bob
let alice = await mls.generateIdentity();
let bob = await mls.generateIdentity();
// Generate Credentials for Alice and Bob
let credential_alice = await mls.generateCredential("alice");
let credential_bob = await mls.generateCredential("bob");
// Generate a KeyPackage for Bob
let kp_bob = await mls.generateKeyPackage(bob, credential_bob);
// Creation of a Group by Alice
let group = await mls.groupCreate(alice, credential_alice);
// Get membership of the group
let membership_0 = await group.details();
// Test that the returned group membership is not null
info("Membership @ Epoch 0:", JSON.stringify(membership_0));
is(membership_0.members.length, 1, "There should be one member in the group");
// Alice adds Bob to a group
let commit_output = await group.add(kp_bob);
// Test that the returned commit output is not null
info("Commit 1:", byteArrayToHexString(commit_output.commit));
isnot(byteArrayToHexString(commit_output.commit), "", "Commit != ''");
// Alice receives the commit
await group.receive(commit_output.commit);
// Get membership of the group
let membership_1 = await group.details();
// Test that the returned group membership is not null
info("Membership @ Epoch 1:", JSON.stringify(membership_1));
is(membership_1.members.length, 2, "There should be two members in the group");
// Alice removes Bob from the group
let commit_output_2 = await group.remove(bob);
// Alice receives the commit
await group.receive(commit_output_2.commit);
// Get membership of the group
let membership_2 = await group.details();
// Test that the returned group membership is not null
info("Membership @ Epoch 2:", JSON.stringify(membership_2));
is(membership_2.members.length, 1, "There should be one member in the group");
// Verify that Alice is the only member in the group at epoch 0
is(membership_0.members.length, 1, "Alice should be alone in the group at epoch 0");
is(membership_0.members.some(member => byteArrayToHexString(member.clientId) === byteArrayToHexString(alice.content)), true, "Alice should be alone in the group at epoch 0");
// Verify that both Alice and Bob are members in the group at epoch 1
is(membership_1.members.length, 2, "There should be two members in the group at epoch 1");
is(membership_1.members.some(member => byteArrayToHexString(member.clientId) === byteArrayToHexString(bob.content)), true, "Bob should be in the group at epoch 1");
is(membership_1.members.some(member => byteArrayToHexString(member.clientId) === byteArrayToHexString(alice.content)), true, "Alice should be in the group at epoch 1");
// Verify that Alice is the only member in the group at epoch 2
is(membership_2.members.length, 1, "Alice should be alone in the group at epoch 2");
is(membership_2.members.some(member => byteArrayToHexString(member.clientId) === byteArrayToHexString(alice.content)), true, "Alice should be alone in the group at epoch 2");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.