{-# LANGUAGE OverloadedStrings #-}

module Network.DomainAuth.DKIM.Types where

import Data.ByteString (ByteString)
import Network.DNS
import Network.DomainAuth.Mail

----------------------------------------------------------------

-- | Canonicalized key for DKIM-Signature:.
dkimFieldKey :: CanonFieldKey
dkimFieldKey :: CanonFieldKey
dkimFieldKey = CanonFieldKey
"dkim-signature"

----------------------------------------------------------------

data DkimSigAlgo = RSA_SHA1 | RSA_SHA256 deriving (DkimSigAlgo -> DkimSigAlgo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DkimSigAlgo -> DkimSigAlgo -> Bool
$c/= :: DkimSigAlgo -> DkimSigAlgo -> Bool
== :: DkimSigAlgo -> DkimSigAlgo -> Bool
$c== :: DkimSigAlgo -> DkimSigAlgo -> Bool
Eq,Int -> DkimSigAlgo -> ShowS
[DkimSigAlgo] -> ShowS
DkimSigAlgo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DkimSigAlgo] -> ShowS
$cshowList :: [DkimSigAlgo] -> ShowS
show :: DkimSigAlgo -> String
$cshow :: DkimSigAlgo -> String
showsPrec :: Int -> DkimSigAlgo -> ShowS
$cshowsPrec :: Int -> DkimSigAlgo -> ShowS
Show)
data DkimCanonAlgo = DKIM_SIMPLE | DKIM_RELAXED deriving (DkimCanonAlgo -> DkimCanonAlgo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DkimCanonAlgo -> DkimCanonAlgo -> Bool
$c/= :: DkimCanonAlgo -> DkimCanonAlgo -> Bool
== :: DkimCanonAlgo -> DkimCanonAlgo -> Bool
$c== :: DkimCanonAlgo -> DkimCanonAlgo -> Bool
Eq,Int -> DkimCanonAlgo -> ShowS
[DkimCanonAlgo] -> ShowS
DkimCanonAlgo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DkimCanonAlgo] -> ShowS
$cshowList :: [DkimCanonAlgo] -> ShowS
show :: DkimCanonAlgo -> String
$cshow :: DkimCanonAlgo -> String
showsPrec :: Int -> DkimCanonAlgo -> ShowS
$cshowsPrec :: Int -> DkimCanonAlgo -> ShowS
Show)

data DKIM = DKIM {
    DKIM -> CanonFieldKey
dkimVersion     :: ByteString
  , DKIM -> DkimSigAlgo
dkimSigAlgo     :: DkimSigAlgo
  , DKIM -> CanonFieldKey
dkimSignature   :: ByteString
  , DKIM -> CanonFieldKey
dkimBodyHash    :: ByteString
  , DKIM -> DkimCanonAlgo
dkimHeaderCanon :: DkimCanonAlgo
  , DKIM -> DkimCanonAlgo
dkimBodyCanon   :: DkimCanonAlgo
  , DKIM -> CanonFieldKey
dkimDomain0     :: ByteString
  , DKIM -> [CanonFieldKey]
dkimFields      :: [CanonFieldKey]
  , DKIM -> Maybe Int
dkimLength      :: Maybe Int
  , DKIM -> CanonFieldKey
dkimSelector0   :: ByteString
  } deriving (DKIM -> DKIM -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DKIM -> DKIM -> Bool
$c/= :: DKIM -> DKIM -> Bool
== :: DKIM -> DKIM -> Bool
$c== :: DKIM -> DKIM -> Bool
Eq,Int -> DKIM -> ShowS
[DKIM] -> ShowS
DKIM -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DKIM] -> ShowS
$cshowList :: [DKIM] -> ShowS
show :: DKIM -> String
$cshow :: DKIM -> String
showsPrec :: Int -> DKIM -> ShowS
$cshowsPrec :: Int -> DKIM -> ShowS
Show)

-- | Getting of the value of the \"d\" tag in DKIM-Signature:.
dkimDomain :: DKIM -> Domain
dkimDomain :: DKIM -> CanonFieldKey
dkimDomain = DKIM -> CanonFieldKey
dkimDomain0

-- | Getting of the value of the \"s\" tag in DKIM-Signature:.
dkimSelector :: DKIM -> ByteString
dkimSelector :: DKIM -> CanonFieldKey
dkimSelector = DKIM -> CanonFieldKey
dkimSelector0