pub struct EncryptedKey {
pub version: u8,
pub salt: [u8; 16],
pub nonce: [u8; 12],
pub ciphertext: Vec<u8>,
}Expand description
An encrypted secret key container.
This structure holds all the data needed to decrypt a secret key:
- Version byte for format compatibility
- Salt used for key derivation
- Nonce used for encryption
- Ciphertext containing the encrypted key material and authentication tag
§Security
The salt and nonce are randomly generated for each encryption operation. The ciphertext includes a 16-byte authentication tag appended by ChaCha20-Poly1305.
Fields§
§version: u8Format version (currently always 1).
salt: [u8; 16]Random salt used for Argon2id key derivation.
nonce: [u8; 12]Random nonce used for ChaCha20-Poly1305 encryption.
ciphertext: Vec<u8>Encrypted key material with authentication tag (48 bytes: 32 + 16).
Implementations§
Source§impl EncryptedKey
impl EncryptedKey
Sourcepub fn to_bytes(&self) -> Vec<u8> ⓘ
pub fn to_bytes(&self) -> Vec<u8> ⓘ
Serialize the encrypted key to bytes.
The output is 77 bytes in the format:
version || salt || nonce || ciphertext || tag
§Example
use txgate_crypto::keys::SecretKey;
use txgate_crypto::encryption::encrypt_key;
let secret_key = SecretKey::generate();
let encrypted = encrypt_key(&secret_key, "passphrase").expect("encryption failed");
let bytes = encrypted.to_bytes();
assert_eq!(bytes.len(), 77);Sourcepub fn from_bytes(bytes: &[u8]) -> Result<Self, StoreError>
pub fn from_bytes(bytes: &[u8]) -> Result<Self, StoreError>
Deserialize an encrypted key from bytes.
§Errors
Returns StoreError::InvalidFormat if:
- The input length is not exactly 77 bytes
- The version byte is not recognized
§Example
use txgate_crypto::encryption::EncryptedKey;
// Invalid length will return an error
let result = EncryptedKey::from_bytes(&[0u8; 10]);
assert!(result.is_err());Trait Implementations§
Source§impl Clone for EncryptedKey
impl Clone for EncryptedKey
Source§fn clone(&self) -> EncryptedKey
fn clone(&self) -> EncryptedKey
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 EncryptedKey
impl RefUnwindSafe for EncryptedKey
impl Send for EncryptedKey
impl Sync for EncryptedKey
impl Unpin for EncryptedKey
impl UnwindSafe for EncryptedKey
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