opcua_crypto/
thumbprint.rs1use opcua_types::ByteString;
7
8#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
12pub struct Thumbprint {
13 value: [u8; Thumbprint::THUMBPRINT_SIZE],
16}
17
18impl Into<ByteString> for Thumbprint {
19 fn into(self) -> ByteString {
20 ByteString::from(&self.value)
21 }
22}
23
24impl Thumbprint {
25 pub const THUMBPRINT_SIZE: usize = 20;
26
27 pub fn new(digest: &[u8]) -> Thumbprint {
29 if digest.len() != Thumbprint::THUMBPRINT_SIZE {
30 panic!("Thumbprint is the wrong length, {}", digest.len());
31 }
32 let mut value = [0u8; Thumbprint::THUMBPRINT_SIZE];
33 value.clone_from_slice(digest);
34 Thumbprint { value }
35 }
36
37 pub fn as_byte_string(&self) -> ByteString {
38 ByteString::from(&self.value)
39 }
40
41 pub fn as_hex_string(&self) -> String {
43 let mut hex_string = String::with_capacity(self.value.len() * 2);
44 for b in self.value.iter() {
45 hex_string.push_str(&format!("{:02x}", b))
46 }
47 hex_string
48 }
49
50 pub fn value(&self) -> &[u8] {
52 &self.value[..]
53 }
54}