packages feed

domain-auth-0.2.4: Network/DomainAuth/DK/Types.hs

{-# LANGUAGE OverloadedStrings #-}

module Network.DomainAuth.DK.Types where

import Data.ByteString (ByteString)
import qualified Data.Map as M
import Network.DNS
import Network.DomainAuth.Mail

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

-- | Canonicalized key for DomainKey-Signature:.
dkFieldKey :: CanonFieldKey
dkFieldKey = "domainkey-signature"

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

data DkAlgorithm = DK_RSA_SHA1 deriving (Eq, Show)
data DkCanonAlgo = DK_SIMPLE | DK_NOFWS deriving (Eq, Show)

-- data DkQuery = DK_DNS deriving (Eq,Show)
type DkFields = M.Map ByteString Bool -- Key Bool

-- | Abstract type for DomainKey-Signature:
data DK = DK
    { dkAlgorithm :: DkAlgorithm
    , dkSignature :: ByteString
    , dkCanonAlgo :: DkCanonAlgo
    , dkDomain0 :: ByteString
    , dkFields :: Maybe DkFields
    , --  , dkQuery     :: Maybe DkQuery -- gmail does not provide, sigh
      dkSelector0 :: ByteString
    }
    deriving (Eq, Show)

-- | Getting of the value of the \"d\" tag in DomainKey-Signature:.
dkDomain :: DK -> Domain
dkDomain = dkDomain0

-- | Getting of the value of the \"s\" tag in DomainKey-Signature:.
dkSelector :: DK -> ByteString
dkSelector = dkSelector0