signet 0.0.1

code signing tool
Documentation
use rand_core::{OsRng, RngCore};
use serde::{Deserialize, Serialize};
use zeroize::Zeroizing;
use crate::platform::Error;
use crate::platform::secret::{create, lookup};

#[derive(Debug, Deserialize, Serialize)]
pub struct Secret {
    pub name: String,
}

impl Secret {
    pub fn create(value: Zeroizing<String>) -> Result<Self, Error> {
        let mut name = [0u8; 16];
        OsRng.fill_bytes(&mut name);

        let name = hex::encode(name);
        create(&name, value)?;

        Ok(Self { name })
    }

    pub fn lookup(&self) -> Result<Zeroizing<String>, Error> {
        lookup(&self.name)
    }
}