pub struct RotateableKeySet {
encapsulated_downstream_key: UnsignedSharedKey,
encrypted_encapsulation_key: EncString,
encrypted_decapsulation_key: EncString,
}Expand description
A set of keys where a given DownstreamKey is protected by an encrypted public/private
key-pair. The DownstreamKey is used to encrypt/decrypt data, while the public/private key-pair
is used to rotate the DownstreamKey.
The PrivateKey is protected by an UpstreamKey, such as a DeviceKey, or PrfKey,
and the PublicKey is protected by the DownstreamKey. This setup allows:
- Access to
DownstreamKeyby knowing theUpstreamKey - Rotation to a
NewDownstreamKeyby knowing the currentDownstreamKey, without needing access to theUpstreamKey
Fields§
§encapsulated_downstream_key: UnsignedSharedKeyDownstreamKey protected by encapsulation key
encrypted_encapsulation_key: EncStringEncapsulation key protected by DownstreamKey
encrypted_decapsulation_key: EncStringDecapsulation key protected by UpstreamKey
Implementations§
Source§impl RotateableKeySet
impl RotateableKeySet
Sourcepub fn new<Ids: KeyIds>(
ctx: &KeyStoreContext<'_, Ids>,
upstream_key: &SymmetricCryptoKey,
downstream_key_id: Ids::Symmetric,
) -> Result<Self, CryptoError>
pub fn new<Ids: KeyIds>( ctx: &KeyStoreContext<'_, Ids>, upstream_key: &SymmetricCryptoKey, downstream_key_id: Ids::Symmetric, ) -> Result<Self, CryptoError>
Create a set of keys to allow access to the downstream key via the provided upstream key while allowing the downstream key to be rotated.
fn unlock<Ids: KeyIds>( &self, ctx: &mut KeyStoreContext<'_, Ids>, upstream_key: &SymmetricCryptoKey, downstream_key_id: Ids::Symmetric, ) -> Result<(), CryptoError>
Trait Implementations§
Source§impl<UT> ConvertError<UT> for RotateableKeySet
impl<UT> ConvertError<UT> for RotateableKeySet
fn try_convert_unexpected_callback_error( e: UnexpectedUniFFICallbackError, ) -> Result<Self>
Source§impl Debug for RotateableKeySet
impl Debug for RotateableKeySet
Source§impl<'de> Deserialize<'de> for RotateableKeySet
impl<'de> Deserialize<'de> for RotateableKeySet
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<UT> FfiConverter<UT> for RotateableKeySet
impl<UT> FfiConverter<UT> for RotateableKeySet
Source§const TYPE_ID_META: MetadataBuffer
const TYPE_ID_META: MetadataBuffer
Type ID metadata, serialized into a [MetadataBuffer].
Source§type FfiType = RustBuffer
type FfiType = RustBuffer
The low-level type used for passing values of this type over the FFI. Read more
Source§fn lower(v: Self) -> RustBuffer
fn lower(v: Self) -> RustBuffer
Lower a rust value of the target type, into an FFI value of type Self::FfiType. Read more
Source§fn try_lift(buf: RustBuffer) -> Result<Self>
fn try_lift(buf: RustBuffer) -> Result<Self>
Lift a rust value of the target type, from an FFI value of type Self::FfiType. Read more
Source§impl From<RotateableKeySet> for JsValuewhere
RotateableKeySet: Serialize,
impl From<RotateableKeySet> for JsValuewhere
RotateableKeySet: Serialize,
Source§fn from(value: RotateableKeySet) -> Self
fn from(value: RotateableKeySet) -> Self
Converts to this type from the input type.
Source§impl FromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
impl FromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
Source§impl IntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
impl IntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
Source§impl<UT> Lift<UT> for RotateableKeySet
impl<UT> Lift<UT> for RotateableKeySet
Source§impl<UT> LiftRef<UT> for RotateableKeySet
impl<UT> LiftRef<UT> for RotateableKeySet
type LiftType = RotateableKeySet
Source§impl<UT> LiftReturn<UT> for RotateableKeySet
impl<UT> LiftReturn<UT> for RotateableKeySet
Source§type ReturnType = <RotateableKeySet as Lift<UT>>::FfiType
type ReturnType = <RotateableKeySet as Lift<UT>>::FfiType
FFI return type for trait interfaces
Source§fn try_lift_successful_return(v: Self::ReturnType) -> Result<Self>
fn try_lift_successful_return(v: Self::ReturnType) -> Result<Self>
Lift a successfully returned value from a trait interface
§fn lift_foreign_return(
ffi_return: Self::ReturnType,
call_status: RustCallStatus,
) -> Self
fn lift_foreign_return( ffi_return: Self::ReturnType, call_status: RustCallStatus, ) -> Self
Lift a foreign returned value from a trait interface Read more
§fn lift_error(_buf: RustBuffer) -> Self
fn lift_error(_buf: RustBuffer) -> Self
Lift a Rust value for a callback interface method error result Read more
§fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self
fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self
Lift a Rust value for an unexpected callback interface error Read more
Source§impl<UT> Lower<UT> for RotateableKeySet
impl<UT> Lower<UT> for RotateableKeySet
Source§impl<UT> LowerError<UT> for RotateableKeySet
impl<UT> LowerError<UT> for RotateableKeySet
Source§fn lower_error(obj: Self) -> RustBuffer
fn lower_error(obj: Self) -> RustBuffer
Lower this value for scaffolding function return Read more
Source§impl<UT> LowerReturn<UT> for RotateableKeySet
impl<UT> LowerReturn<UT> for RotateableKeySet
Source§type ReturnType = <RotateableKeySet as Lower<UT>>::FfiType
type ReturnType = <RotateableKeySet as Lower<UT>>::FfiType
The type that should be returned by scaffolding functions for this type. Read more
Source§fn lower_return(v: Self) -> Result<Self::ReturnType, RustCallError>
fn lower_return(v: Self) -> Result<Self::ReturnType, RustCallError>
Lower the return value from an scaffolding call Read more
§fn handle_failed_lift(
error: LiftArgsError,
) -> Result<Self::ReturnType, RustCallError>
fn handle_failed_lift( error: LiftArgsError, ) -> Result<Self::ReturnType, RustCallError>
Lower the return value for failed argument lifts Read more
Source§impl OptionFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
impl OptionFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
Source§impl OptionIntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
impl OptionIntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
Source§impl RefFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
impl RefFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
Source§type Abi = <JsType as RefFromWasmAbi>::Abi
type Abi = <JsType as RefFromWasmAbi>::Abi
The Wasm ABI type references to
Self are recovered from.Source§type Anchor = SelfOwner<RotateableKeySet>
type Anchor = SelfOwner<RotateableKeySet>
The type that holds the reference to
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.Source§impl Serialize for RotateableKeySet
impl Serialize for RotateableKeySet
Source§impl Tsify for RotateableKeySet
impl Tsify for RotateableKeySet
const DECL: &'static str = "/**\n * A set of keys where a given `DownstreamKey` is protected by an encrypted public/private\n * key-pair. The `DownstreamKey` is used to encrypt/decrypt data, while the public/private key-pair\n * is used to rotate the `DownstreamKey`.\n *\n * The `PrivateKey` is protected by an `UpstreamKey`, such as a `DeviceKey`, or `PrfKey`,\n * and the `PublicKey` is protected by the `DownstreamKey`. This setup allows:\n *\n * - Access to `DownstreamKey` by knowing the `UpstreamKey`\n * - Rotation to a `NewDownstreamKey` by knowing the current `DownstreamKey`, without needing\n * access to the `UpstreamKey`\n */\nexport interface RotateableKeySet {\n /**\n * `DownstreamKey` protected by encapsulation key\n */\n encapsulatedDownstreamKey: UnsignedSharedKey;\n /**\n * Encapsulation key protected by `DownstreamKey`\n */\n encryptedEncapsulationKey: EncString;\n /**\n * Decapsulation key protected by `UpstreamKey`\n */\n encryptedDecapsulationKey: EncString;\n}"
const SERIALIZATION_CONFIG: SerializationConfig
type JsType = JsType
fn into_js(&self) -> Result<Self::JsType, Error>where
Self: Serialize,
fn from_js<T>(js: T) -> Result<Self, Error>
Source§impl<UT> TypeId<UT> for RotateableKeySet
impl<UT> TypeId<UT> for RotateableKeySet
const TYPE_ID_META: MetadataBuffer
Source§impl VectorFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
impl VectorFromWasmAbi for RotateableKeySetwhere
Self: DeserializeOwned,
type Abi = <JsType as VectorFromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]>
Source§impl VectorIntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
impl VectorIntoWasmAbi for RotateableKeySetwhere
RotateableKeySet: Serialize,
type Abi = <JsType as VectorIntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi
Source§impl WasmDescribe for RotateableKeySet
impl WasmDescribe for RotateableKeySet
Auto Trait Implementations§
impl Freeze for RotateableKeySet
impl RefUnwindSafe for RotateableKeySet
impl Send for RotateableKeySet
impl Sync for RotateableKeySet
impl Unpin for RotateableKeySet
impl UnwindSafe for RotateableKeySet
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
Mutably borrows from an owned value. Read more
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
Create a new handle for an Arc value Read more
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
Clone a handle Read more
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Consume a handle, getting back the initial
Arc<> Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
Same as
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
Same as
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.