Add missing gree endpoints

This commit is contained in:
Ethan O'Brien
2026-07-26 23:22:23 -05:00
parent 352ff2dbc5
commit 2056511bd1
2 changed files with 51 additions and 3 deletions

View File

@@ -60,13 +60,28 @@ fn vacuum_database() {
DATABASE.lock_and_exec("VACUUM", params!());
}
pub fn get_user_cert(uuid: &str) -> Option<(i64, String)> {
let user_id = DATABASE.lock_and_select("SELECT user_id FROM users WHERE uuid=?1;", params!(uuid)).ok()?.parse::<i64>().ok()?;
let cert = DATABASE.lock_and_select("SELECT cert FROM users WHERE uuid=?1;", params!(uuid)).ok()?;
Some((user_id, cert))
}
pub fn is_registered(uuid: &str) -> bool {
match DATABASE.lock_and_select("SELECT cert FROM users WHERE uuid=?1;", params!(uuid)) {
Ok(cert) => cert != "none",
Err(_) => false
match get_user_cert(uuid) {
Some((_, cert)) => pem::parse(&cert).is_ok(),
None => false
}
}
pub fn verify_fingerprint(uuid: &str, fingerprint: &str, cert: &str) -> bool {
let Ok(signature) = general_purpose::STANDARD.decode(fingerprint) else {
return false;
};
verify_signature(&signature, uuid.as_bytes(), cert)
}
fn verify_signature(signature: &[u8], message: &[u8], public_key: &str) -> bool {
let Ok(pem) = pem::parse(public_key) else {
return false;