feat: update local-mini-kms
This commit is contained in:
32
src/db.rs
32
src/db.rs
@@ -1,5 +1,12 @@
|
||||
use rusqlite::{Connection, params};
|
||||
use rust_util::{debugging, information, opt_result, success, XResult};
|
||||
use rust_util::{debugging, information, opt_result, simple_error, success, XResult};
|
||||
|
||||
pub const DEFAULT_MASTER_KEY_VERIFICATION_KEY: &'static str = "__master_verification_key";
|
||||
|
||||
pub struct Key {
|
||||
name: String,
|
||||
encrypted_key: String,
|
||||
}
|
||||
|
||||
pub fn open_db(db: &str) -> XResult<Connection> {
|
||||
let con = opt_result!(Connection::open(db), "Open sqlite db: {}, failed: {}", db);
|
||||
@@ -24,4 +31,27 @@ pub fn init_db(conn: &Connection) -> XResult<bool> {
|
||||
"##, ())?;
|
||||
success!("Table keys created");
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
pub fn insert_key(conn: &Connection, key: &Key) -> XResult<()> {
|
||||
let _ = conn.execute(
|
||||
"INSERT INTO keys (name, value) VALUES (?1, ?2)",
|
||||
(&key.name, &key.encrypted_key),
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn find_key(conn: &Connection, name: &str) -> XResult<Option<Key>> {
|
||||
let mut stmt = conn.prepare("SELECT id, name, value FROM keys WHERE name = ?1")?;
|
||||
let mut key_iter = stmt.query_map(params![name], |row| {
|
||||
Ok(Key {
|
||||
name: row.get(1)?,
|
||||
encrypted_key: row.get(2)?,
|
||||
})
|
||||
})?;
|
||||
match key_iter.next() {
|
||||
None => Ok(None),
|
||||
Some(Ok(r)) => Ok(Some(r)),
|
||||
Some(Err(e)) => simple_error!("Find key failed: {}", e),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user