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