Skip to content

[WIP] Experimental MLS implementation targeting Node.js

License

Notifications You must be signed in to change notification settings

shipgirlproject/node-mls

Repository files navigation

Node.js MLS

This project is not ready for use. Any help on inplementation/interpretation of the specification(s) is appreciated.

DAVE → RFC9420 (MLS) → RFC9180 (HPKE)
             ↑

Experimental implementation of Messaging Layer Security primarily for use with an implementation of Discord's DAVE protocol (shipgirlproject/node-dave), so not all of the MLS specification is implemented.

Status

Target: Partial RFC9420 (MLS v1)

HPKE

DAVE → RFC9420 (MLS) → RFC9180 (HPKE)
                             ↑

Target: Partial RFC9180 with MLS considerations

Underlying cryptographic operations relies on the noble cryptography libraries.

Notes/deviations from spec:

  • Byte strings are represented as buffers (to get a byte/hex string, use <Key>.raw.toString('hex'))
  • No serialization/deserialization
  • Maximum context sequence number is Number.MAX_SAFE_INTEGER for practical reasons
  • Single shot APIs are not implemented

AEAD

  • AES-128-GCM
    • NOTE: non-standard errors, FIXME

KEM

  • DHKEM(P-256, HKDF-SHA256)
    • NOTE: non-standard errors, FIXME

KDF

  • HKDF-SHA256
    • NOTE: non-standard errors, FIXME

Cipher Suite

  • DHKEMP256_AES128GCM_SHA256_P256

Credential

  • Basic

Extensions

  • Group
    • External Senders

About

[WIP] Experimental MLS implementation targeting Node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published