osslsigncode 0.1.1

In-process Rust bindings for the vendored osslsigncode Authenticode implementation
#![cfg_attr(docsrs, feature(doc_cfg))]
#![doc = include_str!("../README.md")]
#![deny(unsafe_op_in_unsafe_fn)]

use libz_sys as _;
use openssl as _;
use openssl_sys as _;

mod binary;
mod credential;
mod digest;
mod drive;
mod error;
mod ffi;
mod format;
mod inspect;
mod jobs;
mod native;
mod owned;
mod policy;

mod bindings {
    #![allow(
        clippy::all,
        deref_nullptr,
        non_camel_case_types,
        non_snake_case,
        non_upper_case_globals,
        rustdoc::all
    )]
    include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
}

pub use binary::{Signed, Unsigned};
pub use credential::{Credential, Pkcs11, Secret};
pub use digest::{Digest, JpLevel, LeafHash};
pub use error::{Error, Result};
pub use format::AuthenticodeOptions;
pub use inspect::{SignatureInfo, Signer};
pub use jobs::{
    Add, AttachSignature, ExtractData, ExtractSignature, Extracted, NeedsOutput, Ready,
    RemoveSignature, Sign, Verify,
};
pub use policy::{Network, Timestamp, TrustAnchors};

/// Upstream bindgen types plus promoted `osslsigncode.c` locals.
///
/// Prefer the typed [`Unsigned`] / [`Signed`] API.
#[doc(hidden)]
pub mod sys {
    pub use crate::bindings::*;
    pub use crate::ffi::*;
}

/// Git commit of the osslsigncode submodule compiled into this crate.
pub const VENDOR_COMMIT: &str = env!("OSSL_VENDOR_COMMIT");

#[cfg(test)]
mod doctest_smoke {
    #[test]
    fn vendor_commit_is_nonempty() {
        assert!(!crate::VENDOR_COMMIT.is_empty());
    }
}