DerivedPrivateKey

Struct DerivedPrivateKey 

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

A private key derived via the IC’s derivation mechanism

Due to oddities in Ed25519’s secret key format, a derived private key cannot be treated the same way as an ordinary private key. In particular, it cannot be serialized.

Implementations§

Source§

impl DerivedPrivateKey

Source

pub fn sign_message(&self, msg: &[u8]) -> [u8; 64]

Sign a message and return a signature

This is the non-prehashed variant of Ed25519

Source

pub fn public_key(&self) -> PublicKey

Return the public key associated with this private key

Source

pub fn derive_subkey( &self, derivation_path: &DerivationPath, ) -> (DerivedPrivateKey, [u8; 32])

Derive a private key from this private key using a derivation path

This is the same derivation system used by the Internet Computer when deriving subkeys for threshold Ed25519

Note that this function returns a DerivedPrivateKey rather than Self, and that DerivedPrivateKey can sign messages but cannot be serialized. This is due to the definition of Ed25519 private keys, which is incompatible with additive derivation.

Source

pub fn derive_subkey_with_chain_code( &self, derivation_path: &DerivationPath, chain_code: &[u8; 32], ) -> (DerivedPrivateKey, [u8; 32])

Derive a private key from this private key using a derivation path and chain code

This is the same derivation system used by the Internet Computer when deriving subkeys for threshold Ed25519

Note that this function returns a DerivedPrivateKey rather than Self, and that DerivedPrivateKey can sign messages but cannot be serialized. This is due to the definition of Ed25519 private keys, which is incompatible with additive derivation.

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> 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.
Source§

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

Source§

fn vzip(self) -> V