Struct ironoxide::IronOxide

source ·
pub struct IronOxide { /* private fields */ }
Expand description

Primary SDK Object

Struct that is used to make authenticated requests to the IronCore API. Instantiated with the details of an account’s various ids, device, and signing keys. Once instantiated all operations will be performed in the context of the account provided.

Implementations§

source§

impl IronOxide

source

pub fn device(&self) -> &DeviceContext

DeviceContext that was used to create this SDK instance

source

pub fn clear_policy_cache(&self) -> usize

Clears all entries from the policy cache.

Returns the number of entries cleared from the cache.

source

pub async fn rotate_all( &self, rotations: &PrivateKeyRotationCheckResult, password: &str, timeout: Option<Duration> ) -> Result<(Option<UserUpdatePrivateKeyResult>, Option<Vec<GroupUpdatePrivateKeyResult>>)>

Rotate the private key of the calling user and all groups they are an administrator of where needs_rotation is true. Note that this function has the potential to take much longer than other functions, as rotation will be done individually on each user/group. If rotation is only needed for a specific group, it is strongly recommended to call user_rotate_private_key or group_rotate_private_key instead.

Arguments
  • rotations - PrivateKeyRotationCheckResult that holds all users and groups to be rotated
  • password - Password to unlock the current user’s user master key
  • timeout - timeout for rotate_all. This is a separate timeout from the SDK-wide timeout as it is expected that this operation might take significantly longer than other operations.

Trait Implementations§

source§

impl BlindIndexSearchInitialize for IronOxide

source§

fn create_blind_index<'life0, 'life1, 'async_trait>( &'life0 self, group_id: &'life1 GroupId ) -> Pin<Box<dyn Future<Output = Result<EncryptedBlindIndexSalt>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Create an index and encrypt it to the provided group_id.
source§

impl Debug for IronOxide

Manual implementation of Debug without the recrypt or rng fields

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl DocumentAdvancedOps for IronOxide

source§

fn document_encrypt_unmanaged<'life0, 'life1, 'async_trait>( &'life0 self, data: Vec<u8>, encrypt_opts: &'life1 DocumentEncryptOpts ) -> Pin<Box<dyn Future<Output = Result<DocumentEncryptUnmanagedResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Encrypts the provided document bytes without being managed by the IronCore service. Read more
source§

fn document_decrypt_unmanaged<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, encrypted_data: &'life1 [u8], encrypted_deks: &'life2 [u8] ) -> Pin<Box<dyn Future<Output = Result<DocumentDecryptUnmanagedResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Decrypts a document not managed by the IronCore service. Read more
source§

impl DocumentOps for IronOxide

source§

fn document_encrypt<'life0, 'life1, 'async_trait>( &'life0 self, document_data: Vec<u8>, encrypt_opts: &'life1 DocumentEncryptOpts ) -> Pin<Box<dyn Future<Output = Result<DocumentEncryptResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Encrypts the provided document bytes. Read more
source§

fn document_decrypt<'life0, 'life1, 'async_trait>( &'life0 self, encrypted_document: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = Result<DocumentDecryptResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Decrypts an IronCore encrypted document. Read more
source§

fn document_list<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<DocumentListResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Lists metadata for all of the encrypted documents that the calling user can read or decrypt. Read more
source§

fn document_get_metadata<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 DocumentId ) -> Pin<Box<dyn Future<Output = Result<DocumentMetadataResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Returns the metadata for an encrypted document. Read more
source§

fn document_get_id_from_bytes( &self, encrypted_document: &[u8] ) -> Result<DocumentId>

Returns the document ID from the bytes of an encrypted document. Read more
source§

fn document_update_bytes<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 DocumentId, new_document_data: Vec<u8> ) -> Pin<Box<dyn Future<Output = Result<DocumentEncryptResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Updates the contents of an existing IronCore encrypted document. Read more
source§

fn document_update_name<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 DocumentId, name: Option<&'life2 DocumentName> ) -> Pin<Box<dyn Future<Output = Result<DocumentMetadataResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Modifies or removes a document’s name. Read more
source§

fn document_grant_access<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 DocumentId, grant_list: &'life2 [UserOrGroup] ) -> Pin<Box<dyn Future<Output = Result<DocumentAccessResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Grants decryption access to a document for the provided users and/or groups. Read more
source§

fn document_revoke_access<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 DocumentId, revoke_list: &'life2 [UserOrGroup] ) -> Pin<Box<dyn Future<Output = Result<DocumentAccessResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Revokes decryption access to a document for the provided users and/or groups. Read more
source§

impl GroupOps for IronOxide

source§

fn group_create<'life0, 'life1, 'async_trait>( &'life0 self, opts: &'life1 GroupCreateOpts ) -> Pin<Box<dyn Future<Output = Result<GroupCreateResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Creates a group. Read more
source§

fn group_get_metadata<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 GroupId ) -> Pin<Box<dyn Future<Output = Result<GroupGetResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets the full metadata for a group. Read more
source§

fn group_list<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<GroupListResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Lists all of the groups that the current user is an admin or a member of. Read more
source§

fn group_update_name<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 GroupId, name: Option<&'life2 GroupName> ) -> Pin<Box<dyn Future<Output = Result<GroupMetaResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Modifies or removes a group’s name. Read more
source§

fn group_rotate_private_key<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 GroupId ) -> Pin<Box<dyn Future<Output = Result<GroupUpdatePrivateKeyResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Rotates a group’s private key while leaving its public key unchanged. Read more
source§

fn group_add_members<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 GroupId, grant_list: &'life2 [UserId] ) -> Pin<Box<dyn Future<Output = Result<GroupAccessEditResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Adds members to a group. Read more
source§

fn group_remove_members<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 GroupId, revoke_list: &'life2 [UserId] ) -> Pin<Box<dyn Future<Output = Result<GroupAccessEditResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Removes members from a group. Read more
source§

fn group_add_admins<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 GroupId, users: &'life2 [UserId] ) -> Pin<Box<dyn Future<Output = Result<GroupAccessEditResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Adds administrators to a group. Read more
source§

fn group_remove_admins<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 GroupId, revoke_list: &'life2 [UserId] ) -> Pin<Box<dyn Future<Output = Result<GroupAccessEditResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Removes administrators from a group. Read more
source§

fn group_delete<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 GroupId ) -> Pin<Box<dyn Future<Output = Result<GroupId>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Deletes a group. Read more
source§

impl UserOps for IronOxide

source§

fn user_create<'life0, 'life1, 'life2, 'async_trait>( jwt: &'life0 Jwt, password: &'life1 str, user_create_opts: &'life2 UserCreateOpts, timeout: Option<Duration> ) -> Pin<Box<dyn Future<Output = Result<UserCreateResult>> + Send + 'async_trait>>where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Creates a user. Read more
source§

fn generate_new_device<'life0, 'life1, 'life2, 'async_trait>( jwt: &'life0 Jwt, password: &'life1 str, device_create_options: &'life2 DeviceCreateOpts, timeout: Option<Duration> ) -> Pin<Box<dyn Future<Output = Result<DeviceAddResult>> + Send + 'async_trait>>where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Generates a new device for the user specified in the JWT. Read more
source§

fn user_verify<'life0, 'async_trait>( jwt: &'life0 Jwt, timeout: Option<Duration> ) -> Pin<Box<dyn Future<Output = Result<Option<UserResult>>> + Send + 'async_trait>>where 'life0: 'async_trait,

Verifies the existence of a user using a JWT to identify their user record. Read more
source§

fn user_list_devices<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<UserDeviceListResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,

Lists all of the devices for the current user. Read more
source§

fn user_get_public_key<'life0, 'life1, 'async_trait>( &'life0 self, users: &'life1 [UserId] ) -> Pin<Box<dyn Future<Output = Result<HashMap<UserId, PublicKey>>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets users’ public keys given their IDs. Read more
source§

fn user_rotate_private_key<'life0, 'life1, 'async_trait>( &'life0 self, password: &'life1 str ) -> Pin<Box<dyn Future<Output = Result<UserUpdatePrivateKeyResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Rotates the current user’s private key while leaving their public key the same. Read more
source§

fn user_delete_device<'life0, 'life1, 'async_trait>( &'life0 self, device_id: Option<&'life1 DeviceId> ) -> Pin<Box<dyn Future<Output = Result<DeviceId>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Deletes a device. Read more
source§

fn user_change_password<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, current_password: &'life1 str, new_password: &'life2 str ) -> Pin<Box<dyn Future<Output = Result<UserUpdateResult>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Change the password for the user Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more