1 unstable release
0.1.0 | Apr 16, 2023 |
---|
#65 in #io-error
370KB
10K
SLoC
rust-gmssl
GmSSL bindings for the Rust programming language.
Release Support
The current supported release of gmssl
is 0.1 and gmssl-sys
is 0.1.
Build & Test
Only support GmSSL 3.1.0+, must set env DEP_OPENSSL_VERSION_NUMBER before compile.
export DEP_OPENSSL_VERSION_NUMBER=806354944
cargo build
cargo test -- --nocapture
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 gmssl_errors::{gmssl_errors, put_error};
use gmssl::error::Error;
// Errors are organized at the top level into "libraries". The
// gmssl_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.
gmssl_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
~2–335KB