NOTE: This project has been archived! Please check out the STREAM functionality in JMSE as a spiritual successor
A public-key encryption system supporting streaming message encryption/decryption.
XSTREAM (pronounced "extreme!") is a public key encryption system combining X25519 Elliptic Curve Diffie-Hellman (RFC 7748) with the STREAM construction.
The implementations in this repository are built on top of the Miscreant misuse-resistant symmetric encryption library, which provides the AES-SIV and AES-PMAC-SIV algorithms.
More information on XSTREAM is available in the Wiki.
tl;dr: Not ready yet. Check back later.
XSTREAM is an experimental construction whose design has not yet been finalized which is still potentially subject to change. It is not yet suitable to use in production systems.
The design has not yet been thoroughly reviewed and we're presently soliciting feedback from cryptographers.
Additionally all XSTREAM libraries are v0.1, which is hopefully a sign, at least for a cryptography library, that you should probably wait before attempting to use it.
NOTE: As XSTREAM derives a unique symmetric key every time the KDF is
invoked, and also supports an optional salt value passed directly to HKDF,
the N
parameter passed to the underlying STREAM construction is fixed to
all-zeroes.
The API is explicitly designed to prevent encrypting more than one message under the same ephemeral key.
XSTREAM libraries are available for the following languages:
Language | Version |
---|---|
Go | N/A |
JavaScript | |
Python | |
Ruby | |
Rust |
Have questions? Want to suggest a feature or change?
Please see the XSTREAM Wiki for more information about XSTREAM.
We abide by the Contributor Covenant and ask that you do as well.
For more information, please see CODE_OF_CONDUCT.md.
Bug reports and pull requests are welcome on GitHub at https://github.com/miscreant/xstream
Copyright (c) 2017 The Miscreant Developers.
All XSTREAM libraries are licensed under either of:
at your option.