RSA 1.0.4 → 1.0.5
raw patch · 2 files changed
+56/−29 lines, 2 filesdep +test-frameworkdep +test-framework-quickcheckdep +test-framework-quickcheck2dep ~SHAdep ~basedep ~pureMD5PVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: test-framework, test-framework-quickcheck, test-framework-quickcheck2
Dependency ranges changed: SHA, base, pureMD5
API changes (from Hackage documentation)
- Codec.Crypto.RSA: ha_MD5 :: HashInfo
- Codec.Crypto.RSA: instance Binary PrivateKey
- Codec.Crypto.RSA: instance Binary PublicKey
Files
RSA.cabal view
@@ -1,6 +1,6 @@ name: RSA category: Cryptography, Codec-version: 1.0.4+version: 1.0.5 license: BSD3 license-file: LICENSE author: Adam Wick <awick@galois.com>@@ -29,15 +29,27 @@ Flag QuickCheck1 Description: Whether this is QuickCheck 1 or not+ Default: False +Flag OldBase+ Description: Whether or not to use base 3 (default: no)+ Default: False+ Library- build-depends: base >= 3 && < 5, bytestring, SHA, random- GHC-Options: -O2 -Wall -fno-ignore-asserts -fno-warn-orphans + build-depends: bytestring, random+ GHC-Options: -O2 -Wall -fno-ignore-asserts -fno-warn-orphans+ if flag(OldBase)+ build-depends: base >= 3 && < 4, SHA < 1.4.1+ else+ build-depends: base >= 4 && < 5, SHA if flag(UseBinary) build-depends: binary CPP-Options: -DUSE_BINARY if flag(IncludeMD5) && flag(UseBinary)- build-depends: pureMD5+ if flag(OldBase)+ build-depends: pureMD5 < 1.1+ else+ build-depends: pureMD5 CPP-Options: -DINCLUDE_MD5 exposed-modules: Codec.Crypto.RSA extensions: CPP, BangPatterns, ScopedTypeVariables@@ -46,12 +58,16 @@ if flag(SkipTests) Buildable: False else- build-depends: base >= 3 && < 5, bytestring, SHA >= 1.0.1+ if flag(OldBase)+ build-depends: base >= 3 && < 4, SHA < 1.4.1+ else+ build-depends: base >= 4 && < 5, SHA+ build-depends: bytestring, test-framework >= 0.3 && < 0.4 if flag(QuickCheck1)- build-depends: QuickCheck < 2+ build-depends: QuickCheck < 2, test-framework-quickcheck >= 0.2.6 && < 0.3 CPP-Options: -DQUICKCHECK1 else- build-depends: QuickCheck >= 2 && < 3+ build-depends: QuickCheck >= 2 && < 3, test-framework-quickcheck2 >= 0.2.7 && < 0.3 GHC-Options: -O2 -Wall -fno-ignore-asserts -fno-warn-orphans CPP-Options: -DRSA_TEST Main-Is: Test.hs
Test.hs view
@@ -4,10 +4,16 @@ import qualified Data.ByteString.Lazy as BS import Data.Digest.Pure.SHA import Data.Word-import System.IO import System.Random import Test.QuickCheck +import Test.Framework (defaultMain, testGroup, Test)+#ifdef QUICKCHECK1+import Test.Framework.Providers.QuickCheck (testProperty)+#else+import Test.Framework.Providers.QuickCheck2 (testProperty)+#endif+ -- -------------------------------------------------------------------------- data KeyPair = KP1K PublicKey PrivateKey@@ -208,31 +214,36 @@ -- -------------------------------------------------------------------------- -run_test :: Testable a => String -> a -> IO ()-run_test n t = putStr (" " ++ n ++ " ... ") >> hFlush stdout >> quickCheck t- main :: IO () main = do- g <- getStdGen putStrLn "\nWARNING WARNING WARNING" putStrLn "This test suite takes a very long time to run. If you're in a " putStrLn "hurry, Control-C is your friend."- putStrLn "WARNING WARNING WARNING"- putStrLn "\nTesting basic helper functions"- run_test "prop_chunkify_works" prop_chunkify_works- run_test "prop_mod_exp_works" prop_mod_exp_works- run_test "prop_mod_inv_works" prop_mod_inv_works- putStrLn "\nTesting RSA core functions"- run_test "prop_i2o2i_identity" prop_i2o2i_identity- run_test "prop_o2i2o_identity" prop_o2i2o_identity- run_test "prop_ep_dp_identity" prop_ep_dp_identity- run_test "prop_sp_vp_identity" prop_sp_vp_identity- putStrLn "\nTesting fixed-width RSA padding functions:"- run_test "prop_oaep_inverts" prop_oaep_inverts- run_test "prop_pkcs_inverts" $ prop_pkcs_inverts g- run_test "prop_sign_works" prop_sign_works- putStrLn "\nTesting top-level functions work:"- run_test "prop_encrypt_inverts" $ prop_encrypt_inverts g- run_test "prop_encrypt_plus_inverts" $ prop_encrypt_plus_inverts g+ putStrLn "WARNING WARNING WARNING\n" + g <- getStdGen+ defaultMain $ tests g +tests :: StdGen -> [Test]+tests g = [+ testGroup "Testing basic helper functions" [+ testProperty "prop_chunkify_works" prop_chunkify_works,+ testProperty "prop_mod_exp_works" prop_mod_exp_works,+ testProperty "prop_mod_inv_works" prop_mod_inv_works+ ],+ testGroup "Testing RSA core functions" [+ testProperty "prop_i2o2i_identity" prop_i2o2i_identity,+ testProperty "prop_o2i2o_identity" prop_o2i2o_identity,+ testProperty "prop_ep_dp_identity" prop_ep_dp_identity,+ testProperty "prop_sp_vp_identity" prop_sp_vp_identity+ ],+ testGroup "Testing fixed-width RSA padding functions" [+ testProperty "prop_oaep_inverts" prop_oaep_inverts,+ testProperty "prop_pkcs_inverts" $ prop_pkcs_inverts g,+ testProperty "prop_sign_works" prop_sign_works+ ],+ testGroup "Testing top-level functions" [+ testProperty "prop_encrypt_inverts" $ prop_encrypt_inverts g,+ testProperty "prop_encrypt_plus_inverts" $ prop_encrypt_plus_inverts g+ ]+ ]