1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//! Shared zero-sized-type (ZST) axis markers used across `core/`, `legacy/`, and the public API.
//!
//! These types carry no runtime data — they encode intent at the type level so that
//! `Kyber<ProcessStatus, KyberSize, ContentStatus, AlgorithmParam>` mis-uses are caught at
//! compile time rather than at run time.
//!
//! # Responsibility scope
//! This module owns only the *shared* axis markers: process direction, content kind, and
//! cipher algorithm. Size markers for legacy Kyber (`Kyber512`, `Kyber768`, `Kyber1024`) live
//! in `legacy/` because they are tightly coupled to the pqcrypto KEM variant selection.
//! New FIPS size markers (`MlKem512`, `MlKem768`, `MlKem1024`) will be added in Phase 2
//! inside `kem/`.
//!
//! # Key types exported
//! - Process: [`Encryption`], [`Decryption`]
//! - Content: [`Files`], [`Message`], [`Data`]
//! - Cipher: [`AES`], [`AesGcmSiv`], [`AesCtr`], [`AesXts`], [`XChaCha20`], [`XChaCha20Poly1305`]
//!
//! # Concurrency
//! All types are zero-sized and implement no state; they are inherently `Send + Sync`.
//!
//! # Examples
//! ```rust
//! use crypt_guard::markers::{Encryption, AES};
//! ```
/// Process-direction marker: the Kyber instance will perform encryption.
;
/// Process-direction marker: the Kyber instance will perform decryption.
;
/// Content-kind marker: the target is a file path.
;
/// Content-kind marker: the target is a UTF-8 message string.
;
/// Content-kind marker: the target is a raw byte slice.
;
/// Cipher-algorithm marker: AES-256-CBC with HMAC.
;
/// Cipher-algorithm marker: AES-256-GCM-SIV (nonce-bearing).
;
/// Cipher-algorithm marker: AES-256-CTR (nonce-bearing).
;
/// Cipher-algorithm marker: AES-256-XTS (double-width key).
;
/// Cipher-algorithm marker: XChaCha20 stream cipher (nonce-bearing).
;
/// Cipher-algorithm marker: XChaCha20-Poly1305 AEAD (nonce-bearing).
;