Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wnfs-wg/rs-skip-ratchet
Rust implementation of the skip ratchet
https://github.com/wnfs-wg/rs-skip-ratchet
hash keygen otp pseudorandom ratchet skip-ratchet
Last synced: 1 day ago
JSON representation
Rust implementation of the skip ratchet
- Host: GitHub
- URL: https://github.com/wnfs-wg/rs-skip-ratchet
- Owner: wnfs-wg
- License: apache-2.0
- Created: 2022-04-06T17:32:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-05T05:16:40.000Z (10 months ago)
- Last Synced: 2024-07-30T20:12:06.099Z (4 months ago)
- Topics: hash, keygen, otp, pseudorandom, ratchet, skip-ratchet
- Language: Rust
- Homepage: https://eprint.iacr.org/2022/1078
- Size: 112 KB
- Stars: 12
- Watchers: 7
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
This library implements the [Skip Ratchet paper][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](#usage)
- [Building the Project](#building-the-project)
- [Testing the Project](#testing-the-project)
- [Contributing](#contributing)
- [Getting Help](#getting-help)
- [License](#license)## Usage
#### Creating a new ratchet and advancing it.
```rust
use skip_ratchet::Ratchet;let mut ratchet = Ratchet::new();
ratchet.inc_by(10);println!("{:?}", ratchet.derive_key());
```#### Getting the previous versions of a ratchet.
```rust
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.
```bash
git clone https://github.com/WebNativeFileSystem/rs-skip-ratchet.git
```- Change directory
```bash
cd rs-skip-ratchet
```- Build the project
```bash
cargo build
```## Testing the Project
- Run tests
```bash
cargo test
```## Contributing
### Pre-commit Hook
This library recommends using [pre-commit][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][commit-spec-site]
to help explain commit history and tie in with our release process. The full
specification can be found [here][commit-spec]. We recommend prefixing your
commits with a type of `fix`, `feat`, `docs`, `ci`, `refactor`, etc...,
structured like so:```
[optional scope]:[optional body]
[optional footer(s)]
```## Getting Help
For usage questions, usecases, or issues reach out to us in our [Discord webnative-fs channel](https://discord.gg/YbT6x7Wkvk).
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](https://github.com/wnfs-wg/rs-skip-ratchet/blob/main/LICENSE).
[commit-spec]: https://www.conventionalcommits.org/en/v1.0.0/#specification
[commit-spec-site]: https://www.conventionalcommits.org/
[paper]: https://eprint.iacr.org/2022/1078.pdf
[pre-commit]: https://pre-commit.com/