docs(cipher-factory): document public API types

Add doc comments to OutputFormat, OperationMode enums and their methods.
Add crate-level documentation describing the factory's purpose.
This commit is contained in:
Kristofers Solo 2025-12-31 00:26:31 +02:00
parent dd07a1d29b
commit 220baa09ad
Signed by: kristoferssolo
GPG Key ID: 8687F2D3EEE6F0ED
7 changed files with 21 additions and 8 deletions

View File

@ -1,6 +1,6 @@
use crate::Block128;
/// Mixes each column using matrix multiplication in GF(2^8) (MixColumns step).
/// Mixes each column using matrix multiplication in GF(2^8) ([`MixColumns`] step).
///
/// Each column is treated as a polynomial and multiplied by a fixed polynomial
/// modulo x^4 + 1. This provides diffusion across the rows.

View File

@ -1,6 +1,6 @@
use crate::{Block128, key::Subkey};
/// XORs the state with a round key (AddRoundKey step).
/// XORs the state with a round key ([`AddRoundKey`] step).
///
/// Each round of AES combines the current state with a derived subkey
/// using bitwise XOR. This operation is its own inverse.

View File

@ -1,6 +1,6 @@
use crate::Block128;
/// Cyclically shifts rows of the state matrix (ShiftRows step).
/// Cyclically shifts rows of the state matrix ([`ShiftRows`] step).
///
/// Row 0: no shift, Row 1: shift left 1, Row 2: shift left 2, Row 3: shift left 3.
/// This provides diffusion across the columns.

View File

@ -1,6 +1,6 @@
use crate::{Block128, sbox::SboxLookup};
/// Substitutes each byte using the AES S-box (SubBytes step).
/// Substitutes each byte using the AES S-box ([`SubBytes`] step).
///
/// Provides non-linearity by replacing each byte with its S-box lookup value.
/// The S-box is derived from the multiplicative inverse in GF(2^8).

View File

@ -1,3 +1,8 @@
//! Cipher factory for creating and configuring block ciphers.
//!
//! Provides a unified interface for AES and DES encryption/decryption
//! with configurable output formats.
mod algorithm;
mod context;
mod operation;

View File

@ -1,14 +1,18 @@
use std::{convert::Infallible, fmt::Display, str::FromStr};
/// Cipher operation mode - encrypt or decrypt.
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum OperationMode {
/// Transform plaintext to ciphertext.
#[default]
Encrypt,
/// Transform ciphertext to plaintext.
Decrypt,
}
impl OperationMode {
/// Returns the opposite operation mode.
#[must_use]
pub const fn invert(self) -> Self {
match self {

View File

@ -2,21 +2,25 @@ use cipher_core::Output;
use std::{convert::Infallible, fmt::Display, str::FromStr};
use strum::EnumIter;
/// Output format for displaying cipher results.
///
/// Controls how decrypted data is presented to the user.
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter)]
pub enum OutputFormat {
/// Binary output
/// Binary (base-2) representation.
Binary,
/// Octal output
/// Octal (base-8) representation.
Octal,
/// Decimal output
/// Hexadecimal (base-16) representation.
#[default]
Hex,
/// Text output (ASCII)
/// ASCII text (attempts UTF-8 decoding).
Text,
}
impl OutputFormat {
/// Formats the cipher output according to this format.
#[must_use]
pub fn format(&self, value: &Output) -> String {
match self {