Skip to content
This repository was archived by the owner on May 9, 2022. It is now read-only.

Commit d69de3a

Browse files
committed
feat(rtc_types::enclave_messages::set_access_key): add SetAccessKeyResult type
1 parent 616e985 commit d69de3a

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

rtc_types/src/enclave_messages/ffi_set_access_key.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
//! (The Rust compiler should report an error if these don't line up:
1010
//! this can be used to update these if `set_access_key` changes.)
1111
12-
use sgx_types::sgx_aes_gcm_128bit_tag_t;
12+
use sgx_types::{sgx_aes_gcm_128bit_tag_t, sgx_status_t};
1313

1414
use super::{set_access_key, RecommendedAesGcmIv};
15+
use crate::enclave_messages::errors::SealingError;
16+
use crate::EcallResult;
1517

1618
// See enclave_messages::ARCHIVED_ENCLAVE_ID_SIZE
1719
pub const ARCHIVED_ENCLAVE_ID_SIZE: usize = 8;
@@ -44,8 +46,17 @@ pub struct SetAccessKeyEncryptedResponse {
4446
pub nonce: RecommendedAesGcmIv,
4547
}
4648

49+
// FFI type: SetAccessKeyResult
50+
pub type SetAccessKeyResult = EcallResult<SetAccessKeyEncryptedResponse, SealingError>;
51+
4752
// End FFI types
4853

54+
impl Default for SetAccessKeyResult {
55+
fn default() -> Self {
56+
EcallResult::Err(SealingError::Sgx(sgx_status_t::SGX_ERROR_UNEXPECTED))
57+
}
58+
}
59+
4960
// Boilerplate From implementations:
5061

5162
impl From<set_access_key::EncryptedRequest> for SetAccessKeyEncryptedRequest {
@@ -119,3 +130,15 @@ impl From<SetAccessKeyEncryptedResponse> for set_access_key::EncryptedResponse {
119130
};
120131
}
121132
}
133+
134+
impl From<set_access_key::SetAccessKeyResult> for SetAccessKeyResult {
135+
fn from(result: set_access_key::SetAccessKeyResult) -> Self {
136+
Self::from(result.map(SetAccessKeyEncryptedResponse::from))
137+
}
138+
}
139+
140+
impl From<SetAccessKeyResult> for set_access_key::SetAccessKeyResult {
141+
fn from(result: SetAccessKeyResult) -> Self {
142+
Self::from(result.map(set_access_key::EncryptedResponse::from))
143+
}
144+
}

rtc_types/src/enclave_messages/set_access_key.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use core::mem;
22

33
use rkyv::{Archive, Deserialize, Serialize};
44

5+
use crate::enclave_messages::errors::SealingError;
56
use crate::enclave_messages::{EncryptedEnclaveMessage, ARCHIVED_ENCLAVE_ID_SIZE};
67

78
#[derive(Archive, Deserialize, Serialize, Debug, PartialEq, Clone)]
@@ -32,6 +33,9 @@ pub const RESPONSE_SIZE: usize = mem::size_of::<ArchivedResponse>();
3233
// FFI type: EncryptedResponse
3334
pub type EncryptedResponse = EncryptedEnclaveMessage<RESPONSE_SIZE, 0>;
3435

36+
// FFI type: SetAccessKeyResult
37+
pub type SetAccessKeyResult = Result<EncryptedResponse, SealingError>;
38+
3539
// End FFI types
3640

3741
#[cfg(test)]

0 commit comments

Comments
 (0)