1
1
//! ECALL definition: [`save_access_key`]
2
2
3
- use std:: dbg;
3
+ use std:: { dbg, format} ;
4
+
5
+ use sgx_types:: sgx_enclave_id_t;
4
6
5
7
use rtc_types:: enclave_messages:: ng_set_access_key;
6
8
use rtc_types:: enclave_messages:: set_access_key;
@@ -22,12 +24,30 @@ pub extern "C" fn save_access_key(
22
24
fn save_access_key_impl (
23
25
encrypted_request : set_access_key:: EncryptedRequest ,
24
26
) -> set_access_key:: EncryptedResponse {
25
- dbg ! (
26
- encrypted_request. tag,
27
- encrypted_request. ciphertext,
28
- encrypted_request. aad,
29
- encrypted_request. nonce,
30
- ) ;
27
+ // FIXME: Get sending enclave ID via AAD?
28
+ let dummy_enclave_id = sgx_enclave_id_t:: default ( ) ;
29
+
30
+ let other_enclave_id = dummy_enclave_id;
31
+
32
+ let sessions: & crate :: DhSessions < _ , _ > = crate :: dh_sessions ( ) ;
33
+ let channel_mutex = sessions. get_active ( other_enclave_id) . expect ( & format ! (
34
+ "save_access_key_impl: no active DH session for sending enclave {:?}" ,
35
+ other_enclave_id,
36
+ ) ) ;
37
+ let channel = channel_mutex
38
+ . lock ( )
39
+ . expect ( "save_access_key_impl: protected channel mutex poisoned" ) ;
40
+
41
+ let request_bytes = channel
42
+ . decrypt_message ( encrypted_request)
43
+ . expect ( "TODO: return Result<>" ) ;
44
+ dbg ! ( request_bytes) ;
45
+ // TODO: deserialize,
46
+
47
+ let response = set_access_key:: Response { success : false } ;
48
+ dbg ! ( response) ;
49
+ // TODO: serialize
50
+
31
51
set_access_key:: EncryptedResponse {
32
52
tag : Default :: default ( ) ,
33
53
ciphertext : Default :: default ( ) ,
0 commit comments