1-- |
2-- Module      : Data.X509.OID
3-- License     : BSD-style
4-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
5-- Stability   : experimental
6-- Portability : unknown
7--
8module Data.X509.OID
9    ( OIDTable
10    , lookupByOID
11    , lookupOID
12    , curvesOIDTable
13    ) where
14
15import Control.Applicative
16import Crypto.PubKey.ECC.Types
17import Data.ASN1.OID
18import Data.List (find)
19
20type OIDTable a = [(a,OID)]
21
22lookupByOID :: OIDTable a -> OID -> Maybe a
23lookupByOID table oid = fst <$> find ((==) oid . snd) table
24
25lookupOID :: Eq a => OIDTable a -> a -> Maybe OID
26lookupOID table a = lookup a table
27
28curvesOIDTable :: OIDTable CurveName
29curvesOIDTable =
30    [ (SEC_p112r1, [1,3,132,0,6])
31    , (SEC_p112r2, [1,3,132,0,7])
32    , (SEC_p128r1, [1,3,132,0,28])
33    , (SEC_p128r2, [1,3,132,0,29])
34    , (SEC_p160k1, [1,3,132,0,9])
35    , (SEC_p160r1, [1,3,132,0,8])
36    , (SEC_p160r2, [1,3,132,0,30])
37    , (SEC_p192k1, [1,3,132,0,31])
38    , (SEC_p192r1, [1,2,840,10045,3,1,1])
39    , (SEC_p224k1, [1,3,132,0,32])
40    , (SEC_p224r1, [1,3,132,0,33])
41    , (SEC_p256k1, [1,3,132,0,10])
42    , (SEC_p256r1, [1,2,840,10045,3,1,7])
43    , (SEC_p384r1, [1,3,132,0,34])
44    , (SEC_p521r1, [1,3,132,0,35])
45    , (SEC_t113r1, [1,3,132,0,4])
46    , (SEC_t113r2, [1,3,132,0,5])
47    , (SEC_t131r1, [1,3,132,0,22])
48    , (SEC_t131r2, [1,3,132,0,23])
49    , (SEC_t163k1, [1,3,132,0,1])
50    , (SEC_t163r1, [1,3,132,0,2])
51    , (SEC_t163r2, [1,3,132,0,15])
52    , (SEC_t193r1, [1,3,132,0,24])
53    , (SEC_t193r2, [1,3,132,0,25])
54    , (SEC_t233k1, [1,3,132,0,26])
55    , (SEC_t233r1, [1,3,132,0,27])
56    , (SEC_t239k1, [1,3,132,0,3])
57    , (SEC_t283k1, [1,3,132,0,16])
58    , (SEC_t283r1, [1,3,132,0,17])
59    , (SEC_t409k1, [1,3,132,0,36])
60    , (SEC_t409r1, [1,3,132,0,37])
61    , (SEC_t571k1, [1,3,132,0,38])
62    , (SEC_t571r1, [1,3,132,0,39])
63    ]
64