HexString

Struct HexString 

Source
pub struct HexString(/* private fields */);
Expand description

Validated, lowercase hex string wrapper for secret data.

This struct ensures the contained string is valid hex (even length, valid chars). Provides methods for decoding back to bytes.

The string is normalized to lowercase during validation.

§Examples

let valid = HexString::new("deadbeef".to_string()).unwrap();
assert_eq!(valid.expose_secret(), "deadbeef");
let bytes = valid.into_bytes(); // Vec<u8> of [0xde, 0xad, 0xbe, 0xef]

Implementations§

Source§

impl HexString

Source

pub fn new(s: String) -> Result<Self, &'static str>

Create a new HexString from a String, validating it in-place.

The input String is consumed.

§Security Note

Invalid inputs are only securely zeroized if the zeroize feature is enabled. Without zeroize, rejected bytes may remain in memory until the String is dropped normally. Enable the zeroize feature for secure wiping of invalid inputs.

Validation rules:

  • Even length
  • Only ASCII hex digits (0-9, a-f, A-F)
  • Uppercase letters are normalized to lowercase

Zero extra allocations are performed – everything happens on the original buffer.

§Errors

Returns Err("invalid hex string") if validation fails.

§Example
use secure_gate::encoding::hex::HexString;
let valid = HexString::new("deadbeef".to_string()).unwrap();
assert_eq!(valid.expose_secret(), "deadbeef");
Source

pub fn byte_len(&self) -> usize

Number of bytes the decoded hex string represents.

Source

pub const fn len(&self) -> usize

Length of the encoded string (in characters) — delegate directly

Source

pub const fn is_empty(&self) -> bool

Whether the encoded string is empty — delegate directly

Source§

impl HexString

Source

pub fn expose_secret(&self) -> HexStringView<'_>

Source§

impl HexString

Source

pub fn into_bytes(self) -> Vec<u8>

Decode the validated hex string into raw bytes, consuming and zeroizing the wrapper.

Trait Implementations§

Source§

impl Debug for HexString

Debug implementation (always redacted).

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for HexString

Available on crate feature ct-eq only.

Constant-time equality for hex strings — prevents timing attacks when ct-eq feature is enabled.

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for HexString

Equality implementation for hex strings.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V