6 releases
0.3.0 | Jul 19, 2023 |
---|---|
0.2.1 | May 3, 2023 |
0.1.6 | Oct 13, 2022 |
0.1.2 | Aug 25, 2022 |
#389 in Cryptography
377 downloads per month
Used in 3 crates
(via wnfs)
91KB
1K
SLoC
This library implements the Skip Ratchet paper. Skip ratchet is a data structure for deriving keys that maintain backward secrecy. Unlike hash chains, this data structure is capable of efficiently making large leaps in hash count.
Outline
Usage
Creating a new ratchet and advancing it.
use skip_ratchet::Ratchet;
let mut ratchet = Ratchet::new();
ratchet.inc_by(10);
println!("{:?}", ratchet.derive_key());
Getting the previous versions of a ratchet.
use skip_ratchet::Ratchet;
let mut old_ratchet = Ratchet::new();
old_ratchet.inc_by(5);
let mut recent_ratchet = old_ratchet.clone();
recent_ratchet.inc_by(10);
for revision in recent_ratchet.previous(&old_ratchet, 10).unwrap() {
println!("{:#?}", revision);
}
Building the Project
-
Clone the repository.
git clone https://github.com/WebNativeFileSystem/rs-skip-ratchet.git
-
Change directory
cd rs-skip-ratchet
-
Build the project
cargo build
Testing the Project
-
Run tests
cargo test
Contributing
Pre-commit Hook
This library recommends using pre-commit for running pre-commit hooks. Please run this before every commit and/or push.
- Once installed, Run
pre-commit install
to setup the pre-commit hooks locally. This will reduce failed CI builds. - If you are doing interim commits locally, and for some reason if you don't want pre-commit hooks to fire, you can run
git commit -a -m "Your message here" --no-verify
.
Conventional Commits
This project lightly follows the Conventional Commits convention
to help explain commit history and tie in with our release process. The full
specification can be found here. We recommend prefixing your
commits with a type of fix
, feat
, docs
, ci
, refactor
, etc...,
structured like so:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Getting Help
For usage questions, usecases, or issues reach out to us in our Discord webnative-fs channel. We would be happy to try to answer your question or try opening a new issue on Github.
License
This project is licensed under the Apache License 2.0.
Dependencies
~2.5MB
~56K SLoC