pub struct SealingKeysProxy { /* private fields */ }
Implementations§
Source§impl SealingKeysProxy
impl SealingKeysProxy
Sourcepub fn new(channel: AsyncChannel) -> Self
pub fn new(channel: AsyncChannel) -> Self
Create a new Proxy for fuchsia.security.keymint/SealingKeys.
Sourcepub fn take_event_stream(&self) -> SealingKeysEventStream
pub fn take_event_stream(&self) -> SealingKeysEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn create_sealing_key(
&self,
key_info: &[u8],
) -> QueryResponseFut<SealingKeysCreateSealingKeyResult, DefaultFuchsiaResourceDialect>
pub fn create_sealing_key( &self, key_info: &[u8], ) -> QueryResponseFut<SealingKeysCreateSealingKeyResult, DefaultFuchsiaResourceDialect>
Generates a new sealing key to seal and unseal secrets.
|key_info| is information to be cryptographically bound to the returned key.
- The client will have to supply it in all uses (other than key deletion) of the returned key.
- It serves two purposes: (1) internally by the key manager to identify the key owner and (2) as a password to mitigate potential attacks from the key manager and as well as other clients.
- It is recommended to include sufficient entropy in it (using it as a password) to mitigage potential attacks from the secure world (the key manager’s execution environment) or from other clients.
- It is acceptible to pass a constant if deriving and persisting a password is too cumbersome and the client fully trust the secure world and there are not many other clients.
The client is responsible for persisting both |key_info| and the returned |key_blob|. The key blob is encrypted with a TEE-private key. It is guaranteed to be unique for each call (even with the same key info). It can be stored in unsecure storage.
Returns:
- The sealing key if everything worked.
- FAILED_CREATE if the key creation failed, e.g., the |key_info| was empty.
Sourcepub fn seal(
&self,
key_info: &[u8],
key_blob: &[u8],
secret: &[u8],
) -> QueryResponseFut<SealingKeysSealResult, DefaultFuchsiaResourceDialect>
pub fn seal( &self, key_info: &[u8], key_blob: &[u8], secret: &[u8], ) -> QueryResponseFut<SealingKeysSealResult, DefaultFuchsiaResourceDialect>
Seals a secret using a sealing key identified by its info and blob:
- The key info has to match the one supplied when generating the sealing key.
Note that the secret may be a key itself. It has no bearing on the seal operation.
Returns:
- The sealed secret if everything worked.
- FAILED_SEAL if the sealing failed, e.g., sealing key info or blob mismatch.
Sourcepub fn unseal(
&self,
key_info: &[u8],
key_blob: &[u8],
sealed_secret: &[u8],
) -> QueryResponseFut<SealingKeysUnsealResult, DefaultFuchsiaResourceDialect>
pub fn unseal( &self, key_info: &[u8], key_blob: &[u8], sealed_secret: &[u8], ) -> QueryResponseFut<SealingKeysUnsealResult, DefaultFuchsiaResourceDialect>
Unseals a sealed secret using a sealing key identified by its info and blob:
- The key info has to match the one supplied when generating the sealing key.
- The key blob has to match the one used to seal the secret.
Note that the secret may be a key itself. It has no bearing on the unseal operation.
Returns:
- The unsealed secret if everything worked.
- FAILED_UNSEAL if the unsealing failed, e.g., sealing key info or blob mismatch.
Trait Implementations§
Source§impl Clone for SealingKeysProxy
impl Clone for SealingKeysProxy
Source§fn clone(&self) -> SealingKeysProxy
fn clone(&self) -> SealingKeysProxy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SealingKeysProxy
impl Debug for SealingKeysProxy
Source§impl Proxy for SealingKeysProxy
impl Proxy for SealingKeysProxy
Source§type Protocol = SealingKeysMarker
type Protocol = SealingKeysMarker
Proxy
controls.