Blame tests/KAT_Argon2.hs
|
Packit |
141393 |
{-# LANGUAGE OverloadedStrings #-}
|
|
Packit |
141393 |
module KAT_Argon2 (tests) where
|
|
Packit |
141393 |
|
|
Packit |
141393 |
import Crypto.Error
|
|
Packit |
141393 |
import qualified Crypto.KDF.Argon2 as Argon2
|
|
Packit |
141393 |
import qualified Data.ByteString as B
|
|
Packit |
141393 |
import Imports
|
|
Packit |
141393 |
|
|
Packit |
141393 |
data KDFVector = KDFVector
|
|
Packit |
141393 |
{ kdfPass :: ByteString
|
|
Packit |
141393 |
, kdfSalt :: ByteString
|
|
Packit |
141393 |
, kdfOptions :: Argon2.Options
|
|
Packit |
141393 |
, kdfResult :: ByteString
|
|
Packit |
141393 |
}
|
|
Packit |
141393 |
|
|
Packit |
141393 |
argon2i_13 :: Argon2.TimeCost -> Argon2.MemoryCost -> Argon2.Options
|
|
Packit |
141393 |
argon2i_13 iters memory = Argon2.Options
|
|
Packit |
141393 |
{ Argon2.iterations = iters
|
|
Packit |
141393 |
, Argon2.memory = memory
|
|
Packit |
141393 |
, Argon2.parallelism = 1
|
|
Packit |
141393 |
, Argon2.variant = Argon2.Argon2i
|
|
Packit |
141393 |
, Argon2.version = Argon2.Version13
|
|
Packit |
141393 |
}
|
|
Packit |
141393 |
|
|
Packit |
141393 |
vectors =
|
|
Packit |
141393 |
[ KDFVector "password" "somesalt" (argon2i_13 2 65536)
|
|
Packit |
141393 |
"\xc1\x62\x88\x32\x14\x7d\x97\x20\xc5\xbd\x1c\xfd\x61\x36\x70\x78\x72\x9f\x6d\xfb\x6f\x8f\xea\x9f\xf9\x81\x58\xe0\xd7\x81\x6e\xd0"
|
|
Packit |
141393 |
]
|
|
Packit |
141393 |
|
|
Packit |
141393 |
kdfTests :: [TestTree]
|
|
Packit |
141393 |
kdfTests = map toKDFTest $ zip is vectors
|
|
Packit |
141393 |
where
|
|
Packit |
141393 |
toKDFTest (i, v) =
|
|
Packit |
141393 |
testCase (show i)
|
|
Packit |
141393 |
(CryptoPassed (kdfResult v) @=? Argon2.hash (kdfOptions v) (kdfPass v) (kdfSalt v) (B.length $ kdfResult v))
|
|
Packit |
141393 |
|
|
Packit |
141393 |
is :: [Int]
|
|
Packit |
141393 |
is = [1..]
|
|
Packit |
141393 |
|
|
Packit |
141393 |
tests = testGroup "Argon2"
|
|
Packit |
141393 |
[ testGroup "KATs" kdfTests
|
|
Packit |
141393 |
]
|