web3-crypto-1.0.0.0: tests/Crypto/Random/Test/HmacDrbgSpec.hs
{-# LANGUAGE OverloadedStrings #-}
-- Inspired by https://github.com/indutny/hmac-drbg
module Crypto.Random.Test.HmacDrbgSpec where
import Crypto.Hash.Algorithms (SHA256)
import Crypto.Random (randomBytesGenerate)
import Data.ByteString (ByteString)
import Test.Hspec
import Crypto.Random.HmacDrbg
import Data.ByteArray.HexString (HexString)
spec :: Spec
spec = parallel $ do
describe "HMAC-DRBG-SHA256" $ do
it "indutny/hmac-drbg test vectors" $ do
let doDrbg :: ByteString -> HexString
doDrbg seed = fst (randomBytesGenerate 32 (initialize seed) :: (HexString, HmacDrbg SHA256))
doDrbg "totally random0123456789secret noncemy drbg"
`shouldBe` "018ec5f8e08c41e5ac974eb129ac297c5388ee1864324fa13d9b15cf98d9a157"
doDrbg "totally random0123456789secret nonce"
`shouldBe` "ed5d61ecf0ef38258e62f03bbb49f19f2cd07ba5145a840d83b134d5963b3633"