pdf_oxide 0.3.38

The fastest Rust PDF library with text extraction: 0.8ms mean, 100% pass rate on 3,830 PDFs. 5× faster than pdf_extract, 17× faster than oxidize_pdf. Extract, create, and edit PDFs.
Documentation
//! PDF Digital Signatures module.
//!
//! This module provides functionality for creating and verifying digital signatures
//! in PDF documents according to the PDF specification and PAdES (PDF Advanced
//! Electronic Signatures) standards.
//!
//! ## Features
//!
//! - **Signature Creation**: Sign PDFs with X.509 certificates
//! - **Signature Verification**: Verify existing PDF signatures
//! - **Certificate Handling**: Parse and validate X.509 certificate chains
//! - **ByteRange Calculation**: Proper handling of PDF byte ranges for signing
//!
//! ## Signature Types Supported
//!
//! - PKCS#7 detached signatures (adbe.pkcs7.detached)
//! - PKCS#7 SHA-1 signatures (adbe.pkcs7.sha1)
//! - PAdES signatures (ETSI.CAdES.detached)
//!
//! ## Example
//!
//! ```ignore
//! use pdf_oxide::api::Pdf;
//! use pdf_oxide::signatures::{SigningCredentials, SignOptions};
//!
//! let mut pdf = Pdf::open("document.pdf")?;
//!
//! // Load signing credentials
//! let credentials = SigningCredentials::from_pkcs12("cert.p12", "password")?;
//!
//! // Sign the document
//! pdf.sign(&credentials, SignOptions::default())?;
//! pdf.save("signed_document.pdf")?;
//! ```
//!
//! ## PDF Specification Reference
//!
//! - ISO 32000-1:2008 Section 12.8 - Digital Signatures
//! - ISO 32000-2:2020 Section 12.8 - Digital Signatures
//! - ETSI TS 102 778 - PAdES
//!
//! Requires the `signatures` feature to be enabled.

mod byterange;
#[cfg(feature = "signatures")]
mod cms;
#[cfg(feature = "signatures")]
mod cms_verify;
#[cfg(feature = "signatures")]
mod crypto;
mod enumerate;
mod pdf_date;
mod signer;
#[cfg(feature = "signatures")]
mod timestamp;
#[cfg(all(feature = "signatures", feature = "tsa-client"))]
mod tsa_client;
mod types;
mod verifier;

pub use byterange::ByteRangeCalculator;
#[cfg(feature = "signatures")]
pub use cms::extract_signer_certificate_der;
#[cfg(feature = "signatures")]
pub use cms_verify::{verify_signer, verify_signer_detached, SignerVerify};
pub use enumerate::{count_signatures, enumerate_signatures};
pub use pdf_date::parse_pdf_date_to_epoch;
pub use signer::PdfSigner;
#[cfg(feature = "signatures")]
pub use timestamp::{HashAlgorithm, Timestamp};
#[cfg(all(feature = "signatures", feature = "tsa-client"))]
pub use tsa_client::{TsaClient, TsaClientConfig};
pub use types::{
    DigestAlgorithm, SignOptions, SignatureAppearance, SignatureInfo, SignatureSubFilter,
    SigningCredentials, VerificationResult, VerificationStatus,
};
pub use verifier::SignatureVerifier;