You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by iv...@apache.org on 2026/10/09 06:57:27 UTC
(teaclave-trustzone-sdk) 02/03: secure_db, rustls_provider: simplify storage and time conversions
This is an automated email from the ASF dual-hosted git repository.
ivila pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/teaclave-trustzone-sdk.git
commit 4494cec557d3965da07122828f92cf03ecc329ac
Author: ivila <39...@qq.com>
AuthorDate: Fri Oct 9 11:11:54 2026 +0800
secure_db, rustls_provider: simplify storage and time conversions
Rewrite open, put, get, and delete without nested matches, using
map_err(...)? for storage errors and ok_or_else(...) for missing
values, and chain the checked_mul/checked_add overflow checks into
map. Error messages and returned values are unchanged.
---
crates/rustls_provider/src/lib.rs | 12 ++------
crates/secure_db/src/db.rs | 64 ++++++++++++++-------------------------
2 files changed, 25 insertions(+), 51 deletions(-)
diff --git a/crates/rustls_provider/src/lib.rs b/crates/rustls_provider/src/lib.rs
index 6c8ce3d..8eab38a 100644
--- a/crates/rustls_provider/src/lib.rs
+++ b/crates/rustls_provider/src/lib.rs
@@ -59,17 +59,11 @@ impl TimeProvider for ReeTimeProvider {
let seconds = time.seconds as u64;
let millis = time.millis as u64;
- // Create UnixTime from seconds and milliseconds, check overflow
- let total_millis = match seconds
+ // Create UnixTime from seconds and milliseconds, checking overflow
+ seconds
.checked_mul(1000)
.and_then(|ms| ms.checked_add(millis))
- {
- Some(total) => total,
- None => return None, // Return None if overflow occurs
- };
- Some(UnixTime::since_unix_epoch(Duration::from_millis(
- total_millis,
- )))
+ .map(|total| UnixTime::since_unix_epoch(Duration::from_millis(total)))
}
}
diff --git a/crates/secure_db/src/db.rs b/crates/secure_db/src/db.rs
index a5b08c6..47072df 100644
--- a/crates/secure_db/src/db.rs
+++ b/crates/secure_db/src/db.rs
@@ -16,7 +16,7 @@
// under the License.
use crate::{delete_from_secure_storage, load_from_secure_storage, save_in_secure_storage};
-use anyhow::{bail, ensure, Result};
+use anyhow::{anyhow, ensure, Result};
use hashbrown::HashSet;
use std::collections::HashMap;
@@ -32,62 +32,42 @@ pub struct SecureStorageDb {
impl SecureStorageDb {
pub fn open(name: String) -> Result<Self> {
- match load_from_secure_storage(name.as_bytes())? {
- Some(data) => {
- let key_list = bincode::deserialize(&data)?;
- Ok(Self { name, key_list })
- }
+ let key_list = match load_from_secure_storage(name.as_bytes())? {
+ Some(data) => bincode::deserialize(&data)?,
None => {
// create new db
- Ok(Self {
- name,
- // Note: `std::collections::HashSet` was replaced with
- // `hashbrown::HashSet`, due to a write permission fault
- // observed during testing. The exact cause of the issue is
- // unclear, but using `hashbrown::HashSet` resolves it.
- key_list: HashSet::new(),
- })
+ //
+ // Note: `std::collections::HashSet` was replaced with
+ // `hashbrown::HashSet`, due to a write permission fault
+ // observed during testing. The exact cause of the issue is
+ // unclear, but using `hashbrown::HashSet` resolves it.
+ HashSet::new()
}
- }
+ };
+ Ok(Self { name, key_list })
}
pub fn put(&mut self, key: String, value: Vec<u8>) -> Result<()> {
- match save_in_secure_storage(key.as_bytes(), &value) {
- Ok(_) => {
- self.key_list.insert(key);
- self.store_key_list()?;
- }
- Err(e) => {
- bail!("[+] SecureStorage::insert(): save error: {}", e);
- }
- };
- Ok(())
+ save_in_secure_storage(key.as_bytes(), &value)
+ .map_err(|e| anyhow!("[+] SecureStorage::insert(): save error: {}", e))?;
+ self.key_list.insert(key);
+ self.store_key_list()
}
pub fn get(&self, key: &str) -> Result<Vec<u8>> {
ensure!(self.key_list.contains(key), "Key not found in key list");
- match load_from_secure_storage(key.as_bytes()) {
- Ok(Some(data)) => Ok(data),
- Ok(None) => bail!("[+] SecureStorage::get(): object not found in db"),
- Err(e) => {
- bail!("[+] SecureStorage::get(): load error: {}", e);
- }
- }
+ load_from_secure_storage(key.as_bytes())
+ .map_err(|e| anyhow!("[+] SecureStorage::get(): load error: {}", e))?
+ .ok_or_else(|| anyhow!("[+] SecureStorage::get(): object not found in db"))
}
pub fn delete(&mut self, key: &str) -> Result<()> {
// ensure key must exist
ensure!(self.key_list.contains(key), "Key not found in key list");
- match delete_from_secure_storage(key.as_bytes()) {
- Ok(_) => {
- self.key_list.remove(key);
- self.store_key_list()?;
- }
- Err(e) => {
- bail!("[+] SecureStorage::delete(): delete error: {}", e);
- }
- };
- Ok(())
+ delete_from_secure_storage(key.as_bytes())
+ .map_err(|e| anyhow!("[+] SecureStorage::delete(): delete error: {}", e))?;
+ self.key_list.remove(key);
+ self.store_key_list()
}
pub fn clear(&mut self) -> Result<()> {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org