1use toad_macros::rfc_7252_doc;
2
3#[doc = rfc_7252_doc!("5.3.1")]
4#[derive(Copy, Clone, Hash, PartialEq, PartialOrd, Debug, Eq, Ord)]
5pub struct Token(pub tinyvec::ArrayVec<[u8; 8]>);
6
7impl Token {
8 pub fn opaque(data: &[u8]) -> Token {
18 use blake2::digest::consts::U8;
19 use blake2::{Blake2b, Digest};
20
21 let mut digest = Blake2b::<U8>::new();
22 digest.update(data);
23 Token(Into::<[u8; 8]>::into(digest.finalize()).into())
24 }
25
26 pub fn as_bytes(&self) -> &[u8] {
28 &self.0
29 }
30}