pub struct Identity { /* private fields */ }Implementations§
Source§impl Identity
impl Identity
pub fn new(rng: &mut dyn Rng) -> Self
Sourcepub fn new_stamped(rng: &mut dyn Rng, value: StampCost) -> Self
pub fn new_stamped(rng: &mut dyn Rng, value: StampCost) -> Self
Create an identity whose X25519 public key carries a stamp of at least
value over the Ed25519 public key, mirroring upstream
Identity(value=n).
Sourcepub fn get_value(&self) -> Option<StampValue>
pub fn get_value(&self) -> Option<StampValue>
Stamp value carried by this identity’s public key, if available.
Sourcepub fn from_private_key(prv_bytes: &[u8; 64]) -> Self
pub fn from_private_key(prv_bytes: &[u8; 64]) -> Self
Load a complete private identity from its fixed-width key material.
Valid input is represented by the 64-byte type itself, so successful
construction returns Self directly instead of a fall-through status.
Sourcepub fn from_public_key(pub_bytes: &[u8; 64]) -> Result<Self, CryptoError>
pub fn from_public_key(pub_bytes: &[u8; 64]) -> Result<Self, CryptoError>
Load a public-only identity from fixed-width public key material.
Any 32 bytes form a valid X25519 public key, but the Ed25519 half must
decode to a valid curve point; otherwise this returns
CryptoError::InvalidPublicKey.
pub fn get_private_key(&self) -> Option<[u8; 64]>
pub fn get_public_key(&self) -> Option<[u8; 64]>
pub fn hash(&self) -> &[u8; 16]
pub fn encrypt( &self, plaintext: &[u8], rng: &mut dyn Rng, ) -> Result<Vec<u8>, CryptoError>
pub fn encrypt_with_ratchet( &self, plaintext: &[u8], ratchet: Option<&[u8; 32]>, rng: &mut dyn Rng, ) -> Result<Vec<u8>, CryptoError>
Sourcepub fn encrypt_for_public_key(
public: &[u8; 64],
plaintext: &[u8],
ratchet: Option<&[u8; 32]>,
rng: &mut dyn Rng,
) -> Result<Vec<u8>, CryptoError>
pub fn encrypt_for_public_key( public: &[u8; 64], plaintext: &[u8], ratchet: Option<&[u8; 32]>, rng: &mut dyn Rng, ) -> Result<Vec<u8>, CryptoError>
encrypt_with_ratchet for the identity
whose 64-byte public key is public, without building the identity:
encrypting needs only the X25519 half and the identity hash, so the
Ed25519 half is not decompressed.
Sourcepub fn encrypt_deterministic(
&self,
plaintext: &[u8],
ephemeral_prv: &[u8; 32],
iv: &[u8; 16],
) -> Result<Vec<u8>, CryptoError>
pub fn encrypt_deterministic( &self, plaintext: &[u8], ephemeral_prv: &[u8; 32], iv: &[u8; 16], ) -> Result<Vec<u8>, CryptoError>
Encrypt with a specific ephemeral key and IV for deterministic testing
pub fn decrypt(&self, ciphertext_token: &[u8]) -> Result<Vec<u8>, CryptoError>
Sourcepub fn decrypt_with_ratchets(
&self,
ciphertext: &[u8],
ratchets: &RatchetRing,
enforce: bool,
) -> Result<Decrypted, CryptoError>
pub fn decrypt_with_ratchets( &self, ciphertext: &[u8], ratchets: &RatchetRing, enforce: bool, ) -> Result<Decrypted, CryptoError>
Try newest-first destination keys, optionally forbidding identity-key fallback. The identity hash remains the HKDF salt, including for ratchet encryption.
Sourcepub fn signing_key(&self) -> Option<&Ed25519PrivateKey>
pub fn signing_key(&self) -> Option<&Ed25519PrivateKey>
The Ed25519 key this identity signs with, when it has its private keys.