Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

README

        



Skip Ratchet Logo

Skip Ratchet



Crate Information


Code Coverage


Build Status


License


Docs


Discord


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/