Struct ZeroKMS
pub struct ZeroKMS<C, ClientKeyState = ()>where
ClientKeyState: Zeroize,{ /* private fields */ }Implementations§
§impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C>
impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C>
pub fn new(
base_url: &Url,
credentials: C,
decryption_log_path: Option<&Path>,
) -> Self
pub fn new( base_url: &Url, credentials: C, decryption_log_path: Option<&Path>, ) -> Self
Create a new instance of the ZeroKMS client.
In most cases it is prefered to use crate::config::ZeroKMSConfig::create_client instead of calling
this manually.
pub fn new_with_client_key(
base_url: &Url,
credentials: C,
decryption_log_path: Option<&Path>,
client_key: ClientKey,
) -> ZeroKMSWithClientKey<C>
pub fn new_with_client_key( base_url: &Url, credentials: C, decryption_log_path: Option<&Path>, client_key: ClientKey, ) -> ZeroKMSWithClientKey<C>
Create a new instance of the ZeroKMS client with a ClientKey.
In most cases it is prefered to use crate::config::ZeroKMSConfigWithClientKey::create_client instead of calling
this manually.
§impl<C: Credentials<Token = ServiceToken>, K> ZeroKMS<C, K>where
K: Zeroize,
impl<C: Credentials<Token = ServiceToken>, K> ZeroKMS<C, K>where
K: Zeroize,
pub fn log_decryptions<P>(&self, records: &[P], access_token: &str)where
P: Decryptable,
pub async fn create_dataset(
&self,
name: &str,
description: &str,
) -> Result<Keyset, Error>
👎Deprecated since 0.26.0: replaced by create_keyset
pub async fn create_dataset( &self, name: &str, description: &str, ) -> Result<Keyset, Error>
Create a Keyset (previously known as a Keyset) in ZeroKMS used to encrypt data.
The name and description are used to identify the keyset.
pub async fn create_keyset(
&self,
name: &str,
description: &str,
) -> Result<Keyset, Error>
pub async fn create_keyset( &self, name: &str, description: &str, ) -> Result<Keyset, Error>
Create a Keyset in ZeroKMS used to encrypt data. The name and description are used to identify the keyset.
pub async fn grant_dataset(
&self,
client_id: Uuid,
keyset_id: Uuid,
) -> Result<(), Error>
👎Deprecated since 0.26.0: replaced by grant_keyset
pub async fn grant_dataset( &self, client_id: Uuid, keyset_id: Uuid, ) -> Result<(), Error>
Grant a client with the given client_id access to a Keyset with an ID of keyset_id.
For this to work, the client must already exist and have access to at least one dayaset.
If you are creating a new client, use Self::create_client instead.
Note that the client and keyset must be in the same workspace.
pub async fn grant_keyset(
&self,
client_id: Uuid,
keyset_id: Uuid,
) -> Result<(), Error>
pub async fn grant_keyset( &self, client_id: Uuid, keyset_id: Uuid, ) -> Result<(), Error>
Grant a client with the given client_id access to a Keyset with an ID of keyset_id.
For this to work, the client must already exist and have access to at least one dayaset.
If you are creating a new client, use Self::create_client instead.
Note that the client and keyset must be in the same workspace.
pub async fn revoke_dataset(
&self,
client_id: Uuid,
keyset_id: Uuid,
) -> Result<(), Error>
👎Deprecated since 0.26.0: replaced by revoke_keyset
pub async fn revoke_dataset( &self, client_id: Uuid, keyset_id: Uuid, ) -> Result<(), Error>
Revoke a Client with the given client_id access to the Keyset with keyset_id.
If the client only has access to one keyset, this is the same as deleting the client.
pub async fn revoke_keyset(
&self,
client_id: Uuid,
keyset_id: Uuid,
) -> Result<(), Error>
pub async fn revoke_keyset( &self, client_id: Uuid, keyset_id: Uuid, ) -> Result<(), Error>
Revoke a Client with the given client_id access to the Keyset with keyset_id.
If the client only has access to one keyset, this is the same as deleting the client.
pub async fn list_datasets(
&self,
include_disabled: bool,
) -> Result<Vec<Keyset>, Error>
👎Deprecated since 0.26.0: replaced by list_datasets
pub async fn list_datasets( &self, include_disabled: bool, ) -> Result<Vec<Keyset>, Error>
List all Keysets in ZeroKMS for the current workspace.
pub async fn list_keysets(
&self,
include_disabled: bool,
) -> Result<Vec<Keyset>, Error>
pub async fn list_keysets( &self, include_disabled: bool, ) -> Result<Vec<Keyset>, Error>
List all Keysets in ZeroKMS for the current workspace.
pub async fn enable_dataset(&self, keyset_id: Uuid) -> Result<(), Error>
👎Deprecated since 0.26.0: replaced by enable_keyset
pub async fn enable_dataset(&self, keyset_id: Uuid) -> Result<(), Error>
Enable a Keyset by ID if it has been disabled.
pub async fn enable_keyset(&self, keyset_id: Uuid) -> Result<(), Error>
pub async fn enable_keyset(&self, keyset_id: Uuid) -> Result<(), Error>
Enable a Keyset by ID if it has been disabled.
pub async fn disable_dataset(&self, keyset_id: Uuid) -> Result<(), Error>
👎Deprecated since 0.26.0: replaced by disable_keyset
pub async fn disable_dataset(&self, keyset_id: Uuid) -> Result<(), Error>
Disable a Keyset by ID.
A disabled keyset will deny all attempts to encrypt and decrypt data.
pub async fn disable_keyset(&self, keyset_id: Uuid) -> Result<(), Error>
pub async fn disable_keyset(&self, keyset_id: Uuid) -> Result<(), Error>
Disable a Keyset by ID.
A disabled keyset will deny all attempts to encrypt and decrypt data.
pub async fn modify_dataset(
&self,
keyset_id: Uuid,
name: Option<&str>,
description: Option<&str>,
) -> Result<(), Error>
👎Deprecated since 0.26.0: replaced by modify_keyset
pub async fn modify_dataset( &self, keyset_id: Uuid, name: Option<&str>, description: Option<&str>, ) -> Result<(), Error>
Modify a Keyset by ID by setting a new name or description.
pub async fn modify_keyset(
&self,
keyset_id: Uuid,
name: Option<&str>,
description: Option<&str>,
) -> Result<(), Error>
pub async fn modify_keyset( &self, keyset_id: Uuid, name: Option<&str>, description: Option<&str>, ) -> Result<(), Error>
Modify a Keyset by ID by setting a new name or description.
pub async fn create_client(
&self,
name: &str,
description: &str,
keyset_id: Uuid,
) -> Result<CreateClientResponse, Error>
pub async fn create_client( &self, name: &str, description: &str, keyset_id: Uuid, ) -> Result<CreateClientResponse, Error>
Create a new client for the specified keyset.
Clients are required to generate and retrieve keysets key a specified keyset. Use the
ClientKey returned by CreateClientResponse to create a ZeroKMSWithClientKey client that can
encrypt and decrypt.
This ClientKey can not be retrieved again after creating the client. So it’s important
to keep it somewhere safe.
§ClientKey compromise
If you suspect that a ClientKey has been compromised, you should revoke the client and create a new one.
See Self::delete_client for more information.
§Create vs Grant
If you are creating a new client, use this method. If you are granting access to an existing client,
use Self::grant_keyset instead.
pub async fn list_clients(&self) -> Result<Vec<KeysetClient>, Error>
pub async fn list_clients(&self) -> Result<Vec<KeysetClient>, Error>
List clients for the current workspace in ZeroKMS.
pub async fn delete_client(
&self,
client_id: Uuid,
) -> Result<DeleteClientResponse, Error>
pub async fn delete_client( &self, client_id: Uuid, ) -> Result<DeleteClientResponse, Error>
Delete client by ID.
Once a client is deleted it can’t be used to generate or retrieve data keys.
This method nullifies the ClientKey for the client.
Even if an attacker has the ClientKey, they can’t use it to decrypt data.
To revoke access only to a specific keyset, use Self::revoke_keyset instead.
§impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C, ClientKey>
impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C, ClientKey>
pub async fn encrypt(
&self,
payloads: impl IntoIterator<Item = EncryptPayload<'_>>,
keyset_id: Option<Uuid>,
) -> Result<Vec<EncryptedRecord>, Error>
pub async fn encrypt( &self, payloads: impl IntoIterator<Item = EncryptPayload<'_>>, keyset_id: Option<Uuid>, ) -> Result<Vec<EncryptedRecord>, Error>
Encrypt a stream of EncryptPayload and return them as an EncryptedRecord.
Note that this only works when Self is a ZeroKMSWithClientKey client.
pub async fn encrypt_single(
&self,
payload: EncryptPayload<'_>,
keyset_id: Option<Uuid>,
) -> Result<EncryptedRecord, Error>
pub async fn encrypt_single( &self, payload: EncryptPayload<'_>, keyset_id: Option<Uuid>, ) -> Result<EncryptedRecord, Error>
Encrypt a single EncryptPayload.
Note that this only works when Self is a ZeroKMSWithClientKey client.
pub async fn decrypt<P>(
&self,
payloads: impl IntoIterator<Item = P>,
keyset_id: Option<Uuid>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<Vec<u8>>, Error>where
P: Decryptable,
pub async fn decrypt<P>(
&self,
payloads: impl IntoIterator<Item = P>,
keyset_id: Option<Uuid>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<Vec<u8>>, Error>where
P: Decryptable,
Decrypt a stream of EncryptedRecord and return the raw decrypted binary blob.
Note that this only works when Self is a ZeroKMSWithClientKey client.
This function will decrypt records from any keyset that the client has access to.
pub async fn decrypt_fallible<P>(
&self,
payloads: impl IntoIterator<Item = P>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<Result<Vec<u8>, RecordDecryptError>>, Error>where
P: Decryptable,
pub async fn decrypt_fallible<P>(
&self,
payloads: impl IntoIterator<Item = P>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<Result<Vec<u8>, RecordDecryptError>>, Error>where
P: Decryptable,
Decrypt a stream of EncryptedRecord and return the raw decrypted binary blob.
Note that this only works when Self is a ZeroKMSWithClientKey client.
This function will decrypt records from any keyset that the client has access to.
pub async fn decrypt_single<P>(
&self,
payload: P,
keyset_id: Option<Uuid>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<u8>, Error>where
P: Decryptable,
pub async fn decrypt_single<P>(
&self,
payload: P,
keyset_id: Option<Uuid>,
service_token: Option<ServiceToken>,
unverified_context: Option<UnverifiedContext>,
) -> Result<Vec<u8>, Error>where
P: Decryptable,
Decrypt a single EncryptedRecord.
Note that this only works when Self is a ZeroKMSWithClientKey client.
Trait Implementations§
Auto Trait Implementations§
impl<C, ClientKeyState = ()> !Freeze for ZeroKMS<C, ClientKeyState>
impl<C, ClientKeyState = ()> !RefUnwindSafe for ZeroKMS<C, ClientKeyState>
impl<C, ClientKeyState> Send for ZeroKMS<C, ClientKeyState>
impl<C, ClientKeyState> Sync for ZeroKMS<C, ClientKeyState>
impl<C, ClientKeyState> Unpin for ZeroKMS<C, ClientKeyState>
impl<C, ClientKeyState = ()> !UnwindSafe for ZeroKMS<C, ClientKeyState>
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
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 moreSource§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
self to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
&self to an expression for Diesel’s query builder. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more