mini_mail_auth/dkim/
mod.rs1pub mod builder;
2pub mod canonicalize;
3pub mod headers;
4pub mod sign;
5
6use crate::common::crypto::{Algorithm, SigningKey};
7use std::marker::PhantomData;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
12pub enum Canonicalization {
13 #[default]
14 Relaxed,
15 Simple,
16}
17
18#[derive(Debug, PartialEq, Eq, Clone, Default)]
19pub struct Signature {
20 pub v: u32,
21 pub a: Algorithm,
22 pub d: String,
23 pub s: String,
24 pub b: Vec<u8>,
25 pub bh: Vec<u8>,
26 pub h: Vec<String>,
27 pub l: u64,
28 pub t: u64,
29 pub ch: Canonicalization,
30 pub cb: Canonicalization,
31}
32
33#[derive(Debug, PartialEq, Eq, Clone, Default)]
36pub struct DkimSigner<T: SigningKey, State = NeedDomain> {
37 pub(crate) _state: PhantomData<State>,
38 pub(crate) key: T,
39 pub(crate) template: Signature,
40}
41
42pub struct NeedDomain;
43pub struct NeedSelector;
44pub struct NeedHeaders;
45pub struct Done;