pub struct X25519Key { /* private fields */ }Expand description
X25519 key pair for ECDH encryption.
X25519 is the Diffie-Hellman function over Curve25519. It is used for key exchange and encryption, not for signing. X25519 keys are 32 bytes for both private and public keys.
§Example
use rust_bottle::keys::X25519Key;
use rand::rngs::OsRng;
let rng = &mut OsRng;
let key = X25519Key::generate(rng);
let pub_key = key.public_key_bytes();
let priv_key = key.private_key_bytes();Implementations§
Source§impl X25519Key
impl X25519Key
Sourcepub fn generate<R: RngCore>(rng: &mut R) -> Self
pub fn generate<R: RngCore>(rng: &mut R) -> Self
Generate a new X25519 key pair.
This function generates a cryptographically secure key pair using the provided random number generator.
§Arguments
rng- A random number generator
§Returns
A new X25519Key instance with a randomly generated key pair
§Example
use rust_bottle::keys::X25519Key;
use rand::rngs::OsRng;
let rng = &mut OsRng;
let key = X25519Key::generate(rng);Sourcepub fn public_key_bytes(&self) -> Vec<u8> ⓘ
pub fn public_key_bytes(&self) -> Vec<u8> ⓘ
Sourcepub fn private_key_bytes(&self) -> Vec<u8> ⓘ
pub fn private_key_bytes(&self) -> Vec<u8> ⓘ
Get the private key bytes.
X25519 private keys are 32 bytes. This is sensitive data and should be handled securely.
§Returns
Private key bytes (32 bytes)
§Security Warning
Private keys are sensitive cryptographic material. They should be stored securely and cleared from memory when no longer needed.
Sourcepub fn from_private_key_bytes(bytes: &[u8]) -> Result<Self>
pub fn from_private_key_bytes(bytes: &[u8]) -> Result<Self>
Create an X25519 key pair from private key bytes.
This function reconstructs a key pair from a previously saved private key. The public key is automatically derived from the private key.
§Arguments
bytes- Private key bytes (32 bytes)
§Returns
Ok(X25519Key)- Reconstructed key pairErr(BottleError::InvalidKeyType)- If the key format is invalid
§Example
use rust_bottle::keys::X25519Key;
use rand::rngs::OsRng;
let rng = &mut OsRng;
let original = X25519Key::generate(rng);
let priv_bytes = original.private_key_bytes();
let restored = X25519Key::from_private_key_bytes(&priv_bytes).unwrap();
assert_eq!(original.public_key_bytes(), restored.public_key_bytes());