module Network.TLS.Extension.EC (
CurveName(..)
, toCurveName
, fromCurveName
) where
import Crypto.PubKey.ECC.Types (CurveName(..))
import Data.Word (Word16)
toCurveName :: Word16 -> Maybe CurveName
toCurveName 1 = Just SEC_t163k1
toCurveName 2 = Just SEC_t163r1
toCurveName 3 = Just SEC_t163r2
toCurveName 4 = Just SEC_t193r1
toCurveName 5 = Just SEC_t193r2
toCurveName 6 = Just SEC_t233k1
toCurveName 7 = Just SEC_t233r1
toCurveName 8 = Just SEC_t239k1
toCurveName 9 = Just SEC_t283k1
toCurveName 10 = Just SEC_t283r1
toCurveName 11 = Just SEC_t409k1
toCurveName 12 = Just SEC_t409r1
toCurveName 13 = Just SEC_t571k1
toCurveName 14 = Just SEC_t571r1
toCurveName 15 = Just SEC_p160k1
toCurveName 16 = Just SEC_p160r1
toCurveName 17 = Just SEC_p160r2
toCurveName 18 = Just SEC_p192k1
toCurveName 19 = Just SEC_p192r1
toCurveName 20 = Just SEC_p224k1
toCurveName 21 = Just SEC_p224r1
toCurveName 22 = Just SEC_p256k1
toCurveName 23 = Just SEC_p256r1
toCurveName 24 = Just SEC_p384r1
toCurveName 25 = Just SEC_p521r1
toCurveName _ = Nothing
fromCurveName :: CurveName -> Maybe Word16
fromCurveName SEC_t163k1 = Just 1
fromCurveName SEC_t163r1 = Just 2
fromCurveName SEC_t163r2 = Just 3
fromCurveName SEC_t193r1 = Just 4
fromCurveName SEC_t193r2 = Just 5
fromCurveName SEC_t233k1 = Just 6
fromCurveName SEC_t233r1 = Just 7
fromCurveName SEC_t239k1 = Just 8
fromCurveName SEC_t283k1 = Just 9
fromCurveName SEC_t283r1 = Just 10
fromCurveName SEC_t409k1 = Just 11
fromCurveName SEC_t409r1 = Just 12
fromCurveName SEC_t571k1 = Just 13
fromCurveName SEC_t571r1 = Just 14
fromCurveName SEC_p160k1 = Just 15
fromCurveName SEC_p160r1 = Just 16
fromCurveName SEC_p160r2 = Just 17
fromCurveName SEC_p192k1 = Just 18
fromCurveName SEC_p192r1 = Just 19
fromCurveName SEC_p224k1 = Just 20
fromCurveName SEC_p224r1 = Just 21
fromCurveName SEC_p256k1 = Just 22
fromCurveName SEC_p256r1 = Just 23
fromCurveName SEC_p384r1 = Just 24
fromCurveName SEC_p521r1 = Just 25
fromCurveName _ = Nothing