use core::hint::unreachable_unchecked;
use core::time::Duration;
use crate::types::*;
#[macro_use]
mod macros;
generate_enums! {
Agree: 1
Decrypt: 3
DeriveKey: 4
DeserializeKey: 5
Encrypt: 6
Delete: 7
DeleteAllKeys: 25
Exists: 8
GenerateKey: 10
GenerateSecretKey: 11
Hash: 12
ReadDirFilesFirst: 13
ReadDirFilesNext: 14
ReadFile: 15
RandomBytes: 16
SerializeKey: 17
Sign: 18
WriteFile: 19
UnsafeInjectKey: 20
UnsafeInjectSharedKey: 21
UnwrapKey: 22
Verify: 23
WrapKey: 24
Attest: 0xFF
ReadDirFirst: 31 ReadDirNext: 32 RemoveFile: 33
RemoveDir: 36
RemoveDirAll: 34
LocateFile: 35
RequestUserConsent: 41
Reboot: 42
Uptime: 43
Wink: 44
CreateCounter: 50
IncrementCounter: 51
DeleteCertificate: 60
ReadCertificate: 61
WriteCertificate: 62
DebugDumpStore: 0x79
}
pub mod request {
use super::*;
impl_request! {
Agree:
- mechanism: Mechanism
- private_key: KeyId
- public_key: KeyId
- attributes: StorageAttributes
Attest:
- signing_mechanism: Mechanism
- private_key: KeyId
DebugDumpStore:
Decrypt:
- mechanism: Mechanism
- key: KeyId
- message: Message
- associated_data: Message
- nonce: ShortData
- tag: ShortData
Delete:
- key: KeyId
DeleteAllKeys:
- location: Location
DeriveKey:
- mechanism: Mechanism
- base_key: KeyId
- additional_data: Option<MediumData>
- attributes: StorageAttributes
DeserializeKey:
- mechanism: Mechanism
- serialized_key: Message
- format: KeySerialization
- attributes: StorageAttributes
Encrypt:
- mechanism: Mechanism
- key: KeyId
- message: Message
- associated_data: ShortData
- nonce: Option<ShortData>
Exists:
- mechanism: Mechanism
- key: KeyId
GenerateKey:
- mechanism: Mechanism - attributes: StorageAttributes
GenerateSecretKey:
- size: usize - attributes: StorageAttributes
Hash:
- mechanism: Mechanism
- message: Message
LocateFile:
- location: Location
- dir: Option<PathBuf>
- filename: PathBuf
ReadDirFilesFirst:
- location: Location
- dir: PathBuf
- user_attribute: Option<UserAttribute>
ReadDirFilesNext:
ReadDirFirst:
- location: Location
- dir: PathBuf
- not_before_filename: Option<PathBuf>
ReadDirNext:
ReadFile:
- location: Location
- path: PathBuf
RemoveFile:
- location: Location
- path: PathBuf
RemoveDir:
- location: Location
- path: PathBuf
RemoveDirAll:
- location: Location
- path: PathBuf
RandomBytes:
- count: usize
SerializeKey:
- mechanism: Mechanism
- key: KeyId
- format: KeySerialization
Sign:
- mechanism: Mechanism
- key: KeyId
- message: Message
- format: SignatureSerialization
WriteFile:
- location: Location
- path: PathBuf
- data: Message
- user_attribute: Option<UserAttribute>
UnsafeInjectKey:
- mechanism: Mechanism - raw_key: ShortData
- attributes: StorageAttributes
UnsafeInjectSharedKey:
- location: Location
- raw_key: ShortData
UnwrapKey:
- mechanism: Mechanism
- wrapping_key: KeyId
- wrapped_key: Message
- associated_data: Message
- attributes: StorageAttributes
Verify:
- mechanism: Mechanism
- key: KeyId
- message: Message
- signature: Signature
- format: SignatureSerialization
WrapKey:
- mechanism: Mechanism
- wrapping_key: KeyId
- key: KeyId
- associated_data: Message
RequestUserConsent:
- level: consent::Level
- timeout_milliseconds: u32
Reboot:
- to: reboot::To
Uptime:
Wink:
- duration: core::time::Duration
CreateCounter:
- location: Location
IncrementCounter:
- id: CounterId
DeleteCertificate:
- id: CertId
ReadCertificate:
- id: CertId
WriteCertificate:
- location: Location
- der: Message
}
}
pub mod reply {
use super::*;
impl_reply! {
Agree:
- shared_secret: KeyId
Attest:
- certificate: CertId
DebugDumpStore:
Decrypt:
- plaintext: Option<Message>
Delete:
- success: bool
DeleteAllKeys:
- count: usize
DeriveKey:
- key: KeyId
DeserializeKey:
- key: KeyId
Encrypt:
- ciphertext: Message
- nonce: ShortData
- tag: ShortData
Exists:
- exists: bool
GenerateKey:
- key: KeyId
GenerateSecretKey:
- key: KeyId
Hash:
- hash: ShortData
LocateFile:
- path: Option<PathBuf>
ReadDirFilesFirst:
- data: Option<Message>
ReadDirFilesNext:
- data: Option<Message>
ReadDirFirst:
- entry: Option<DirEntry>
ReadDirNext:
- entry: Option<DirEntry>
ReadFile:
- data: Message
RemoveDir:
RemoveDirAll:
- count: usize
RemoveFile:
RandomBytes:
- bytes: Message
SerializeKey:
- serialized_key: Message
Sign:
- signature: Signature
WriteFile:
Verify:
- valid: bool
UnsafeInjectKey:
- key: KeyId
UnsafeInjectSharedKey:
- key: KeyId
UnwrapKey:
- key: Option<KeyId>
WrapKey:
- wrapped_key: Message
RequestUserConsent:
- result: consent::Result
Reboot:
Uptime:
- uptime: Duration
Wink:
CreateCounter:
- id: CounterId
IncrementCounter:
- counter: u128
DeleteCertificate:
ReadCertificate:
- der: Message
WriteCertificate:
- id: CertId
}
}