PublicKeys

Struct PublicKeys 

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

A container for an entity’s public cryptographic keys.

PublicKeys combines a verification key for checking digital signatures with an encapsulation key for encrypting messages, providing a complete public key package for secure communication with an entity.

This type is designed to be freely shared across networks and systems, allowing others to securely communicate with the key owner, who holds the corresponding PrivateKeys instance.

§Components

  • signing_public_key - A public key used for verifying digital signatures. Can verify signatures created by the corresponding private key, which may be Schnorr, ECDSA, Ed25519, or SSH-based.

  • encapsulation_public_key - A public key used for encrypting messages that can only be decrypted by the holder of the corresponding private key. Can be X25519 or ML-KEM based.

§Use Cases

  • Verifying the authenticity of signed messages or content
  • Encrypting data for secure transmission to the key owner
  • Identity verification in distributed systems
  • Establishing secure communication channels

§Examples

use bc_components::{EncapsulationPublicKey, keypair};

// Generate a key pair
let (private_keys, public_keys) = keypair();

// Get the encapsulation public key
let enc_pub_key = public_keys.enapsulation_public_key();

// The public key can be used for key encapsulation
// The resulting shared secret is only accessible to the
// holder of the corresponding private key

Implementations§

Source§

impl PublicKeys

Source

pub fn new( signing_public_key: SigningPublicKey, encapsulation_public_key: EncapsulationPublicKey, ) -> Self

Restores a PublicKeys from a SigningPublicKey and an EncapsulationPublicKey.

Source

pub fn signing_public_key(&self) -> &SigningPublicKey

Returns the SigningPublicKey of this PublicKeys.

Source

pub fn enapsulation_public_key(&self) -> &EncapsulationPublicKey

Returns the EncapsulationPublicKey of this PublicKeys.

Trait Implementations§

Source§

impl AsRef<EncapsulationPublicKey> for PublicKeys

Source§

fn as_ref(&self) -> &EncapsulationPublicKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<PublicKeys> for PublicKeys

Source§

fn as_ref(&self) -> &PublicKeys

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<SigningPublicKey> for PublicKeys

Source§

fn as_ref(&self) -> &SigningPublicKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl CBORTagged for PublicKeys

Source§

fn cbor_tags() -> Vec<Tag>

Returns the CBOR tags associated with this type. Read more
Source§

impl CBORTaggedDecodable for PublicKeys

Source§

fn from_untagged_cbor(untagged_cbor: CBOR) -> Result<Self>

Creates an instance of this type by decoding it from untagged CBOR. Read more
Source§

fn from_tagged_cbor(cbor: CBOR) -> Result<Self, Error>
where Self: Sized,

Creates an instance of this type by decoding it from tagged CBOR. Read more
Source§

fn from_tagged_cbor_data(data: impl AsRef<[u8]>) -> Result<Self, Error>
where Self: Sized,

Creates an instance of this type by decoding it from binary encoded tagged CBOR. Read more
Source§

fn from_untagged_cbor_data(data: impl AsRef<[u8]>) -> Result<Self, Error>
where Self: Sized,

Creates an instance of this type by decoding it from binary encoded untagged CBOR. Read more
Source§

impl CBORTaggedEncodable for PublicKeys

Source§

fn untagged_cbor(&self) -> CBOR

Returns the untagged CBOR encoding of this instance. Read more
Source§

fn tagged_cbor(&self) -> CBOR

Returns the tagged CBOR encoding of this instance. Read more
Source§

fn tagged_cbor_data(&self) -> Vec<u8>

Returns the tagged value in CBOR binary representation. Read more
Source§

impl Clone for PublicKeys

Source§

fn clone(&self) -> PublicKeys

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 PublicKeys

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Display for PublicKeys

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Encrypter for PublicKeys

Source§

fn encapsulation_public_key(&self) -> EncapsulationPublicKey

Returns the encapsulation public key for this encrypter. Read more
Source§

fn encapsulate_new_shared_secret( &self, ) -> (SymmetricKey, EncapsulationCiphertext)

Encapsulates a new shared secret for the recipient. Read more
Source§

impl From<&PublicKeys> for XID

Implements conversion from PublicKeys reference to XID via the signing public key.

Source§

fn from(key: &PublicKeys) -> Self

Converts to this type from the input type.
Source§

impl From<PublicKeys> for CBOR

Source§

fn from(value: PublicKeys) -> Self

Converts to this type from the input type.
Source§

impl Hash for PublicKeys

Source§

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

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

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

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

impl PartialEq for PublicKeys

Source§

fn eq(&self, other: &PublicKeys) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PublicKeysProvider for PublicKeys

Source§

fn public_keys(&self) -> PublicKeys

Returns a complete set of public keys for cryptographic operations. Read more
Source§

impl ReferenceProvider for PublicKeys

Source§

fn reference(&self) -> Reference

Returns a cryptographic reference that uniquely identifies this object. Read more
Source§

fn ref_hex(&self) -> String

Returns the reference data as a hexadecimal string. Read more
Source§

fn ref_data_short(&self) -> [u8; 4]

Returns the first four bytes of the reference. Read more
Source§

fn ref_hex_short(&self) -> String

Returns the first four bytes of the reference as a hexadecimal string. Read more
Source§

fn ref_bytewords(&self, prefix: Option<&str>) -> String

Returns the first four bytes of the reference as upper-case ByteWords. Read more
Source§

fn ref_bytemoji(&self, prefix: Option<&str>) -> String

Returns the first four bytes of the reference as Bytemoji. Read more
Source§

impl TryFrom<CBOR> for PublicKeys

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(cbor: CBOR) -> Result<Self>

Performs the conversion.
Source§

impl Verifier for PublicKeys

Source§

fn verify(&self, signature: &Signature, message: &dyn AsRef<[u8]>) -> bool

Verifies a signature against a message. Read more
Source§

impl Eq for PublicKeys

Source§

impl StructuralPartialEq for PublicKeys

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> CBORDecodable for T
where T: TryFrom<CBOR, Error = Error>,

Source§

fn try_from_cbor(cbor: &CBOR) -> Result<Self, Error>

Source§

impl<T> CBOREncodable for T
where T: Into<CBOR> + Clone,

Source§

fn to_cbor(&self) -> CBOR

Converts this value to a CBOR object. Read more
Source§

fn to_cbor_data(&self) -> Vec<u8>

Converts this value directly to binary CBOR data. 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.

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

impl<T> URDecodable for T

Source§

fn from_ur(ur: impl AsRef<UR>) -> Result<Self, Error>
where Self: Sized,

Source§

fn from_ur_string(ur_string: impl Into<String>) -> Result<Self, Error>
where Self: Sized,

Source§

impl<T> UREncodable for T

Source§

fn ur(&self) -> UR

Returns the UR representation of the object.
Source§

fn ur_string(&self) -> String

Returns the UR string representation of the object.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> CBORCodable for T

Source§

impl<T> CBORTaggedCodable for T

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> URCodable for T