SafeBag

Struct SafeBag 

Source
pub struct SafeBag {
    pub certificate: Bytes,
    pub encrypted_key: Bytes,
}
Expand description

A decoded SafeBag — the certificate Data wire bytes and the password-encrypted PKCS#8 private key DER.

Fields§

§certificate: Bytes

Full wire-encoded certificate Data packet (TLV starting at type 0x06). Opaque to SafeBag itself; the caller hands this to the PIB or a Data decoder.

§encrypted_key: Bytes

EncryptedPrivateKeyInfo DER per RFC 5958 / PKCS#8. Use SafeBag::decrypt_key with the export password to recover the unencrypted PKCS#8 PrivateKeyInfo.

Implementations§

Source§

impl SafeBag

Source

pub fn encode(&self) -> Bytes

Encode the SafeBag to its TLV wire form. Output starts with 0x80 and is suitable for writing to a file or passing to ndnsec import.

Source

pub fn decode(wire: &[u8]) -> Result<Self, SafeBagError>

Decode a SafeBag from its TLV wire form. Tolerates trailing bytes after the outer SafeBag TLV (per the TLV spec, anything after the encoded length is the next packet).

Source

pub fn encrypt( certificate: Bytes, pkcs8_pki_der: &[u8], password: &[u8], ) -> Result<Self, SafeBagError>

Build a SafeBag by encrypting an unencrypted PKCS#8 PrivateKeyInfo DER with password. Uses the rustcrypto pkcs8 crate’s default PBES2 parameters: PBKDF2-HMAC-SHA256 with a random 16-byte salt and AES-256-CBC with a random IV. These match the OpenSSL PKCS8_encrypt defaults that ndn-cxx produces.

Source

pub fn decrypt_key(&self, password: &[u8]) -> Result<Vec<u8>, SafeBagError>

Decrypt the SafeBag’s encrypted private key with password, returning the unencrypted PKCS#8 PrivateKeyInfo DER. The caller dispatches on the embedded algorithm OID.

Trait Implementations§

Source§

impl Clone for SafeBag

Source§

fn clone(&self) -> SafeBag

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SafeBag

Source§

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

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V