libsignify_rs/
lib.rs

1//
2// signify-rs: cryptographically sign and verify files
3// src/lib.rs: Library code
4//
5// Copyright (c) 2025, 2026 Ali Polatel <alip@chesswob.org>
6// Based in part upon OpenBSD's signify which is:
7//   Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
8//   Copyright (c) 2016 Marc Espie <espie@openbsd.org>
9//   Copyright (c) 2019 Adrian Perez de Castro <aperez@igalia.com>
10//   Copyright (c) 2019 Scott Bennett and other contributors
11//   SPDX-License-Identifier: ISC
12//
13// SPDX-License-Identifier: ISC
14
15//! Signify - OpenBSD-compatible file signing & verification tool
16//!
17//! This crate provides a library and a CLI tool for signing and
18//! verifying files.  It focuses on security, simplicity, and strict
19//! adherence to the OpenBSD implementation's formats and logic, while
20//! leveraging Rust's safety guarantees.
21
22#![forbid(clippy::arithmetic_side_effects)]
23#![forbid(clippy::as_ptr_cast_mut)]
24#![forbid(clippy::assertions_on_result_states)]
25#![forbid(clippy::as_underscore)]
26#![forbid(clippy::borrow_as_ptr)]
27#![forbid(clippy::branches_sharing_code)]
28#![forbid(clippy::case_sensitive_file_extension_comparisons)]
29#![forbid(clippy::cast_lossless)]
30#![forbid(clippy::cast_possible_truncation)]
31#![forbid(clippy::cast_possible_wrap)]
32#![forbid(clippy::cast_precision_loss)]
33#![forbid(clippy::cast_ptr_alignment)]
34#![forbid(clippy::cast_sign_loss)]
35#![forbid(clippy::checked_conversions)]
36#![forbid(clippy::clear_with_drain)]
37#![forbid(clippy::cloned_instead_of_copied)]
38#![forbid(clippy::clone_on_ref_ptr)]
39#![forbid(clippy::cognitive_complexity)]
40#![forbid(clippy::collection_is_never_read)]
41#![forbid(clippy::copy_iterator)]
42#![forbid(clippy::create_dir)]
43#![forbid(clippy::dbg_macro)]
44#![forbid(clippy::debug_assert_with_mut_call)]
45#![forbid(clippy::decimal_literal_representation)]
46#![forbid(clippy::default_trait_access)]
47#![forbid(clippy::default_union_representation)]
48#![forbid(clippy::derive_partial_eq_without_eq)]
49#![forbid(clippy::doc_link_with_quotes)]
50#![forbid(clippy::doc_markdown)]
51#![forbid(clippy::explicit_into_iter_loop)]
52#![forbid(clippy::explicit_iter_loop)]
53#![forbid(clippy::fallible_impl_from)]
54#![forbid(clippy::missing_safety_doc)]
55#![forbid(clippy::undocumented_unsafe_blocks)]
56#![forbid(missing_docs)]
57#![forbid(unsafe_code)]
58
59/// Cryptographic primitives (Ed25519, SHA2, Bcrypt PBKDF).
60pub mod crypto;
61/// Error types and handling.
62pub mod error;
63/// File format definitions (structures and serialization).
64pub mod file;
65/// High-level operations (Key generation, Signing, Verification).
66pub mod ops;
67
68/// Configuration types (Mode, Signify).
69pub mod signify;
70
71/// Utility functions (path handling, compliance checks).
72pub mod utils;
73
74// Re-import for convenience.
75pub use ops::{KeyGenerator, Signer, Verifier};
76
77#[cfg(test)]
78mod prop_tests;