{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
module Crypto.Store.CMS.Type
( ContentType(..)
) where
import Data.ASN1.OID
import Crypto.Store.CMS.Util
data ContentType = DataType
| SignedDataType
| EnvelopedDataType
| DigestedDataType
| EncryptedDataType
| AuthenticatedDataType
| AuthEnvelopedDataType
deriving (Show,Eq)
instance Enumerable ContentType where
values = [ DataType
, SignedDataType
, EnvelopedDataType
, DigestedDataType
, EncryptedDataType
, AuthenticatedDataType
, AuthEnvelopedDataType
]
instance OIDable ContentType where
getObjectID DataType = [1,2,840,113549,1,7,1]
getObjectID SignedDataType = [1,2,840,113549,1,7,2]
getObjectID EnvelopedDataType = [1,2,840,113549,1,7,3]
getObjectID DigestedDataType = [1,2,840,113549,1,7,5]
getObjectID EncryptedDataType = [1,2,840,113549,1,7,6]
getObjectID AuthenticatedDataType = [1,2,840,113549,1,9,16,1,2]
getObjectID AuthEnvelopedDataType = [1,2,840,113549,1,9,16,1,23]
instance OIDNameable ContentType where
fromObjectID oid = unOIDNW <$> fromObjectID oid