2 unstable releases

0.2.0 Jun 19, 2021
0.1.0 Mar 14, 2019

#2489 in Cryptography

Download history 701/week @ 2024-07-20 443/week @ 2024-07-27 404/week @ 2024-08-03 542/week @ 2024-08-10 715/week @ 2024-08-17 1161/week @ 2024-08-24 605/week @ 2024-08-31 1149/week @ 2024-09-07 407/week @ 2024-09-14 417/week @ 2024-09-21 380/week @ 2024-09-28 283/week @ 2024-10-05 326/week @ 2024-10-12 277/week @ 2024-10-19 171/week @ 2024-10-26 252/week @ 2024-11-02

1,080 downloads per month
Used in 2 crates

MIT/Apache

385KB
10K SLoC

rust-openssl

crates.io

OpenSSL bindings for the Rust programming language.

Documentation.

Release Support

The current supported release of openssl is 0.10 and openssl-sys is 0.9.

New major versions will be published at most once per year. After a new release, the previous major version will be partially supported with bug fixes for 3 months, after which support will be dropped entirely.

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 under the terms of both the Apache License, Version 2.0 and the MIT license without any additional terms or conditions.


lib.rs:

Custom error library support for the openssl crate.

OpenSSL allows third-party libraries to integrate with its error API. This crate provides a safe interface to that.

Examples

use openssl_errors::{openssl_errors, put_error};
use openssl::error::Error;

// Errors are organized at the top level into "libraries". The
// openssl_errors! macro can define these.
//
// Libraries contain a set of functions and reasons. The library itself,
// its functions, and its definitions all all have an associated message
// string. This string is what's shown in OpenSSL errors.
//
// The macro creates a type for each library with associated constants for
// its functions and reasons.
openssl_errors! {
    pub library MyLib("my cool library") {
        functions {
            FIND_PRIVATE_KEY("find_private_key");
        }

        reasons {
            IO_ERROR("IO error");
            BAD_PASSWORD("invalid private key password");
        }
    }
}

// The put_error! macro pushes errors onto the OpenSSL error stack.
put_error!(MyLib::FIND_PRIVATE_KEY, MyLib::BAD_PASSWORD);

// Prints `error:80001002:my cool library:find_private_key:invalid private key password:src/lib.rs:27:`
println!("{}", Error::get().unwrap());

// You can also optionally attach an extra string of context using the
// standard Rust format syntax.
let tries = 2;
put_error!(MyLib::FIND_PRIVATE_KEY, MyLib::IO_ERROR, "tried {} times", tries);

// Prints `error:80001001:my cool library:find_private_key:IO error:src/lib.rs:34:tried 2 times`
println!("{}", Error::get().unwrap());

Dependencies

~8–360KB