pub struct EncodedBuffer<const CAP: usize> { /* private fields */ }Expand description
Stack-backed encoded Base64 output.
This type is intended for short values where heap allocation would be
unnecessary but manually sizing and passing a separate output slice is
noisy. Its visible bytes are produced by crate encoders, so Self::as_str
can return &str without exposing a fallible UTF-8 conversion to callers.
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> EncodedBuffer<CAP>
impl<const CAP: usize> EncodedBuffer<CAP>
Sourcepub const fn is_full(&self) -> bool
pub const fn is_full(&self) -> bool
Returns whether the visible encoded 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 encoded bytes as UTF-8 text.
Encoded Base64 output is produced as ASCII by this crate, so this
method should not fail unless an internal invariant has been broken.
It is provided for callers that prefer a fallible accessor over
Self::as_str.
Sourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns the visible encoded bytes as UTF-8.
§Panics
Panics only if the crate’s internal invariant is broken and the buffer contains non-UTF-8 bytes.
Sourcepub fn constant_time_eq(&self, other: &[u8]) -> bool
pub fn constant_time_eq(&self, other: &[u8]) -> bool
Compares this encoded 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 EncodedBuffer 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 EncodedBuffer<CAP>
impl<const CAP: usize> Clone for EncodedBuffer<CAP>
Source§impl<const CAP: usize> Debug for EncodedBuffer<CAP>
impl<const CAP: usize> Debug for EncodedBuffer<CAP>
Source§impl<const CAP: usize> Default for EncodedBuffer<CAP>
impl<const CAP: usize> Default for EncodedBuffer<CAP>
Source§impl<const CAP: usize> Display for EncodedBuffer<CAP>
impl<const CAP: usize> Display for EncodedBuffer<CAP>
Source§impl<const CAP: usize> Drop for EncodedBuffer<CAP>
impl<const CAP: usize> Drop for EncodedBuffer<CAP>
Source§impl<const CAP: usize> From<EncodedBuffer<CAP>> for SecretBuffer
Available on crate feature alloc only.
impl<const CAP: usize> From<EncodedBuffer<CAP>> for SecretBuffer
alloc only.Source§fn from(buffer: EncodedBuffer<CAP>) -> Self
fn from(buffer: EncodedBuffer<CAP>) -> Self
Copies visible encoded 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> PartialEq<EncodedBuffer<CAP>> for &[u8]
impl<const CAP: usize> PartialEq<EncodedBuffer<CAP>> for &[u8]
Source§fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize, const N: usize> PartialEq<EncodedBuffer<CAP>> for &[u8; N]
impl<const CAP: usize, const N: usize> PartialEq<EncodedBuffer<CAP>> for &[u8; N]
Source§fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<EncodedBuffer<CAP>> for &str
impl<const CAP: usize> PartialEq<EncodedBuffer<CAP>> for &str
Source§fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<EncodedBuffer<CAP>> for String
Available on crate feature alloc only.
impl<const CAP: usize> PartialEq<EncodedBuffer<CAP>> for String
alloc only.Source§fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
fn eq(&self, other: &EncodedBuffer<CAP>) -> bool
self and other values to be equal, and is used by ==.Source§impl<const CAP: usize> PartialEq<String> for EncodedBuffer<CAP>
Available on crate feature alloc only.
impl<const CAP: usize> PartialEq<String> for EncodedBuffer<CAP>
alloc only.Source§impl<const CAP: usize> PartialEq for EncodedBuffer<CAP>
impl<const CAP: usize> PartialEq for EncodedBuffer<CAP>
Source§impl<const CAP: usize> TryFrom<&[u8]> for EncodedBuffer<CAP>
impl<const CAP: usize> TryFrom<&[u8]> for EncodedBuffer<CAP>
Source§fn try_from(input: &[u8]) -> Result<Self, Self::Error>
fn try_from(input: &[u8]) -> Result<Self, Self::Error>
Encodes bytes into strict standard padded Base64 in a stack-backed buffer.
Use Engine::encode_buffer or Profile::encode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.
Source§type Error = EncodeError
type Error = EncodeError
Source§impl<const CAP: usize, const N: usize> TryFrom<&[u8; N]> for EncodedBuffer<CAP>
impl<const CAP: usize, const N: usize> TryFrom<&[u8; N]> for EncodedBuffer<CAP>
Source§fn try_from(input: &[u8; N]) -> Result<Self, Self::Error>
fn try_from(input: &[u8; N]) -> Result<Self, Self::Error>
Encodes a byte array into strict standard padded Base64 in a stack-backed buffer.
Use Engine::encode_buffer or Profile::encode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.
Source§type Error = EncodeError
type Error = EncodeError
Source§impl<const CAP: usize> TryFrom<&str> for EncodedBuffer<CAP>
impl<const CAP: usize> TryFrom<&str> for EncodedBuffer<CAP>
Source§fn try_from(input: &str) -> Result<Self, Self::Error>
fn try_from(input: &str) -> Result<Self, Self::Error>
Encodes UTF-8 text bytes into strict standard padded Base64 in a stack-backed buffer.
This treats the string as raw input bytes. Use
Engine::encode_buffer or Profile::encode_buffer when a
different alphabet, padding mode, or line-wrapping profile is required.