Cryptography primitives for Exonum

Travis Build Status License: Apache-2.0 rust 1.41.0+ required

exonum-crypto provides a high-level API for work with various cryptography tasks.

Capabilities of exonum-crypto include:

The main backend for exonum-crypto is sodiumoxide, and the used algorithms are:

Consult the crate docs for more details.

Examples

Signing data and verifying the signature:

rust exonum_crypto::init(); let (public_key, secret_key) = exonum_crypto::gen_keypair(); let data = [1, 2, 3]; let signature = exonum_crypto::sign(&data, &secret_key); assert!(exonum_crypto::verify(&signature, &data, &public_key));

Hashing fixed amount of data:

rust exonum_crypto::init(); let data = [1, 2, 3]; let hash = exonum_crypto::hash(&data);

Hashing data by chunks:

```rust use exonum_crypto::HashStream;

exonumcrypto::init(); let data: Vec<[u8; 5]> = vec![[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]; let mut hashstream = HashStream::new(); for chunk in data { hashstream = hashstream.update(&chunk); } let _ = hash_stream.hash(); ```

Usage

Include exonum-crypto as a dependency in your Cargo.toml:

toml [dependencies] exonum-crypto = "1.0.0-rc.2"

License

exonum-crypto is licensed under the Apache License (Version 2.0). See LICENSE for details.