dns_message_parser/rr/
rfc_3658.rs

1use super::Class;
2use crate::DomainName;
3use hex::encode;
4use std::fmt::{Display, Formatter, Result as FmtResult};
5
6try_from_enum_to_integer! {
7    #[repr(u8)]
8    #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
9    pub enum SSHFPAlgorithm {
10        Reserved = 0,
11        RSA = 1,
12        DSS = 2,
13    }
14}
15
16try_from_enum_to_integer! {
17    #[repr(u8)]
18    #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
19    pub enum SSHFPType {
20        Reserved = 0,
21        Sha1 = 1,
22    }
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Hash)]
26pub struct SSHFP {
27    pub domain_name: DomainName,
28    pub ttl: u32,
29    pub class: Class,
30    pub algorithm: SSHFPAlgorithm,
31    pub type_: SSHFPType,
32    pub fp: Vec<u8>,
33}
34
35impl_to_type!(SSHFP);
36
37impl Display for SSHFP {
38    fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
39        write!(
40            f,
41            "{} {} {} SSHFP {} {} {}",
42            self.domain_name,
43            self.ttl,
44            self.class,
45            self.algorithm,
46            self.type_,
47            encode(self.fp.as_slice()),
48        )
49    }
50}