botan-low-0.1.0.0: test/Test/Botan/Low/PubKey/RSA.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.Botan.Low.PubKey.RSA (tests) where
import Botan.Low.MPI
import Botan.Low.PubKey
import Botan.Low.PubKey.RSA
import Botan.Low.RNG
import Data.ByteString
import Test.Hspec
import Test.Tasty
import Test.Tasty.Hspec
import Test.Util.ByteString
import Test.Util.Hspec
tests :: IO TestTree
tests = do
specs <- testSpec "spec_rsa" spec_rsa
pure $ testGroup "Test.Botan.Low.PubKey.RSA" [
specs
]
rsaSizes :: [ByteString]
rsaSizes = [ "2048" ]
-- TODO: Consolidate
privKeyField :: PrivKey -> ByteString -> IO MP
privKeyField privKey field = do
mp <- mpInit
privKeyGetField mp privKey field
return mp
-- TODO: Consolidate
pubKeyField :: PubKey -> ByteString -> IO MP
pubKeyField pubKey field = do
mp <- mpInit
pubKeyGetField mp pubKey field
return mp
spec_rsa :: Spec
spec_rsa = testSuite rsaSizes chars $ \ rsaSize -> do
it "privKeyLoadRSA" $ do
rng <- rngInit "system"
privKey <- privKeyCreate "RSA" rsaSize rng
p <- privKeyField privKey "p"
q <- privKeyField privKey "q"
e <- privKeyField privKey "e"
_loadedKey <- privKeyLoadRSA p q e
pass
it "pubKeyLoadRSA" $ do
rng <- rngInit "system"
privKey <- privKeyCreate "RSA" rsaSize rng
pubKey <- privKeyExportPubKey privKey
n <- pubKeyField pubKey "n"
e <- pubKeyField pubKey "e"
_loadedKey <- pubKeyLoadRSA n e
pass