pub struct Crypt { /* private fields */ }Expand description
The application’s keys: the current one writes, every one reads.
Implementations§
Source§impl Crypt
impl Crypt
Sourcepub fn new(current: MasterKey, previous: Vec<MasterKey>) -> Self
pub fn new(current: MasterKey, previous: Vec<MasterKey>) -> Self
A crypt over current and the keys still readable.
Sourcepub fn ephemeral() -> Self
pub fn ephemeral() -> Self
A crypt for one process: a random key nobody else holds, for tests and for a development run with nothing configured.
Sourcepub fn from_config(key: &str, previous: &[String]) -> Result<Self, CryptError>
pub fn from_config(key: &str, previous: &[String]) -> Result<Self, CryptError>
The configured keys: key as id:<base64> and previous likewise.
Sourcepub fn current_id(&self) -> u8
pub fn current_id(&self) -> u8
The id the next write uses.
Sourcepub fn key_id_of(&self, sealed: &str) -> Option<u8>
pub fn key_id_of(&self, sealed: &str) -> Option<u8>
The id of the key a sealed value or signature was written under, when it is well-formed.
Sourcepub fn encrypt(
&self,
purpose: &str,
aad: &[u8],
plain: &[u8],
) -> Result<String, CryptError>
pub fn encrypt( &self, purpose: &str, aad: &[u8], plain: &[u8], ) -> Result<String, CryptError>
Seals plain for purpose, bound to aad (a table, column and row,
or whatever must match on open). Base64url text.
Sourcepub fn decrypt(
&self,
purpose: &str,
aad: &[u8],
sealed: &str,
) -> Result<Vec<u8>, CryptError>
pub fn decrypt( &self, purpose: &str, aad: &[u8], sealed: &str, ) -> Result<Vec<u8>, CryptError>
Opens a value encrypt sealed under any key the crypt
holds, for the same purpose and AAD.
Sourcepub fn sign(&self, purpose: &str, message: &[u8]) -> String
pub fn sign(&self, purpose: &str, message: &[u8]) -> String
Signs message for purpose. Base64url text of the version, key id
and tag.
Sourcepub fn verify(&self, purpose: &str, message: &[u8], signature: &str) -> bool
pub fn verify(&self, purpose: &str, message: &[u8], signature: &str) -> bool
Whether signature is sign of message under any key
the crypt holds, compared in constant time.
Sourcepub fn token(&self, purpose: &str, payload: &[u8], ttl: Duration) -> String
pub fn token(&self, purpose: &str, payload: &[u8], ttl: Duration) -> String
A signed token carrying payload and an expiry ttl from now.
Sourcepub fn check_token(
&self,
purpose: &str,
token: &str,
) -> Result<Vec<u8>, CryptError>
pub fn check_token( &self, purpose: &str, token: &str, ) -> Result<Vec<u8>, CryptError>
The payload of a live token minted by token for the
same purpose.
Sourcepub fn blind_index(&self, purpose: &str, plain: &[u8]) -> String
pub fn blind_index(&self, purpose: &str, plain: &[u8]) -> String
A keyed digest of plain for looking a sealed value up by equality
(a blind index), under its own subkey. Base64url text.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Crypt
impl RefUnwindSafe for Crypt
impl Send for Crypt
impl Sync for Crypt
impl Unpin for Crypt
impl UnsafeUnpin for Crypt
impl UnwindSafe for Crypt
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more