ZeroizingKeypair

Struct ZeroizingKeypair 

Source
pub struct ZeroizingKeypair { /* private fields */ }
Expand description

Zeroize-on-drop wrapper for snow::Keypair.

snow::Keypair has no Drop impl, so the private key persists in freed memory if not explicitly zeroized. This wrapper guarantees zeroization on drop, including during panics (unwind calls Drop).

All code that constructs or receives a snow::Keypair should use this wrapper instead. The private key is accessible via private() for passing to snow::Builder::local_private_key().

Implementations§

Source§

impl ZeroizingKeypair

Source

pub fn new(keypair: Keypair) -> Self

Wrap a snow::Keypair, taking ownership.

Source

pub fn public(&self) -> &[u8]

Access the public key (32 bytes).

Source

pub fn private(&self) -> &[u8]

Access the private key (32 bytes). Use only for snow::Builder calls.

Source

pub fn as_inner(&self) -> &Keypair

Borrow the inner snow::Keypair for APIs that require &snow::Keypair.

Source

pub fn into_inner(self) -> Keypair

Consume the wrapper and return the inner snow::Keypair.

The caller takes responsibility for zeroizing the private key. Use only when transferring ownership to an API that requires snow::Keypair (e.g., BusServer::bind).

Trait Implementations§

Source§

impl Drop for ZeroizingKeypair

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<Keypair> for ZeroizingKeypair

Source§

fn from(keypair: Keypair) -> Self

Converts to this type from the input type.

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more