packages feed

crypton-x509-1.8.0: Data/X509/OID.hs

-- |
-- Module      : Data.X509.OID
-- License     : BSD-style
-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
-- Stability   : experimental
-- Portability : unknown
module Data.X509.OID (
    OIDTable,
    lookupByOID,
    lookupOID,
    curvesOIDTable,
) where

import Control.Applicative
import Crypto.PubKey.ECC.Types
import Data.ASN1.OID
import Data.List (find)

type OIDTable a = [(a, OID)]

lookupByOID :: OIDTable a -> OID -> Maybe a
lookupByOID table oid = fst <$> find ((==) oid . snd) table

lookupOID :: Eq a => OIDTable a -> a -> Maybe OID
lookupOID table a = lookup a table

curvesOIDTable :: OIDTable CurveName
curvesOIDTable =
    [ (SEC_p112r1, [1, 3, 132, 0, 6])
    , (SEC_p112r2, [1, 3, 132, 0, 7])
    , (SEC_p128r1, [1, 3, 132, 0, 28])
    , (SEC_p128r2, [1, 3, 132, 0, 29])
    , (SEC_p160k1, [1, 3, 132, 0, 9])
    , (SEC_p160r1, [1, 3, 132, 0, 8])
    , (SEC_p160r2, [1, 3, 132, 0, 30])
    , (SEC_p192k1, [1, 3, 132, 0, 31])
    , (SEC_p192r1, [1, 2, 840, 10045, 3, 1, 1])
    , (SEC_p224k1, [1, 3, 132, 0, 32])
    , (SEC_p224r1, [1, 3, 132, 0, 33])
    , (SEC_p256k1, [1, 3, 132, 0, 10])
    , (SEC_p256r1, [1, 2, 840, 10045, 3, 1, 7])
    , (SEC_p384r1, [1, 3, 132, 0, 34])
    , (SEC_p521r1, [1, 3, 132, 0, 35])
    , (SEC_t113r1, [1, 3, 132, 0, 4])
    , (SEC_t113r2, [1, 3, 132, 0, 5])
    , (SEC_t131r1, [1, 3, 132, 0, 22])
    , (SEC_t131r2, [1, 3, 132, 0, 23])
    , (SEC_t163k1, [1, 3, 132, 0, 1])
    , (SEC_t163r1, [1, 3, 132, 0, 2])
    , (SEC_t163r2, [1, 3, 132, 0, 15])
    , (SEC_t193r1, [1, 3, 132, 0, 24])
    , (SEC_t193r2, [1, 3, 132, 0, 25])
    , (SEC_t233k1, [1, 3, 132, 0, 26])
    , (SEC_t233r1, [1, 3, 132, 0, 27])
    , (SEC_t239k1, [1, 3, 132, 0, 3])
    , (SEC_t283k1, [1, 3, 132, 0, 16])
    , (SEC_t283r1, [1, 3, 132, 0, 17])
    , (SEC_t409k1, [1, 3, 132, 0, 36])
    , (SEC_t409r1, [1, 3, 132, 0, 37])
    , (SEC_t571k1, [1, 3, 132, 0, 38])
    , (SEC_t571r1, [1, 3, 132, 0, 39])
    ]