Loading trusty/keymint/src/keymint_hal_main.rs +25 −16 Original line number Diff line number Diff line Loading @@ -14,7 +14,9 @@ // limitations under the License. //! This module implements the HAL service for Keymint (Rust) in Trusty. use kmr_hal::{keymint, rpc, secureclock, send_hal_info, sharedsecret, SerializedChannel}; use kmr_hal::{ extract_rsp, keymint, rpc, secureclock, send_hal_info, sharedsecret, SerializedChannel, }; use log::{error, info}; use std::{ ffi::CString, Loading @@ -41,6 +43,7 @@ struct HalServiceError(String); struct TipcChannel(trusty::TipcChannel); impl SerializedChannel for TipcChannel { const MAX_SIZE: usize = 4000; fn execute(&mut self, serialized_req: &[u8]) -> binder::Result<Vec<u8>> { self.0.send(serialized_req).map_err(|e| { binder::Status::new_exception( Loading @@ -54,8 +57,10 @@ impl SerializedChannel for TipcChannel { ), ) })?; let mut expect_more_msgs = true; let mut full_rsp = Vec::new(); while expect_more_msgs { let mut recv_buf = Vec::new(); // TODO(b/253501976): cope with fragmentation of responses self.0.recv(&mut recv_buf).map_err(|e| { binder::Status::new_exception( binder::ExceptionCode::TRANSACTION_FAILED, Loading @@ -68,7 +73,11 @@ impl SerializedChannel for TipcChannel { ), ) })?; Ok(recv_buf) let current_rsp_content; (expect_more_msgs, current_rsp_content) = extract_rsp(&recv_buf)?; full_rsp.extend_from_slice(current_rsp_content); } Ok(full_rsp) } } Loading Loading
trusty/keymint/src/keymint_hal_main.rs +25 −16 Original line number Diff line number Diff line Loading @@ -14,7 +14,9 @@ // limitations under the License. //! This module implements the HAL service for Keymint (Rust) in Trusty. use kmr_hal::{keymint, rpc, secureclock, send_hal_info, sharedsecret, SerializedChannel}; use kmr_hal::{ extract_rsp, keymint, rpc, secureclock, send_hal_info, sharedsecret, SerializedChannel, }; use log::{error, info}; use std::{ ffi::CString, Loading @@ -41,6 +43,7 @@ struct HalServiceError(String); struct TipcChannel(trusty::TipcChannel); impl SerializedChannel for TipcChannel { const MAX_SIZE: usize = 4000; fn execute(&mut self, serialized_req: &[u8]) -> binder::Result<Vec<u8>> { self.0.send(serialized_req).map_err(|e| { binder::Status::new_exception( Loading @@ -54,8 +57,10 @@ impl SerializedChannel for TipcChannel { ), ) })?; let mut expect_more_msgs = true; let mut full_rsp = Vec::new(); while expect_more_msgs { let mut recv_buf = Vec::new(); // TODO(b/253501976): cope with fragmentation of responses self.0.recv(&mut recv_buf).map_err(|e| { binder::Status::new_exception( binder::ExceptionCode::TRANSACTION_FAILED, Loading @@ -68,7 +73,11 @@ impl SerializedChannel for TipcChannel { ), ) })?; Ok(recv_buf) let current_rsp_content; (expect_more_msgs, current_rsp_content) = extract_rsp(&recv_buf)?; full_rsp.extend_from_slice(current_rsp_content); } Ok(full_rsp) } } Loading