diff --git a/rtc_types/src/enclave_messages/ffi_set_access_key.rs b/rtc_types/src/enclave_messages/ffi_set_access_key.rs index aed70674..9e09c631 100644 --- a/rtc_types/src/enclave_messages/ffi_set_access_key.rs +++ b/rtc_types/src/enclave_messages/ffi_set_access_key.rs @@ -9,9 +9,11 @@ //! (The Rust compiler should report an error if these don't line up: //! this can be used to update these if `set_access_key` changes.) -use sgx_types::sgx_aes_gcm_128bit_tag_t; +use sgx_types::{sgx_aes_gcm_128bit_tag_t, sgx_status_t}; use super::{set_access_key, RecommendedAesGcmIv}; +use crate::enclave_messages::errors::SealingError; +use crate::EcallResult; // See enclave_messages::ARCHIVED_ENCLAVE_ID_SIZE pub const ARCHIVED_ENCLAVE_ID_SIZE: usize = 8; @@ -44,8 +46,17 @@ pub struct SetAccessKeyEncryptedResponse { pub nonce: RecommendedAesGcmIv, } +// FFI type: SetAccessKeyResult +pub type SetAccessKeyResult = EcallResult; + // End FFI types +impl Default for SetAccessKeyResult { + fn default() -> Self { + EcallResult::Err(SealingError::Sgx(sgx_status_t::SGX_ERROR_UNEXPECTED)) + } +} + // Boilerplate From implementations: impl From for SetAccessKeyEncryptedRequest { @@ -119,3 +130,15 @@ impl From for set_access_key::EncryptedResponse { }; } } + +impl From for SetAccessKeyResult { + fn from(result: set_access_key::SetAccessKeyResult) -> Self { + Self::from(result.map(SetAccessKeyEncryptedResponse::from)) + } +} + +impl From for set_access_key::SetAccessKeyResult { + fn from(result: SetAccessKeyResult) -> Self { + Self::from(result.map(set_access_key::EncryptedResponse::from)) + } +} diff --git a/rtc_types/src/enclave_messages/set_access_key.rs b/rtc_types/src/enclave_messages/set_access_key.rs index 544e2935..dbd1215d 100644 --- a/rtc_types/src/enclave_messages/set_access_key.rs +++ b/rtc_types/src/enclave_messages/set_access_key.rs @@ -2,6 +2,7 @@ use core::mem; use rkyv::{Archive, Deserialize, Serialize}; +use crate::enclave_messages::errors::SealingError; use crate::enclave_messages::{EncryptedEnclaveMessage, ARCHIVED_ENCLAVE_ID_SIZE}; #[derive(Archive, Deserialize, Serialize, Debug, PartialEq, Clone)] @@ -32,6 +33,9 @@ pub const RESPONSE_SIZE: usize = mem::size_of::(); // FFI type: EncryptedResponse pub type EncryptedResponse = EncryptedEnclaveMessage; +// FFI type: SetAccessKeyResult +pub type SetAccessKeyResult = Result; + // End FFI types #[cfg(test)]