dns_message_parser/rr/
rfc_3658.rs1use 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}