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