//! The AES encryption algorithm.

use le_stream::{FromLeStream, ToLeStream};

/// The hash context for an ongoing hash operation.
#[derive(Clone, Debug, Eq, PartialEq, FromLeStream, ToLeStream)]
pub struct MmoHashContext {
    result: [u8; 16],
    length: u32,
}

impl MmoHashContext {
    /// Create a new hash context.
    #[must_use]
    pub const fn new(result: [u8; 16], length: u32) -> Self {
        Self { result, length }
    }

    /// Return the result of ongoing the hash operation.
    #[must_use]
    pub const fn result(&self) -> &[u8; 16] {
        &self.result
    }

    /// Return the total length of the data that has been hashed so far.
    #[must_use]
    pub const fn length(&self) -> u32 {
        self.length
    }
}
