Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/mls/tests/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  test_pending.html

  Sprache: HTML
 

 products/Sources/formale Sprachen/C/Firefox/dom/mls/tests/test_pending.html


<!DOCTYPE HTML>
<html>

<head>
  <title>Test for Messaging Layer Security</title>
  <!-- SimpleTest Helpers -->
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
  <!-- Local Helpers -->
  <script src="head_mls.js"></script>
</head>

<body>
  <pre id="test">
<script class="testbody" type="text/javascript">

  async function test_pending() {

    const mls = new MLS();

    // Alice: Create signature keypair and credential
    const alice = await mls.generateIdentity();
    const alice_credential = await mls.generateCredential("alice");

    // Bob: Create signature keypair and credential
    const bob = await mls.generateIdentity();
    const bob_credential = await mls.generateCredential("bob");

    // Bob: Generate a key package
    const bob_key_package = await mls.generateKeyPackage(bob, bob_credential);

    // Alice: Create a group
    let group_alice = await mls.groupCreate(alice, alice_credential);

    // Alice: Add Bob to the group
    await group_alice.add(bob_key_package);

    // Check that Alice has a pending commit
    let has_pending_commit = await group_alice.hasPendingCommit();
    info("Does Alice have pending commit? ", has_pending_commit);
    is(has_pending_commit, true);

    // Discard Alice's pending commit
    await group_alice.clearPendingCommit();

    // Check that Alice has a pending commit
    let has_pending_commit2 = await group_alice.hasPendingCommit();
    info("Does Alice have pending commit? ", has_pending_commit2);
    is(has_pending_commit2, false);
    isnot(has_pending_commit2, null);

    // Alice: Add Bob to the group
    let commit_output = await group_alice.add(bob_key_package);

    // Check that Alice has a pending commit
    let has_pending_commit3 = await group_alice.hasPendingCommit();
    info("Does Alice have pending commit? ", has_pending_commit3);
    is(has_pending_commit3, true);

    // Alice: process her Add commit instead of receiving the commit
    await group_alice.applyPendingCommit();

    // Check that Alice has a pending commit
    let has_pending_commit4 = await group_alice.hasPendingCommit();
    info("Does Alice have pending commit? ", has_pending_commit4);
    is(has_pending_commit4, false);
    isnot(has_pending_commit4, null);

    // Bob: Join the group
    let group_bob = await mls.groupJoin(bob, commit_output.welcome);

    // Test: compare group identifier from Alice and Bob
    is(byteArrayToHexString(group_alice.groupId), byteArrayToHexString(group_bob.groupId), "Alice GID == Bob GID");

    // Alice & Bob: Export a secret
    const context_bytes = new Uint8Array([99111110116101120116]); // "context" in ASCII

    const exportAlice = await group_alice.exportSecret("label", context_bytes, 15);
    const exportBob = await group_bob.exportSecret("label", context_bytes, 15);

    // Test: compare exporter from Alice and Bob
    is(byteArrayToHexString(exportAlice.exporter), byteArrayToHexString(exportBob.exporter), "Exporter Alice == Exporter Bob");

    // Bob: send a message to the group
    const message = new Uint8Array([7210110810811132871111141081003233]); // "Hello World !" in ASCII
    const ctx = await group_bob.send(message);

    // Alice: receive a message from the group
    const pt = await group_alice.receive(ctx);
    info("Alice received a message from Bob: " + JSON.stringify(pt));

    // Test: compare the message and the decrypted message
    is(byteArrayToHexString(message), byteArrayToHexString(pt.content), "Plaintext == Decrypted Message");

    SimpleTest.finish();
  }

  SimpleTest.waitForExplicitFinish();
  test_pending();

</script>
</pre>
</body>

</html>

Messung V0.5 in Prozent
C=79 H=86 G=82

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.