Struct core_crypto::Keypair[][src]

pub struct Keypair<Kp: KeyPairSchema>(pub Kp);
Expand description

It represents an asymmetric private/public encryption key.

Implementations

impl<Kp: KeyPairSchema> Keypair<Kp>[src]

pub fn random() -> Self[src]

Generate a Keypair random.

Example

use symbol_crypto_core::prelude::{Keypair, Sym};
let keypair = Keypair::<Sym>::random();

pub fn from_bytes(bytes: &[u8]) -> Result<Self>[src]

Construct a Keypair from the bytes of a PublicKey and PrivateKey.

Inputs

  • bytes: an &[u8] representing the PublicKey and PrivateKey as bytes.

Returns

A Result whose okay value is a Keypair or whose error value is an describing the error that occurred.

pub fn from_hex_private_key<S: AsRef<str>>(hex: S) -> Result<Self>[src]

Construct a Keypair from a hex encoded private key string.

Inputs

  • hex: an S representing the hex private key (String or &str).

Example

use symbol_crypto_core::prelude::{Keypair, Sym};
let private_key_hex: &str =
"7D3E959EB0CD66CC1DB6E9C62CB81EC52747AB56FA740CF18AACB5003429AD2E";
let keypair = Keypair::<Sym>::from_hex_private_key(private_key_hex);

Returns

A Result whose okay value is an Keypair or whose error value is an failure::Error describing the error that occurred.

pub fn from_private_key(private_key: PrivateKey) -> Self[src]

Construct a Keypair PrivateKey type.

Inputs

  • private_key: representing the PrivateKey type.

Example

use symbol_crypto_core::prelude::{Keypair, PrivateKey, Sym};
let private_key_hex: &str = "7D3E959EB0CD66CC1DB6E9C62CB81EC52747AB56FA740CF18AACB5003429AD2E";
let private_key = PrivateKey::from_str(private_key_hex).unwrap();
let keypair = Keypair::<Sym>::from_private_key(private_key);

Returns

A Keypair

pub fn to_bytes(&self) -> [u8; 64][src]

Convert this keypair to bytes.

Returns

An array of bytes, [u8; KEYPAIR_LENGTH]. The first KEY_BYTES_SIZE of bytes is the PrivateKey, and the next KEY_BYTES_SIZE bytes is the PublicKey.

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

Signs a data bytes with a Keypair.

Inputs

  • data: an &[u8] representing the data to sign.

Example

use symbol_crypto_core::prelude::{Keypair, Sym};
let keypair = Keypair::<Sym>::random();
let data = b"8ce03cd60514233b86789729102ea09e867fc6d964dea8c2018ef7d0a2e0e24bf7e348e917116690b9";

let signature = keypair.sign(data.as_ref());

Returns

A Signature the signature hash.

pub fn verify(&self, data: &[u8], signature: Signature) -> Result<()>[src]

Verify a Signature on a data with this Keypair public key.

Inputs

  • data: an &[u8] the data to verify.

  • signature: an Signature the signature hash.

Returns

Returns Ok if the Signature was a valid signature created by this Keypair

pub fn private_key(&self) -> PrivateKey[src]

pub fn public_key(&self) -> PublicKey[src]

pub fn encrypt_message(
    &self,
    receiver_pk: &[u8; 32],
    msg: &[u8]
) -> Result<Vec<u8>>
[src]

Encode a message text using the signer’s PrivateKey of this Keypair and receiver’s PublicKey.

Inputs

  • receiver_pk: The receiver’s public key.

  • msg: Message to encrypt.

Example

use symbol_crypto_core::prelude::{Keypair, Sym, PublicKey};


let message = b"Symbol is awesome from Rust!";

let encrypt_text = signer_kp.encrypt_message(receiver_pk.as_fixed_bytes(), message).unwrap();

Returns

A Result whose okay value is an encrypt message Vec<u8> or whose error value is an failure::Error describing the error that occurred.

pub fn decrypt_message(
    &self,
    signer_pk: &[u8; 32],
    enc_msg: &[u8]
) -> Result<Vec<u8>>
[src]

Decrypt a message text using the receiver’s the PrivateKey of this Keypair and signer’s PublicKey.

Inputs

  • signer_pk: The signer’s public key.

  • enc_msg: Message encrypted.

Example

use symbol_crypto_core::prelude::{Keypair, Sym, PublicKey};

let receiver_kp = Keypair::<Sym>::from_hex_private_key("A22A4BBF126A2D7D7ECE823174DFD184C5DE0FDE4CB2075D30CFA409F7EF8908").unwrap();
let signer_pk = PublicKey::from_str("3FD283D8543C12B81917C154CDF4EFD3D48E553E6D7BC77E29CB168138CED17D").unwrap();

let encrypt_text_vec = [
    125, 59, 126, 248, 124, 129, 157, 100, 111, 84, 49, 163, 111, 68, 22, 137, 75, 132, 135,
    217, 251, 158, 115, 74, 226, 172, 200, 208, 33, 183, 110, 103, 107, 170, 52, 174, 192, 110,
    164, 44, 77, 69, 203, 48, 43, 17, 206, 143, 154, 155, 231, 72, 28, 24, 20, 241, 234, 202,
    184, 66,
];

let decrypted_text = receiver_kp.decrypt_message( signer_pk.as_fixed_bytes(), &encrypt_text_vec).unwrap();

Returns

A Result whose okay value is an decrypted message Vec<u8> or whose error value is an failure::Error describing the error that occurred.

Trait Implementations

impl<C: KeyPairSchema> AsRef<C> for Keypair<C>[src]

fn as_ref(&self) -> &C[src]

Performs the conversion.

impl<Kp: Clone + KeyPairSchema> Clone for Keypair<Kp>[src]

fn clone(&self) -> Keypair<Kp>[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<Kp: Debug + KeyPairSchema> Debug for Keypair<Kp>[src]

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

Formats the value using the given formatter. Read more

impl<C: KeyPairSchema> Display for Keypair<C>[src]

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

Formats the value using the given formatter. Read more

impl<Kp: Hash + KeyPairSchema> Hash for Keypair<Kp>[src]

fn hash<__H: Hasher>(&self, state: &mut __H)[src]

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl<Kp: PartialEq + KeyPairSchema> PartialEq<Keypair<Kp>> for Keypair<Kp>[src]

fn eq(&self, other: &Keypair<Kp>) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &Keypair<Kp>) -> bool[src]

This method tests for !=.

impl<Kp: Copy + KeyPairSchema> Copy for Keypair<Kp>[src]

impl<Kp: KeyPairSchema> StructuralPartialEq for Keypair<Kp>[src]

Auto Trait Implementations

impl<Kp> RefUnwindSafe for Keypair<Kp> where
    Kp: RefUnwindSafe

impl<Kp> Send for Keypair<Kp> where
    Kp: Send

impl<Kp> Sync for Keypair<Kp> where
    Kp: Sync

impl<Kp> Unpin for Keypair<Kp> where
    Kp: Unpin

impl<Kp> UnwindSafe for Keypair<Kp> where
    Kp: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToHex for T where
    T: AsRef<[u8]>, 
[src]

pub fn encode_hex<U>(&self) -> U where
    U: FromIterator<char>, 
[src]

Encode the hex strict representing self into the result. Lower case letters are used (e.g. f9b4ca) Read more

pub fn encode_hex_upper<U>(&self) -> U where
    U: FromIterator<char>, 
[src]

Encode the hex strict representing self into the result. Upper case letters are used (e.g. F9B4CA) Read more

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

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

pub fn vzip(self) -> V