NodeKeypairs

Struct NodeKeypairs 

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

This is used at a network node for holding the obligatory Ed25519 keypair needed as Adult, and then a BLS keypair share when being promoted to Elder. (Also the corresponding public keys). The Ed25519 is kept as Elder, in case it is demoted.

Implementations§

Source§

impl NodeKeypairs

Source

pub fn new<T: CryptoRng + Rng>(rng: &mut T) -> Self

Constructs a NodeKeypairs with a random Ed25519 keypair and no BLS keys.

Source

pub fn within_range<T: CryptoRng + Rng>( start: &XorName, end: &XorName, rng: &mut T, ) -> Self

Constructs a NodeKeypairs whose name is in the interval [start, end] (both endpoints inclusive).

Source

pub fn public_key(&self) -> PublicKey

Returns the BLS if any, else the Ed25519.

Source

pub fn public_id(&self) -> &PublicId

Returns the public keys.

Source

pub fn public_key_set(&self) -> Option<&PublicKeySet>

Returns the BLS public key set if any.

Source

pub fn sign(&self, data: &[u8]) -> Signature

Signs with the BLS if any, else the Ed25519.

Source

pub fn sign_using_ed25519<T: AsRef<[u8]>>(&self, data: T) -> Signature

Creates a detached Ed25519 signature of data.

Source

pub fn sign_using_bls<T: AsRef<[u8]>>(&self, data: T) -> Option<Signature>

Creates a detached BLS signature share of data if the self holds a BLS keypair share.

Source

pub fn set_bls_keys( &mut self, index: usize, secret_share: BlsSecretKeyShare, public_set: PublicKeySet, )

Sets the NodeKeypairs’s BLS keypair share using the provided BLS secret key share.

Source

pub fn clear_bls_keys(&mut self)

Clears the NodeKeypairs’s BLS keypair share, i.e. sets it to None.

Trait Implementations§

Source§

impl<'de> Deserialize<'de> for NodeKeypairs

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for NodeKeypairs

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,