Skip to content

v0.0.5-sprint-4

@DemigodDSK DemigodDSK tagged this 28 Apr 03:57
Aegis stops being a bag of cryptographic primitives and becomes
a thing that can establish authenticated post-quantum sessions
between two parties who have never communicated before.

What shipped:
  - MLKEM1024KEM — bare ML-KEM-1024 (FIPS 203 Cat-5) as a
    standalone Tier 1 KEM, with 25 NIST KeyGen KATs.
  - X25519 namespace + DHKeyPair envelope.
  - IdentityKeyPair / IdentityPublicKey — long-term identity
    as (ML-DSA-65 signing, X25519 DH).
  - PrekeyBundle, SignedPrekey, SignedPQKEMPrekey,
    OneTimePrekey, PrekeyBundleSecrets — Bob's
    server-publishable record + the secrets he retains, with
    per-role domain-separated signatures and JSON wire format.
  - PQXDH.initiate / PQXDH.respond — the key-exchange itself.
    HKDF combiner over four (or three) DH outputs + ML-KEM
    shared secret; mirrors Signal's PQXDH derivation with
    Aegis-specific labels.
  - InitialMessage — Codable wire format Alice sends to Bob.
  - SafetyNumber — Signal-format-compatible 12 × 5-digit
    fingerprint over both identities, order-independent,
    5200-iteration SHA-512.

Test status: 148 tests, 3 skipped (issue #1), 0 failures.

Sprint structure followed the Sprint-2 pattern (one commit per
deliverable, single tag at the end). Six commits stacked from
v0.0.4-sprint-3:
  7d86845 expose MLKEM1024KEM
  c699b1f X25519 + Identity
  d1944c0 PrekeyBundle + signature chain
  bd7a86d PQXDH handshake
  17ce606 SafetyNumber
  (this commit) docs closeout

Open follow-ups:
  - #10 — optional libsignal byte-level interop test
    (deferred from this sprint; alternative pinned-input
    PQXDH KAT also outlined there)
  - #9 — upstream CryptoKit MLKEM1024 trap (workaround
    shipped in MLKEM1024.swift)

pre-council-approval (Maintainer @DemigodDSK, 2026-04-27)
Assets 2
Loading