#rage #encryption

age

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

18 releases (10 breaking)

0.10.0 Feb 4, 2024
0.9.2 Jun 13, 2023
0.9.1 Mar 24, 2023
0.9.0 Oct 27, 2022
0.0.0 Oct 6, 2019

#280 in Cryptography

Download history 2230/week @ 2023-11-02 1945/week @ 2023-11-09 2239/week @ 2023-11-16 1790/week @ 2023-11-23 1839/week @ 2023-11-30 2031/week @ 2023-12-07 2264/week @ 2023-12-14 977/week @ 2023-12-21 1184/week @ 2023-12-28 1990/week @ 2024-01-04 1922/week @ 2024-01-11 2904/week @ 2024-01-18 2794/week @ 2024-01-25 4310/week @ 2024-02-01 3519/week @ 2024-02-08 3120/week @ 2024-02-15

14,066 downloads per month
Used in 27 crates (15 directly)

MIT/Apache

1.5MB
8K 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.10"

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

~8–23MB
~301K SLoC