diff --git a/tools/toolchains/dcap_lib/examples/dcap_test.rs b/tools/toolchains/dcap_lib/examples/dcap_test.rs index 34c21614..965b4802 100644 --- a/tools/toolchains/dcap_lib/examples/dcap_test.rs +++ b/tools/toolchains/dcap_lib/examples/dcap_test.rs @@ -1,8 +1,8 @@ extern crate occlum_dcap; -use std::str; -use std::io::Result; -use std::convert::TryFrom; use occlum_dcap::*; +use std::convert::TryFrom; +use std::io::Result; +use std::str; struct DcapDemo { dcap_quote: DcapQuote, @@ -10,7 +10,7 @@ struct DcapDemo { quote_buf: Vec, req_data: sgx_report_data_t, supplemental_size: u32, - suppl_buf: Vec + suppl_buf: Vec, } impl DcapDemo { @@ -33,12 +33,15 @@ impl DcapDemo { quote_buf: quote_buf, req_data: req_data, supplemental_size: supplemental_size, - suppl_buf: suppl_buf + suppl_buf: suppl_buf, } } fn dcap_quote_gen(&mut self) -> i32 { - let ret = self.dcap_quote.generate_quote(self.quote_buf.as_mut_ptr(), &mut self.req_data).unwrap(); + let ret = self + .dcap_quote + .generate_quote(self.quote_buf.as_mut_ptr(), &mut self.req_data) + .unwrap(); if ret < 0 { println!("DCAP generate quote failed"); } else { @@ -58,8 +61,8 @@ impl DcapDemo { fn dcap_quote_get_report_body(&mut self) -> Result<*const sgx_report_body_t> { let report_body_offset = std::mem::size_of::(); - let report_body: *const sgx_report_body_t - = (self.quote_buf[report_body_offset..]).as_ptr() as _; + let report_body: *const sgx_report_body_t = + (self.quote_buf[report_body_offset..]).as_ptr() as _; Ok(report_body) } @@ -148,7 +151,7 @@ fn main() { // compare the report data in quote buffer let report_data_ptr = dcap_demo.dcap_quote_get_report_data().unwrap(); - let string = str::from_utf8( unsafe { &(*report_data_ptr).d } ).unwrap(); + let string = str::from_utf8(unsafe { &(*report_data_ptr).d }).unwrap(); if report_str == &string[..report_str.len()] { println!("Report data from Quote: '{}' exactly matches.", string); @@ -162,15 +165,20 @@ fn main() { match result { sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OK => { println!("Succeed to verify the quote!"); - }, - sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_NEEDED | - sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE | - sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE_CONFIG_NEEDED | - sgx_ql_qv_result_t::SGX_QL_QV_RESULT_SW_HARDENING_NEEDED | - sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_AND_SW_HARDENING_NEEDED => { - println!("WARN: App: Verification completed with Non-terminal result: {:?}", result); - }, - _ => println!("Error: App: Verification completed with Terminal result: {:?}", result), + } + sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_NEEDED + | sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE + | sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE_CONFIG_NEEDED + | sgx_ql_qv_result_t::SGX_QL_QV_RESULT_SW_HARDENING_NEEDED + | sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_AND_SW_HARDENING_NEEDED => { + println!( + "WARN: App: Verification completed with Non-terminal result: {:?}", + result + ); + } + _ => println!( + "Error: App: Verification completed with Terminal result: {:?}", + result + ), } - } diff --git a/tools/toolchains/dcap_lib/src/lib.rs b/tools/toolchains/dcap_lib/src/lib.rs index a0616099..7def24a8 100644 --- a/tools/toolchains/dcap_lib/src/lib.rs +++ b/tools/toolchains/dcap_lib/src/lib.rs @@ -1,8 +1,8 @@ mod occlum_dcap; mod prelude; -pub use crate::prelude::*; pub use crate::occlum_dcap::*; +pub use crate::prelude::*; #[no_mangle] pub extern "C" fn dcap_quote_open() -> *mut c_void { @@ -16,12 +16,10 @@ pub extern "C" fn dcap_quote_open() -> *mut c_void { #[no_mangle] pub extern "C" fn dcap_get_quote_size(handle: *mut c_void) -> u32 { if handle.is_null() { - return 0 + return 0; } - let dcap = unsafe { - &mut *(handle as *mut DcapQuote) - }; + let dcap = unsafe { &mut *(handle as *mut DcapQuote) }; dcap.get_quote_size().unwrap_or(0) } @@ -30,15 +28,13 @@ pub extern "C" fn dcap_get_quote_size(handle: *mut c_void) -> u32 { pub extern "C" fn dcap_generate_quote( handle: *mut c_void, quote_buf: *mut u8, - report_data: *const sgx_report_data_t) -> i32 -{ + report_data: *const sgx_report_data_t, +) -> i32 { if handle.is_null() { - return -1 + return -1; } - let dcap = unsafe { - &mut *(handle as *mut DcapQuote) - }; + let dcap = unsafe { &mut *(handle as *mut DcapQuote) }; dcap.generate_quote(quote_buf, report_data).unwrap_or(-1) } @@ -46,12 +42,10 @@ pub extern "C" fn dcap_generate_quote( #[no_mangle] pub extern "C" fn dcap_get_supplemental_data_size(handle: *mut c_void) -> u32 { if handle.is_null() { - return 0 + return 0; } - let dcap = unsafe { - &mut *(handle as *mut DcapQuote) - }; + let dcap = unsafe { &mut *(handle as *mut DcapQuote) }; dcap.get_supplemental_data_size().unwrap_or(0) } @@ -64,15 +58,13 @@ pub extern "C" fn dcap_verify_quote( collateral_expiration_status: *mut u32, quote_verification_result: *mut sgx_ql_qv_result_t, supplemental_data_size: u32, - supplemental_data: *mut u8) -> i32 -{ + supplemental_data: *mut u8, +) -> i32 { if handle.is_null() { - return -1 + return -1; } - let dcap = unsafe { - &mut *(handle as *mut DcapQuote) - }; + let dcap = unsafe { &mut *(handle as *mut DcapQuote) }; let mut verify_arg = IoctlVerDCAPQuoteArg { quote_buf: quote_buf, @@ -86,16 +78,13 @@ pub extern "C" fn dcap_verify_quote( dcap.verify_quote(&mut verify_arg).unwrap_or(-1) } - #[no_mangle] pub extern "C" fn dcap_quote_close(handle: *mut c_void) { if handle.is_null() { - return + return; } - let dcap = unsafe { - &mut *(handle as *mut DcapQuote) - }; + let dcap = unsafe { &mut *(handle as *mut DcapQuote) }; dcap.close(); diff --git a/tools/toolchains/dcap_lib/src/occlum_dcap.rs b/tools/toolchains/dcap_lib/src/occlum_dcap.rs index 61e1bf1e..9969e1b4 100644 --- a/tools/toolchains/dcap_lib/src/occlum_dcap.rs +++ b/tools/toolchains/dcap_lib/src/occlum_dcap.rs @@ -1,5 +1,5 @@ -use std::ffi::CString; use crate::prelude::*; +use std::ffi::CString; const SGXIOC_GET_DCAP_QUOTE_SIZE: u64 = 0x80047307; const SGXIOC_GEN_DCAP_QUOTE: u64 = 0xc0187308; @@ -77,7 +77,11 @@ impl DcapQuote { } } - pub fn generate_quote(&mut self, quote_buf: *mut u8, report_data: *const sgx_report_data_t) -> Result { + pub fn generate_quote( + &mut self, + quote_buf: *mut u8, + report_data: *const sgx_report_data_t, + ) -> Result { let quote_arg: IoctlGenDCAPQuoteArg = IoctlGenDCAPQuoteArg { report_data: report_data, quote_size: &mut self.quote_size, @@ -122,4 +126,3 @@ impl DcapQuote { unsafe { libc::close(self.fd) }; } } - diff --git a/tools/toolchains/dcap_lib/src/prelude.rs b/tools/toolchains/dcap_lib/src/prelude.rs index 5dac5871..00e5c531 100644 --- a/tools/toolchains/dcap_lib/src/prelude.rs +++ b/tools/toolchains/dcap_lib/src/prelude.rs @@ -1,8 +1,8 @@ +pub use libc::{c_int, c_void, close, ioctl, open, O_RDONLY}; pub use std::boxed::Box; pub use std::io::Error; -pub use libc::{open, ioctl, close, c_void, c_int, O_RDONLY}; // Defined in "occlum/deps/rust-sgx-sdk/sgx_types" pub use sgx_types::{ - sgx_quote_header_t, sgx_report_data_t, sgx_ql_qv_result_t, sgx_report_body_t, sgx_quote3_t + sgx_ql_qv_result_t, sgx_quote3_t, sgx_quote_header_t, sgx_report_body_t, sgx_report_data_t, };