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.
Target: Partial RFC9420 (MLS v1)
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
- AES-128-GCM
- NOTE: non-standard errors, FIXME
- DHKEM(P-256, HKDF-SHA256)
- NOTE: non-standard errors, FIXME
- HKDF-SHA256
- NOTE: non-standard errors, FIXME
- DHKEMP256_AES128GCM_SHA256_P256
- Basic
- Group
- External Senders