7 releases (breaking)

0.7.0 Sep 12, 2024
0.6.0 Mar 6, 2023
0.5.0 Nov 23, 2022
0.4.0 Nov 8, 2022
0.1.0 Oct 24, 2022

#174 in Parser implementations

Download history 266/week @ 2024-08-16 231/week @ 2024-08-23 221/week @ 2024-08-30 214/week @ 2024-09-06 275/week @ 2024-09-13 276/week @ 2024-09-20 229/week @ 2024-09-27 372/week @ 2024-10-04 405/week @ 2024-10-11 411/week @ 2024-10-18 384/week @ 2024-10-25 377/week @ 2024-11-01 463/week @ 2024-11-08 927/week @ 2024-11-15 395/week @ 2024-11-22 533/week @ 2024-11-29

2,425 downloads per month
Used in 7 crates (5 directly)

LGPL-2.0-or-later

110KB
1.5K SLoC

A library for reading the configuration of Sequoia's StandardPolicy from a configuration file.

Sequoia's StandardPolicy can be configured using Rust. As with most things, Sequoia's low-level library avoids imposing a policy on users of the library, like where a configuration file should be or even what format it should have. When necessary, it is up to the application to provide an interface, and to configure the policy appropriately.

This library provides a high-level interface that parses a configuration file, and returns a configured StandardPolicy.

See the crate's documentation for a description of the file format.

Quick Start

To add sequoia-policy-config to your crate add the following your crate:

[dependencies]
sequoia-openpgp = { version = "1" }
sequoia-policy-config = { version = "0.6" }

This will use sequoia-openpgp's default cryptographic backend, which is currently Nettle.

To select a different cryptographic backend, such as OpenSSL, you can then do:

cargo build --release --no-default-features --features sequoia-openpgp/crypto-openssl

To use sequoia-policy-config in your crate, it is usually enough to replace the use of StandardPolicy::new with the following::

use sequoia_policy_config::ConfiguredStandardPolicy;

fn main() -> openpgp::Result<()> {
    let mut p = ConfiguredStandardPolicy::new();
    p.from_bytes(b"[hash_algorithms]
        sha1.collision_resistance = \"never\"")?;
    let p = &p.build();

    // ...
    Ok(())
}

Building

This crate is purely a library, so it is not usually built directly. If you do build it (e.g., because you are modifying it), you'll need to select a cryptographic backend. See sequoia-openpgp's README for details.

The short version is:

# Use the Nettle backend:
$ cargo build --release --features sequoia-openpgp/crypto-nettle
$ cargo test --release --features sequoia-openpgp/crypto-nettle

# Use the OpenSSL backend:
$ cargo build --release --features sequoia-openpgp/crypto-openssl
$ cargo test --release --features sequoia-openpgp/crypto-openssl

Dependencies

~12–20MB
~245K SLoC