|
3 | 3 | //! Provides Elliptic Curve Diffie-Hellman (ECDH) key exchange using X25519. |
4 | 4 |
|
5 | 5 | use rand::rngs::OsRng; |
6 | | -use x25519_dalek::{EphemeralSecret, PublicKey, StaticSecret}; |
7 | | -use zeroize::{Zeroize, ZeroizeOnDrop}; |
8 | 6 | use serde::{Deserialize, Serialize}; |
9 | 7 | use thiserror::Error; |
| 8 | +use x25519_dalek::{EphemeralSecret, PublicKey, StaticSecret}; |
| 9 | +use zeroize::{Zeroize, ZeroizeOnDrop}; |
10 | 10 |
|
11 | 11 | /// Key exchange errors |
12 | 12 | #[derive(Error, Debug)] |
@@ -45,7 +45,7 @@ impl X25519PublicKey { |
45 | 45 |
|
46 | 46 | /// Convert to hex string |
47 | 47 | pub fn to_hex(&self) -> String { |
48 | | - hex::encode(&self.bytes) |
| 48 | + hex::encode(self.bytes) |
49 | 49 | } |
50 | 50 |
|
51 | 51 | /// Create from hex string |
@@ -79,8 +79,8 @@ impl SharedSecret { |
79 | 79 |
|
80 | 80 | /// Derive an encryption key using HKDF |
81 | 81 | pub fn derive_key(&self, info: &[u8]) -> [u8; 32] { |
82 | | - use sha2::Sha256; |
83 | 82 | use hkdf::Hkdf; |
| 83 | + use sha2::Sha256; |
84 | 84 |
|
85 | 85 | let hk = Hkdf::<Sha256>::new(None, &self.bytes); |
86 | 86 | let mut okm = [0u8; 32]; |
@@ -164,7 +164,10 @@ impl EphemeralX25519KeyPair { |
164 | 164 | } |
165 | 165 |
|
166 | 166 | /// Perform key exchange (consumes the ephemeral secret) |
167 | | - pub fn exchange(mut self, peer_public: &X25519PublicKey) -> Result<SharedSecret, KeyExchangeError> { |
| 167 | + pub fn exchange( |
| 168 | + mut self, |
| 169 | + peer_public: &X25519PublicKey, |
| 170 | + ) -> Result<SharedSecret, KeyExchangeError> { |
168 | 171 | let secret = self.secret.take().ok_or(KeyExchangeError::ExchangeFailed)?; |
169 | 172 | let shared = secret.diffie_hellman(&peer_public.to_dalek()); |
170 | 173 | Ok(SharedSecret { |
|
0 commit comments