Skip to main content

age_setup/
public_key.rs

1use crate::errors::Result;
2use std::fmt;
3#[derive(Debug, Clone)]
4pub struct PublicKey(String);
5impl PublicKey {
6    pub fn new(raw: String) -> Result<Self> {
7        crate::validation::validate_age_prefix(&raw)?;
8        Ok(Self(raw))
9    }
10    #[must_use]
11    pub fn expose(&self) -> &str {
12        &self.0
13    }
14}
15impl fmt::Display for PublicKey {
16    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17        write!(f, "{}", self.0)
18    }
19}
20impl AsRef<str> for PublicKey {
21    fn as_ref(&self) -> &str {
22        &self.0
23    }
24}
25#[cfg(test)]
26mod tests {
27    use super::*;
28    #[test]
29    fn valid() {
30        let pk = PublicKey::new("age1test".into()).unwrap();
31        assert_eq!(pk.expose(), "age1test");
32    }
33    #[test]
34    fn invalid() {
35        assert!(PublicKey::new("bad".into()).is_err());
36    }
37}