5 releases

0.2.1 Apr 3, 2023
0.2.0 Sep 12, 2022
0.1.4 Mar 23, 2021
0.1.3 Oct 15, 2019
0.1.0 May 4, 2018

#251 in Cryptography

Download history 1193/week @ 2023-12-13 1095/week @ 2023-12-20 646/week @ 2023-12-27 804/week @ 2024-01-03 1210/week @ 2024-01-10 1592/week @ 2024-01-17 1586/week @ 2024-01-24 2225/week @ 2024-01-31 2399/week @ 2024-02-07 3106/week @ 2024-02-14 2297/week @ 2024-02-21 2202/week @ 2024-02-28 2138/week @ 2024-03-06 1806/week @ 2024-03-13 1320/week @ 2024-03-20 648/week @ 2024-03-27

6,267 downloads per month
Used in 6 crates

MPL-2.0 license

26KB
453 lines

fernet-rs

dependency status

An implementation of fernet in Rust.

What is Fernet?

Fernet is a small library to help you encrypt parcels of data with optional expiry times. It's great for tokens or exchanging small strings or blobs of data. Fernet is designed to be easy to use, combining cryptographic primitives in a way that is hard to get wrong, prevents tampering and gives you confidence that the token is legitimate. You should consider this if you need:

  • Time limited authentication tokens in URLs or authorisation headers
  • To send small blobs of encrypted data between two points with a static key
  • Simple encryption of secrets to store to disk that can be read later
  • Many more ...

Great! How do I start?

Add fernet to your Cargo.toml:

[dependencies]
fernet = "0.1"

And then have a look at our [API documentation] online, or run "cargo doc --open" in your project.

Testing Token Expiry

By default fernet wraps operations in an attempt to be safe - you should never be able to "hold it incorrectly". But we understand that sometimes you need to be able to do some more complicated operations.

The major example of this is having your application test how it handles tokens that have expired past their ttl.

To support this, we allow you to pass in timestamps to the encrypt_at_time and decrypt_at_time functions, but these are behind a feature gate. To activate these api's you need to add the following to Cargo.toml

[dependencies]
fernet = { version = "0.1", features = ["fernet_danger_timestamps"] }

Dependencies

~2.2–3.5MB
~71K SLoC