cream
=====
Bring crypto to your stream !

Encrypt and decrypt streams of data with only a master password.
The key is derivated from the password + salt combo, and used to encrypt
data byte per byte.

Features
-----
- No key files involved
- Handle arbitrary chunks of data
- Modern algorithms ([XChaCha20-Poly1305][0] + [Argon2id][1])
- Decryption parameters discovery

Usage
-----
Refer to cream(1) manual page for details and examples.
The below commands are provided as a quick introduction.

Send an encrypted file over the network

       # Sender side, send encrypted data to remote.lan
       cream -e < file.jpg | nc remote.lan 1337

       # Receiver side, receive data on port 1337
       nc -l 1337 | cream -d > file.jpg

Format
------
For convenience, encryption parameters are included at the beginning of
the stream. This header can be parsed using the file(1) command:

       % file -m cream.magic cipher.cream
       cipher.cream: CREAM encrypted data, version 16,
               xchachapoly1305 bs=4096, argon2id m=65536 t=3 p=4

The header format and magic pattern are detailed in cream(5) manual page.

Installation
-----
Edit config.mk as needed, then build/install with the following commands:

       make
       make install

[0]: https://en.wikipedia.org/wiki/ChaCha20-Poly1305
[1]: https://en.wikipedia.org/wiki/Argon2