#encryption #rage

age

[BETA] A simple, secure, and modern encryption library

15 releases (9 breaking)

Uses new Rust 2021

0.9.0 Oct 27, 2022
0.8.1 Jun 18, 2022
0.8.0 May 2, 2022
0.7.1 Dec 27, 2021
0.0.0 Oct 6, 2019

#227 in Cryptography

Download history 357/week @ 2022-08-15 374/week @ 2022-08-22 375/week @ 2022-08-29 447/week @ 2022-09-05 345/week @ 2022-09-12 532/week @ 2022-09-19 281/week @ 2022-09-26 424/week @ 2022-10-03 325/week @ 2022-10-10 251/week @ 2022-10-17 513/week @ 2022-10-24 505/week @ 2022-10-31 475/week @ 2022-11-07 428/week @ 2022-11-14 518/week @ 2022-11-21 309/week @ 2022-11-28

1,783 downloads per month
Used in 11 crates (7 directly)

MIT/Apache

1.5MB
7K SLoC

The age logo, an wireframe of St. Peters dome in Rome, with the text: age, file encryption

age Rust library

age is a simple, modern, and secure file encryption library. It features small explicit keys, no config options, and UNIX-style composability.

This crate provides a set of Rust APIs that can be used to build more complex tools based on the age format. The primary consumers of these APIs are the rage CLI tools, which provide straightforward encryption and decryption of files or streams (e.g. in shell scripts), as well as additional features such as mounting an encrypted archive.

The format specification is at age-encryption.org/v1. The age format was designed by @Benjojo12 and @FiloSottile.

The reference interoperable Go implementation is available at filippo.io/age.

Usage

Add this line to your Cargo.toml:

age = "0.9"

See the documentation for examples.

Feature flags

  • armor enables the age::armor module, which provides support for ASCII-armored age files.

  • async enables asynchronous APIs for encryption and decryption.

  • cli-common enables common helper functions for building age CLI tools.

  • ssh enables the age::ssh module, which allows for reusing existing SSH key files for age encryption.

  • web-sys enables calculating the work factor for passphrase encryption with the Performance timer via the web-sys crate, when compiling for a WebAssembly target such as wasm32-unknown-unknown. This feature is ignored for the wasm32-wasi target, which supports std::time::SystemTime.

  • unstable enables in-development functionality. Anything behind this feature flag has no stability or interoperability guarantees.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~7–15MB
~255K SLoC