soft-aes 0.2.2

A Rust-based software library for AES.
Documentation
use crate::padding::*;

#[test]
fn test_pad_80() {
    let mut data = vec![0x01, 0x02, 0x03];
    let block_size = 8;
    pad_80(&mut data, block_size).unwrap();
    assert_eq!(data, vec![0x01, 0x02, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00]);
}

#[test]
fn test_pad_80_for_empty_vector() {
    let mut data = vec![];
    let block_size = 4;
    pad_80(&mut data, block_size).unwrap();
    assert_eq!(data, vec![0x80, 0x00, 0x00, 0x00]);
}

#[test]
fn test_pad_80_for_exact_multiple_length() {
    let mut data = vec![0x01, 0x02, 0x03, 0x04];
    let block_size = 4;
    pad_80(&mut data, block_size).unwrap();
    assert_eq!(data, vec![0x01, 0x02, 0x03, 0x04, 0x80, 0x00, 0x00, 0x00]);
}

#[test]
fn test_pad_80_invalid_block_size_zero() {
    let mut data = vec![0x01, 0x02, 0x03];
    let block_size = 0;
    assert!(pad_80(&mut data, block_size).is_err());
}

#[test]
fn test_unpad_80_valid_padding() {
    let mut data = vec![0x01, 0x02, 0x03, 0x04, 0x80, 0x00, 0x00, 0x00];
    unpad_80(&mut data).unwrap();
    assert_eq!(data, vec![0x01, 0x02, 0x03, 0x04]);
}

#[test]
fn test_unpad_80_no_padding() {
    let mut data = vec![0x01, 0x02, 0x03, 0x04];
    let result = unpad_80(&mut data);
    assert!(result.is_err());
}

#[test]
fn test_unpad_80_inconsistent_padding() {
    let mut data = vec![0x01, 0x02, 0x03, 0x04, 0x80, 0x01, 0x00, 0x00];
    let result = unpad_80(&mut data);
    assert!(result.is_err());
}

#[test]
fn test_unpad_80_empty_data() {
    let mut data = Vec::new();
    let result = unpad_80(&mut data);
    assert!(result.is_err());
}