pub struct PostQuantumKeypair {
pub public: Vec<u8>,
/* private fields */
}Expand description
Post-quantum cryptographic keypair
Uses CRYSTALS-Kyber-1024 for IND-CCA2 secure key encapsulation.
§Security Properties
- Public key: 1568 bytes (safe to distribute)
- Secret key: 3168 bytes (MUST be protected, auto-zeroized on drop)
- Post-quantum security: 256 bits (NIST Level 5)
§Example
ⓘ
let keypair = PostQuantumKeypair::generate();
let public_bytes = keypair.public_key();
// Send public_bytes to peerFields§
§public: Vec<u8>Public key (safe to share)
Implementations§
Source§impl PostQuantumKeypair
impl PostQuantumKeypair
Sourcepub fn public_key(&self) -> &[u8] ⓘ
pub fn public_key(&self) -> &[u8] ⓘ
Get the public key bytes
Safe to transmit over insecure channels.
Sourcepub fn encapsulate(public_key: &[u8]) -> Result<(SharedSecret, Vec<u8>)>
pub fn encapsulate(public_key: &[u8]) -> Result<(SharedSecret, Vec<u8>)>
Encapsulate: generate shared secret and ciphertext for recipient’s public key
§Arguments
public_key- Recipient’s Kyber-1024 public key (1568 bytes)
§Returns
SharedSecret- 32-byte shared secret (use for key derivation)Vec<u8>- 1568-byte ciphertext (send to recipient)
§Errors
Returns CryptoError if public key is invalid (wrong size or corrupted).
§Security
The shared secret is cryptographically strong (256-bit entropy). The ciphertext is IND-CCA2 secure against quantum adversaries.
Sourcepub fn decapsulate(&self, ciphertext: &[u8]) -> Result<SharedSecret>
pub fn decapsulate(&self, ciphertext: &[u8]) -> Result<SharedSecret>
Decapsulate: extract shared secret from ciphertext
§Arguments
ciphertext- 1568-byte Kyber-1024 ciphertext
§Returns
SharedSecret- 32-byte shared secret (same as encapsulator’s)
§Errors
Returns CryptoError if:
- Ciphertext is wrong size
- Ciphertext is invalid or corrupted
- Decapsulation fails (should never happen with valid inputs)
§Security
Timing-safe: execution time independent of secret key or ciphertext validity.
Trait Implementations§
Source§impl Clone for PostQuantumKeypair
impl Clone for PostQuantumKeypair
Source§fn clone(&self) -> PostQuantumKeypair
fn clone(&self) -> PostQuantumKeypair
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PostQuantumKeypair
impl RefUnwindSafe for PostQuantumKeypair
impl Send for PostQuantumKeypair
impl Sync for PostQuantumKeypair
impl Unpin for PostQuantumKeypair
impl UnwindSafe for PostQuantumKeypair
Blanket Implementations§
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