pub struct Keypair { /* private fields */ }
Expand description
Identity keypair of a node.
§Example: Generating RSA keys with OpenSSL
openssl genrsa -out private.pem 2048
openssl pkcs8 -in private.pem -inform PEM -topk8 -out private.pk8 -outform DER -nocrypt
rm private.pem # optional
Loading the keys:
let mut bytes = std::fs::read("private.pk8").unwrap();
let keypair = Keypair::rsa_from_pkcs8(&mut bytes);
Implementations§
Source§impl Keypair
impl Keypair
Sourcepub fn generate_ed25519() -> Keypair
pub fn generate_ed25519() -> Keypair
Generate a new Ed25519 keypair.
pub fn try_into_ed25519(self) -> Result<Keypair, OtherVariantError>
pub fn ed25519_from_bytes( bytes: impl AsMut<[u8]>, ) -> Result<Keypair, DecodingError>
Sourcepub fn sign(&self, msg: &[u8]) -> Result<Vec<u8>, SigningError>
pub fn sign(&self, msg: &[u8]) -> Result<Vec<u8>, SigningError>
Sign a message using the private key of this keypair, producing a signature that can be verified using the corresponding public key.
Sourcepub fn to_protobuf_encoding(&self) -> Result<Vec<u8>, DecodingError>
pub fn to_protobuf_encoding(&self) -> Result<Vec<u8>, DecodingError>
Encode a private key as protobuf structure.
Sourcepub fn from_protobuf_encoding(bytes: &[u8]) -> Result<Keypair, DecodingError>
pub fn from_protobuf_encoding(bytes: &[u8]) -> Result<Keypair, DecodingError>
Decode a private key from a protobuf structure and parse it as a Keypair
.
Sourcepub fn derive_secret(&self, domain: &[u8]) -> Option<[u8; 32]>
pub fn derive_secret(&self, domain: &[u8]) -> Option<[u8; 32]>
Deterministically derive a new secret from this Keypair
, taking into account the provided domain.
This works for all key types except RSA where it returns None
.
§Example
let key = identity::Keypair::generate_ed25519();
let new_key = key.derive_secret(b"my encryption key").expect("can derive secret for ed25519");
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Keypair
impl RefUnwindSafe for Keypair
impl Send for Keypair
impl Sync for Keypair
impl Unpin for Keypair
impl UnwindSafe for Keypair
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read moreSource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.