# 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.
- [](https://docs.rs/sodalite/)
- [](http://codyps.com/docs/sodalite/index.html)
- [](https://travis-ci.org/jmesmon/sodalite)
- [sodalite ](https://crates.io/crates/sodalite)
- [tweetnacl ](https://crates.io/crates/tweetnacl)
- [tweetnacl-sys ](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.