65 lines
1.9 KiB
Rust
65 lines
1.9 KiB
Rust
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<u8> = 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::<sgx_quote_header_t>();
|
|
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);
|
|
}
|