Skip to content

L2PS messaging POC — real end-to-end encryption #958

Description

@linear

What

The l2ps-poc messaging tab was a transport test — it base64-wrapped the body into the server's { ciphertext, nonce, ephemeralKey } envelope with random fillers, not real encryption. This makes it real end-to-end encryption.

How — l2ps-poc #5

  • New src/crypto/e2eMessaging.ts: seal each message to the recipient's identity ed25519 key — ed25519 → X25519, a per-message ephemeral keypair, ECDH → HKDF-SHA256 → AES-256-GCM. The recipient's public key IS the encryption key (no key exchange); the server relays ciphertext only.
  • useMessaging: seal on send, decrypt inbound with the wallet's ed25519 key.
  • Review fixes: hash the ciphertext (not plaintext — metadata leak), non-fatal key read, ordered async decrypt.

Libsodium-style sealed box: real per-recipient confidentiality, no forward secrecy vs the recipient's long-term key (a ratchet is the follow-up).

Status

DevOps

Confirm (a) the l2ps-poc frontend is deployed (URL), and (b) the target node runs the messaging server: L2PS_MESSAGING_ENABLED=true, port 3006 reachable over wss.

Links

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions