[tests] add first P256 test

This commit is contained in:
Vincent Hanquez 2015-05-30 10:38:39 +01:00
parent b9e6bff690
commit e2c1b82234
3 changed files with 39 additions and 0 deletions

View File

@ -254,6 +254,7 @@ Test-Suite test-cryptonite
KAT_PubKey.ECDSA
KAT_PubKey.OAEP
KAT_PubKey.PSS
KAT_PubKey.P256
KAT_PubKey
KAT_RC4
KAT_Scrypt

View File

@ -17,6 +17,7 @@ import KAT_PubKey.DSA
import KAT_PubKey.ECC
import KAT_PubKey.ECDSA
import Utils
import qualified KAT_PubKey.P256 as P256
data VectorMgf = VectorMgf { seed :: ByteString
, dbMask :: ByteString
@ -39,6 +40,7 @@ tests = testGroup "PubKey"
, dsaTests
, eccTests
, ecdsaTests
, P256.tests
]
--newKats = [ eccKatTests ]

36
tests/KAT_PubKey/P256.hs Normal file
View File

@ -0,0 +1,36 @@
{-# LANGUAGE OverloadedStrings #-}
module KAT_PubKey.P256 (tests) where
import Control.Arrow (second)
import qualified Crypto.PubKey.ECC.Types as ECC
import qualified Crypto.PubKey.ECC.Prim as ECC
import qualified Crypto.PubKey.ECC.P256 as P256
import Test.Tasty.KAT
import Test.Tasty.KAT.FileLoader
import Data.ByteArray (Bytes)
import Crypto.Number.Serialize (i2ospOf)
import Crypto.Error
import Imports
tests = testGroup "P256"
[ testGroup "scalar"
[ testProperty "marshalling" $ \(Positive r') ->
let r = r' `mod` curveN
rBytes = i2ospScalar r
in case P256.scalarFromBinary rBytes of
CryptoFailed err -> error (show err)
CryptoPassed scalar -> rBytes `propertyEq` P256.scalarToBinary scalar
]
]
where
curve = ECC.getCurveByName ECC.SEC_p256r1
curveN = ECC.ecc_n . ECC.common_curve $ curve
i2ospScalar :: Integer -> Bytes
i2ospScalar i =
case i2ospOf 32 i of
Nothing -> error "invalid size of P256 scalar"
Just b -> b