Struct ZeroKMS
pub struct ZeroKMS<C: Credentials<Token = ServiceToken>, ClientKeyState = ()> { /* 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>
impl<C: Credentials<Token = ServiceToken>, K> ZeroKMS<C, K>
pub fn log_decryptions(&self, records: &[EncryptedRecord], access_token: &str)
pub async fn create_dataset(
&self,
name: &str,
description: &str,
) -> Result<Dataset, Error>
pub async fn create_dataset( &self, name: &str, description: &str, ) -> Result<Dataset, Error>
Create a Dataset in ZeroKMS used to encrypt data. The name and description are used to identify the dataset.
pub async fn grant_dataset(
&self,
client_id: Uuid,
dataset_id: Uuid,
) -> Result<(), Error>
pub async fn grant_dataset( &self, client_id: Uuid, dataset_id: Uuid, ) -> Result<(), Error>
Grant a client with the given client_id access to a Dataset with an ID of dataset_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 dataset must be in the same workspace.
pub async fn revoke_dataset(
&self,
client_id: Uuid,
dataset_id: Uuid,
) -> Result<(), Error>
pub async fn revoke_dataset( &self, client_id: Uuid, dataset_id: Uuid, ) -> Result<(), Error>
Revoke a Client with the given client_id access to the Dataset with dataset_id.
If the client only has access to one dataset, this is the same as deleting the client.
pub async fn list_datasets(&self) -> Result<Vec<Dataset>, Error>
pub async fn list_datasets(&self) -> Result<Vec<Dataset>, Error>
List all Datasets in ZeroKMS for the current workspace.
pub async fn enable_dataset(&self, dataset_id: Uuid) -> Result<(), Error>
pub async fn enable_dataset(&self, dataset_id: Uuid) -> Result<(), Error>
Enable a Dataset by ID if it has been disabled.
pub async fn disable_dataset(&self, dataset_id: Uuid) -> Result<(), Error>
pub async fn disable_dataset(&self, dataset_id: Uuid) -> Result<(), Error>
Disable a Dataset by ID.
A disabled dataset will deny all attempts to encrypt and decrypt data.
pub async fn modify_dataset(
&self,
dataset_id: Uuid,
name: Option<&str>,
description: Option<&str>,
) -> Result<(), Error>
pub async fn modify_dataset( &self, dataset_id: Uuid, name: Option<&str>, description: Option<&str>, ) -> Result<(), Error>
Modify a Dataset by ID by setting a new name or description.
pub async fn create_client(
&self,
name: &str,
description: &str,
dataset_id: Uuid,
) -> Result<CreateClientResponse, Error>
pub async fn create_client( &self, name: &str, description: &str, dataset_id: Uuid, ) -> Result<CreateClientResponse, Error>
Create a new client for the specified dataset.
Clients are required to generate and retrieve datasets key a specified dataset. 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::revoke_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_dataset instead.
pub async fn list_clients(&self) -> Result<Vec<DatasetClient>, Error>
pub async fn list_clients(&self) -> Result<Vec<DatasetClient>, Error>
List clients for the current workspace in ZeroKMS.
pub async fn revoke_client(
&self,
client_id: Uuid,
) -> Result<RevokeClientResponse, Error>
pub async fn revoke_client( &self, client_id: Uuid, ) -> Result<RevokeClientResponse, Error>
§impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C, ClientKey>
impl<C: Credentials<Token = ServiceToken>> ZeroKMS<C, ClientKey>
pub async fn save_dataset_config(
&self,
config: DatasetConfig,
) -> Result<DatasetConfigWithIndexRootKey, Error>
pub async fn save_dataset_config( &self, config: DatasetConfig, ) -> Result<DatasetConfigWithIndexRootKey, Error>
Save a configuration file to the current dataset.
The DatasetConfig is used by Proxy to store index and column encryption configuration.
pub async fn load_dataset_config(
&self,
) -> Result<DatasetConfigWithIndexRootKey, Error>
pub async fn load_dataset_config( &self, ) -> Result<DatasetConfigWithIndexRootKey, Error>
Retrieve the DatasetConfig for the current dataset.
pub async fn encrypt(
&self,
payloads: impl IntoIterator<Item = EncryptPayload<'_>>,
dataset_id: Option<Uuid>,
) -> Result<Vec<EncryptedRecord>, Error>
pub async fn encrypt( &self, payloads: impl IntoIterator<Item = EncryptPayload<'_>>, dataset_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<'_>,
dataset_id: Option<Uuid>,
) -> Result<EncryptedRecord, Error>
pub async fn encrypt_single( &self, payload: EncryptPayload<'_>, dataset_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(
&self,
payloads: impl IntoIterator<Item = EncryptedRecord>,
) -> Result<Vec<Vec<u8>>, Error>
pub async fn decrypt( &self, payloads: impl IntoIterator<Item = EncryptedRecord>, ) -> Result<Vec<Vec<u8>>, Error>
Decrypt a stream of EncryptedRecord and return the raw decrypted binary blob.
Note that this only works when Self is a ZeroKMSWithClientKey client.
pub async fn decrypt_single(
&self,
payload: EncryptedRecord,
) -> Result<Vec<u8>, Error>
pub async fn decrypt_single( &self, payload: EncryptedRecord, ) -> Result<Vec<u8>, Error>
Decrypt a single EncryptedRecord.
Note that this only works when Self is a ZeroKMSWithClientKey client.
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>where
ClientKeyState: Send,
impl<C, ClientKeyState> Sync for ZeroKMS<C, ClientKeyState>where
ClientKeyState: Sync,
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<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<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>
fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>
source§fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>
fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>
source§fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>
fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>
source§fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>
fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>
source§fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>
fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>
source§fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>
fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>
source§fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>
fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>
source§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
source§fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>
fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>
source§fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>
fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>
source§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
source§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
source§fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
source§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
source§fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>
fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>
source§fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>
fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>
source§fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>
fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>
source§fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>
fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>
source§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
source§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
source§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
source§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
source§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
source§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
source§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
source§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
source§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
source§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
source§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
source§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
source§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
source§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
source§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
source§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
source§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
source§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
source§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
source§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
source§fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>
fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>
source§fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>
fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>
source§fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>
fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>
source§fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>
fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>
source§fn blink<'a>(&'a self) -> BlinkDisplay<'a, Self>
fn blink<'a>(&'a self) -> BlinkDisplay<'a, Self>
source§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
source§fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>
fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>
source§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, 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