use occlum_utils::*; use sgx_types::{ sgx_attributes_t, sgx_key_id_t, sgx_misc_select_t, SGX_KEYPOLICY_MRSIGNER, SGX_KEYSELECT_SEAL, SGX_KEY_REQUEST_RESERVED2_BYTES, TSEAL_DEFAULT_FLAGSMASK, TSEAL_DEFAULT_MISCMASK, }; use occlum_dcap::{sgx_quote_header_t, sgx_report_body_t, sgx_report_data_t, DcapQuote}; fn main() { let handle = utils_ioctl_open(); let dcap_handle = unsafe { &mut *(handle as *mut DcapQuote) }; let quote_size = dcap_handle.get_quote_size().unwrap_or_default(); let mut quote_buf: Vec = vec![0; quote_size as usize]; let report_str = "utils demo sample"; let mut report_data = sgx_report_data_t::default(); report_data.d[..report_str.len()].copy_from_slice(report_str.as_bytes()); let report_data = report_data as sgx_report_data_t; let _ = dcap_handle .generate_quote(quote_buf.as_mut_ptr(), &report_data) .unwrap(); println!("==============================="); dbg!("e_buf); let report_body_offset = std::mem::size_of::(); let report_body: *const sgx_report_body_t = (quote_buf[report_body_offset..]).as_ptr() as _; let report_body: sgx_report_body_t = unsafe { *report_body }; let key_policy = SGX_KEYPOLICY_MRSIGNER; let attribute_mask = sgx_attributes_t { flags: TSEAL_DEFAULT_FLAGSMASK, xfrm: 0, }; let misc_mask: sgx_misc_select_t = TSEAL_DEFAULT_MISCMASK; let key_id = sgx_key_id_t::default(); let mut key = sgx_key_128bit_t::default(); let key_request = sgx_key_request_t { key_name: SGX_KEYSELECT_SEAL, key_policy, isv_svn: report_body.isv_svn, reserved1: 0_u16, cpu_svn: report_body.cpu_svn, attribute_mask, key_id, misc_mask, config_svn: report_body.config_svn, reserved2: [0_u8; SGX_KEY_REQUEST_RESERVED2_BYTES], }; utils_gen_key(handle, &mut key, &key_request); dbg!(&key); }