pub struct DecodedBuffer<const CAP: usize> { /* private fields */ }Expand description
Stack-backed decoded Base64 output.
This type is intended for short decoded values where heap allocation would be unnecessary but manually sizing and passing a separate output slice is noisy. Decoded data may be binary or secret-bearing, so formatting is redacted and contents are exposed only through explicit byte accessors.
The backing array is cleared when the value is dropped. This is best-effort data-retention reduction and is not a formal zeroization guarantee.
Implementations§
Source§impl<const CAP: usize> DecodedBuffer<CAP>
impl<const CAP: usize> DecodedBuffer<CAP>
Sourcepub const fn is_full(&self) -> bool
pub const fn is_full(&self) -> bool
Returns whether the visible decoded bytes fill the stack backing array.
Sourcepub const fn remaining_capacity(&self) -> usize
pub const fn remaining_capacity(&self) -> usize
Returns the number of unused bytes in the stack backing array.
Sourcepub fn as_utf8(&self) -> Result<&str, Utf8Error>
pub fn as_utf8(&self) -> Result<&str, Utf8Error>
Returns the visible decoded bytes as UTF-8 text.
Decoded Base64 output is arbitrary bytes, so this method is fallible.
Use Self::as_bytes when the decoded payload is binary or when text
validation belongs to a higher protocol layer.
Sourcepub fn constant_time_eq(&self, other: &[u8]) -> bool
pub fn constant_time_eq(&self, other: &[u8]) -> bool
Compares this decoded output to other without short-circuiting on the
first differing byte.
Length and the final equality result remain public. For equal-length inputs, this helper scans every byte before returning. It is constant-time-oriented best effort, not a formal cryptographic constant-time guarantee.
Sourcepub fn into_exposed_array(self) -> ([u8; CAP], usize)
pub fn into_exposed_array(self) -> ([u8; CAP], usize)
Consumes the wrapper and returns the backing array plus visible length.
This is an explicit escape hatch for no-alloc interop with APIs that
require ownership of a fixed array. The returned array is no longer
redacted by formatting and will not be cleared by DecodedBuffer on
drop; callers that keep handling sensitive data should arrange their
own cleanup.
Sourcepub fn clear_tail(&mut self)
pub fn clear_tail(&mut self)
Clears bytes after the visible prefix.
Trait Implementations§
Source§impl<const CAP: usize> Clone for DecodedBuffer<CAP>
impl<const CAP: usize> Clone for DecodedBuffer<CAP>
Source§impl<const CAP: usize> Debug for DecodedBuffer<CAP>
impl<const CAP: usize> Debug for DecodedBuffer<CAP>
Source§impl<const CAP: usize> Default for DecodedBuffer<CAP>
impl<const CAP: usize> Default for DecodedBuffer<CAP>
Source§impl<const CAP: usize> Drop for DecodedBuffer<CAP>
impl<const CAP: usize> Drop for DecodedBuffer<CAP>
Source§impl<const CAP: usize> From<DecodedBuffer<CAP>> for SecretBuffer
Available on crate feature alloc only.
impl<const CAP: usize> From<DecodedBuffer<CAP>> for SecretBuffer
alloc only.Source§fn from(buffer: DecodedBuffer<CAP>) -> Self
fn from(buffer: DecodedBuffer<CAP>) -> Self
Copies visible decoded bytes from a stack-backed buffer into an owned redacted buffer.
The consumed stack-backed buffer clears its backing array when it is dropped at the end of the conversion.
Source§impl<const CAP: usize> FromStr for DecodedBuffer<CAP>
impl<const CAP: usize> FromStr for DecodedBuffer<CAP>
Source§fn from_str(input: &str) -> Result<Self, Self::Err>
fn from_str(input: &str) -> Result<Self, Self::Err>
Decodes strict standard padded Base64 text into a stack-backed buffer.
Use Engine::decode_buffer or Profile::decode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.
Source§type Err = DecodeError
type Err = DecodeError
Source§impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for &[u8]
impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for &[u8]
Source§fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize, const N: usize> PartialEq<DecodedBuffer<CAP>> for &[u8; N]
impl<const CAP: usize, const N: usize> PartialEq<DecodedBuffer<CAP>> for &[u8; N]
Source§fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for &str
impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for &str
Source§fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for String
Available on crate feature alloc only.
impl<const CAP: usize> PartialEq<DecodedBuffer<CAP>> for String
alloc only.Source§fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
fn eq(&self, other: &DecodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<String> for DecodedBuffer<CAP>
Available on crate feature alloc only.
impl<const CAP: usize> PartialEq<String> for DecodedBuffer<CAP>
alloc only.Source§impl<const CAP: usize> PartialEq for DecodedBuffer<CAP>
impl<const CAP: usize> PartialEq for DecodedBuffer<CAP>
Source§impl<const CAP: usize> TryFrom<&[u8]> for DecodedBuffer<CAP>
impl<const CAP: usize> TryFrom<&[u8]> for DecodedBuffer<CAP>
Source§fn try_from(input: &[u8]) -> Result<Self, Self::Error>
fn try_from(input: &[u8]) -> Result<Self, Self::Error>
Decodes strict standard padded Base64 into a stack-backed buffer.
Use Engine::decode_buffer or Profile::decode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.
Source§type Error = DecodeError
type Error = DecodeError
Source§impl<const CAP: usize, const N: usize> TryFrom<&[u8; N]> for DecodedBuffer<CAP>
impl<const CAP: usize, const N: usize> TryFrom<&[u8; N]> for DecodedBuffer<CAP>
Source§fn try_from(input: &[u8; N]) -> Result<Self, Self::Error>
fn try_from(input: &[u8; N]) -> Result<Self, Self::Error>
Decodes a strict standard padded Base64 byte array into a stack-backed buffer.
Use Engine::decode_buffer or Profile::decode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.
Source§type Error = DecodeError
type Error = DecodeError
Source§impl<const CAP: usize> TryFrom<&str> for DecodedBuffer<CAP>
impl<const CAP: usize> TryFrom<&str> for DecodedBuffer<CAP>
Source§fn try_from(input: &str) -> Result<Self, Self::Error>
fn try_from(input: &str) -> Result<Self, Self::Error>
Decodes strict standard padded Base64 text into a stack-backed buffer.
Use Engine::decode_buffer or Profile::decode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.