1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#![forbid(unsafe_code)]

use crate::sessionpolicy::SessionPolicy;
use crate::token::Token;
use std::fmt;

#[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub struct ConnectionSignature {
    pub token: Token,
}

impl fmt::Display for ConnectionSignature {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        self.token.fmt(f)
    }
}

impl ConnectionSignature {
    pub fn new(secret: &str) -> ConnectionSignature {
        ConnectionSignature {
            token: Token::new_from_str(secret),
        }
    }

    pub fn new_from_policy(policy: &SessionPolicy) -> ConnectionSignature {
        ConnectionSignature {
            token: Token::new(&policy.salt),
        }
    }

    pub fn get_token(&self) -> Token {
        self.token.clone()
    }
}