uselesskey_core_negative/lib.rs
1#![forbid(unsafe_code)]
2#![cfg_attr(not(feature = "std"), no_std)]
3
4//! Compatibility façade for negative fixture primitives.
5//!
6//! This crate keeps existing `uselesskey_core_negative` paths stable while
7//! delegating to focused microcrates:
8//! - [`uselesskey_core_negative_der`] for DER corruption helpers.
9//! - [`uselesskey_core_negative_pem`] for PEM corruption helpers.
10//!
11//! # Examples
12//!
13//! Corrupt a PEM string with a specific strategy:
14//!
15//! ```
16//! use uselesskey_core_negative::{corrupt_pem, CorruptPem};
17//!
18//! let pem = "-----BEGIN PUBLIC KEY-----\nABC=\n-----END PUBLIC KEY-----\n";
19//! let bad = corrupt_pem(pem, CorruptPem::BadHeader);
20//! assert!(bad.starts_with("-----BEGIN CORRUPTED KEY-----"));
21//! ```
22//!
23//! Deterministic DER corruption from a variant string:
24//!
25//! ```
26//! use uselesskey_core_negative::corrupt_der_deterministic;
27//!
28//! let der = vec![0x30, 0x82, 0x01, 0x22, 0x10, 0x20];
29//! let a = corrupt_der_deterministic(&der, "corrupt:test-v1");
30//! let b = corrupt_der_deterministic(&der, "corrupt:test-v1");
31//! assert_eq!(a, b); // same variant ⇒ same corruption
32//! ```
33
34pub use uselesskey_core_negative_der::{corrupt_der_deterministic, flip_byte, truncate_der};
35pub use uselesskey_core_negative_pem::{CorruptPem, corrupt_pem, corrupt_pem_deterministic};