Project

xstream

0.01
Repository is archived
No commit activity in last 3 years
No release in over 3 years
XSTREAM combines the X25519 Elliptic Curve Diffie-Hellman function" "with HKDF and the STREAM construction for streaming authenticated" "encryption. The result is an easy-to-use public key cryptosystem.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16

Runtime

~> 0.3
~> 0.3
~> 1.0
 Project Readme

NOTE: This project has been archived! Please check out the STREAM functionality in JMSE as a spiritual successor

XSTREAM Build Status MIT/Apache 2.0 Licensed Gitter Chat

A public-key encryption system supporting streaming message encryption/decryption.

What is XSTREAM?

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.

Is it any good?

Yes.

Is it "Production Ready™"?

DANGER: EXPERIMENTAL

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.

Key Derivation Function

XSTREAM KDF

STREAM Construction

XSTREAM KDF

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.

Language Support

XSTREAM libraries are available for the following languages:

Language Version
Go N/A
JavaScript npm
Python pypi
Ruby gem
Rust crate

Help and Discussion

Have questions? Want to suggest a feature or change?

Documentation

Please see the XSTREAM Wiki for more information about XSTREAM.

Code of Conduct

We abide by the Contributor Covenant and ask that you do as well.

For more information, please see CODE_OF_CONDUCT.md.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/miscreant/xstream

License

Copyright (c) 2017 The Miscreant Developers.

All XSTREAM libraries are licensed under either of:

at your option.