simple-secrets.rs Build Status

The Rust implementation of a simple, opinionated library for encrypting small packets of data securely. Designed for exchanging tokens among systems written in a variety of programming languages: Node.js, Ruby, Rust, Objective-C, Java, Erlang.

Examples

Basic

Send:

```rust use simple_secrets::Packet;

// Try head /dev/urandom | shasum -a 256 to make a decent 256-bit key let sender = Packet::new("<64-char hex string master key (32 bytes, 256 bits)>".tostring()); let packet = sender.pack("this is a secret message").unwrap(); // => 'Qr4m7AughkcQIRqQvlyXiB67EwHdBf5n9JD2sZ9NpO4ksPGvLYjNbDm3HRzvFXFSpV2IqDQw_LTamndMh2c7iOQT0lSp4LstqJPAtoQklU5sb7JHYyTOuf-6W-q7W8gAnq1wCs5' ```

rust // Initialize from any [u8; 32] if your key is already in bytes let sender = Packet::from([0x9f; 32]);

Receive:

```rust use simple_secrets::Packet;

// Same shared key let sender = Packet::new("<64-char hex string master key (32 bytes, 256 bits)>".tostring()); // Read data from somewhere let packet = "OqlG6KVMeyFYmunboS3HIXkvNnXKTxg2yNkQydZOhvJrZvmfov54hUmkkiZCnlhzyrlwOJkbV7XnPPbqvdzZ6TsFOO5YdmxjxRksZmeIhbhLaMiDbfsOuSY1dBnZgtYCw-FRIM".tostring(); let secret_message = sender.unpack(packet)?; // => { "msg" => "this is a secret message" } ```

Can you add ...

This implementation follows [simple-secrets] for 100% compatibility.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.