mirror of
https://github.com/kristoferssolo/cipher-workshop.git
synced 2025-12-31 13:52:29 +00:00
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:
parent
dd07a1d29b
commit
220baa09ad
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user