# sodalite An implimentation of tweetnacl in pure rust. Originally generated by manually translating `tweetnacl.c` into rust. Tested by verifying outputs match those of tweetnacl. - [![Documentation (releases)](https://img.shields.io/badge/documentation-release-brightgreen.svg?style=flat)](https://docs.rs/sodalite/) - [![Documentation (master)](https://img.shields.io/badge/documentation-master-yellow.svg?style=flat)](http://codyps.com/docs/sodalite/index.html) - [![Travis](https://img.shields.io/travis/jmesmon/sodalite.svg?style=flat)](https://travis-ci.org/jmesmon/sodalite) - [sodalite ![sodalite Crates.io](https://img.shields.io/crates/v/sodalite.svg?style=flat)](https://crates.io/crates/sodalite) - [tweetnacl ![tweetnacl Crates.io](https://img.shields.io/crates/v/tweetnacl.svg?style=flat)](https://crates.io/crates/tweetnacl) - [tweetnacl-sys ![tweetnacl-sys Crates.io](https://img.shields.io/crates/v/tweetnacl-sys.svg?style=flat)](https://crates.io/crates/tweetnacl-sys) ## Todo - provide additional APIs: - rather than take bare mutable references, use wrapper types around the refs to capture the underlying type (ie: prevent mixing keys between primitives) - add a buffer and/or "set-only" abstraction to prevent unsafety wrt uninitialized values (also should allow some internal optimization). - sodiumoxide style API that returns values rather than taking mutable refs - Use namespacing to seperate different APIs and backend impls - start testing against sodiumoxide as well - Provide some of the API impovements from libsodium that are missing nacl (disjoint signatures, not requiring special extra space in buffers) ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 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.