netstack/security/
connection_token.rs

1const CONNECTION_TOKEN_SIZE: usize = 32;
2
3#[derive(Debug, Eq, PartialEq, Hash, Clone)]
4pub struct ConnectionToken([u8; CONNECTION_TOKEN_SIZE]);
5
6impl ConnectionToken {
7    pub fn from_slice(slice: &[u8]) -> Result<Self, ()> {
8        if slice.len() != CONNECTION_TOKEN_SIZE {
9            // TODO proper error
10            return Err(());
11        }
12
13        let mut bytes = [0; CONNECTION_TOKEN_SIZE];
14        for i in 0..CONNECTION_TOKEN_SIZE {
15            bytes[i] = slice[i];
16        }
17
18        Ok(Self(bytes))
19    }
20
21    pub fn from_bytes(bytes: [u8; CONNECTION_TOKEN_SIZE]) -> Self {
22        Self(bytes)
23    }
24
25    pub fn get_bytes(&self) -> &[u8] {
26        &self.0
27    }
28}