password 3.0.2.0 → 3.0.2.1
raw patch · 4 files changed
+107/−18 lines, 4 filesdep ~base64dep ~bytestringdep ~cryptonitePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base64, bytestring, cryptonite, memory, text
API changes (from Hackage documentation)
Files
- ChangeLog.md +10/−0
- password.cabal +77/−16
- test/tasty/Internal.hs +2/−2
- test/tasty/Spec.hs +18/−0
ChangeLog.md view
@@ -1,5 +1,15 @@ # Changelog for `password` +## 3.0.2.1++- Add Cabal flags to control which hashing algorithms are exported. These flags are+ `argon2`, `bcrypt`, `pbkdf2`, and `scrypt`. Each flag is enabled by default -+ disabling it will elide the corresponding module from the library. This allows+ downstream packagers to disable hashing algorithms which aren't supported on+ certain platforms.+ Thanks to [@ivanbakel](https://github.com/ivanbakel)+ [#63](https://github.com/cdepillabout/password/pull/63)+ ## 3.0.2.0 - Add `extractParams` on `PasswordHash`s
password.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.12 name: password-version: 3.0.2.0+version: 3.0.2.1 category: Data synopsis: Hashing and checking of passwords description:@@ -46,10 +46,30 @@ README.md ChangeLog.md +flag argon2+ description: Compile with argon2 support?+ default: True+ manual: True++flag bcrypt+ description: Compile with Scrypt support?+ default: True+ manual: True++flag pbkdf2+ description: Compile with PBKDF2 support?+ default: True+ manual: True++flag scrypt+ description: Compile with Scrypt support?+ default: True+ manual: True+ custom-setup setup-depends:- base- , Cabal+ base <5+ , Cabal <4 , cabal-doctest >=1.0.6 && <1.1 source-repository head@@ -60,23 +80,31 @@ hs-source-dirs: src exposed-modules:- Data.Password.Argon2- Data.Password.Bcrypt- Data.Password.PBKDF2- Data.Password.Scrypt Data.Password.Validate+ if flag(argon2)+ exposed-modules:+ Data.Password.Argon2+ if flag(bcrypt)+ exposed-modules:+ Data.Password.Bcrypt+ if flag(pbkdf2)+ exposed-modules:+ Data.Password.PBKDF2+ if flag(scrypt)+ exposed-modules:+ Data.Password.Scrypt other-modules: Paths_password Data.Password.Internal build-depends: base >= 4.9 && < 5 , base64 >= 0.3 && < 0.5- , bytestring >= 0.10.8.1 && < 0.12- , cryptonite >= 0.15.1- , memory >= 0.14+ , bytestring >= 0.9 && < 0.12+ , cryptonite >= 0.15.1 && < 0.31+ , memory < 1 , password-types < 2 , template-haskell- , text >= 1.2.2 && < 1.3+ , text >= 1.2.2 && < 3 ghc-options: -Wall default-language:@@ -106,23 +134,43 @@ type: exitcode-stdio-1.0 hs-source-dirs:+ src test/tasty main-is: Spec.hs other-modules:- Argon2- , Bcrypt+ Data.Password.Internal+ -- We're also putting all the modules from+ -- the library in these 'other-modules' so+ -- we don't get warnings.+ -- Therefore we also don't need to depend+ -- on the 'password' package in 'build-depends'.+ , Data.Password.Validate , Internal- , PBKDF2- , Scrypt , TestPolicy , Validate , Paths_password+ if flag(argon2)+ other-modules:+ Argon2+ Data.Password.Argon2+ if flag(bcrypt)+ other-modules:+ Bcrypt+ Data.Password.Bcrypt+ if flag(pbkdf2)+ other-modules:+ PBKDF2+ Data.Password.PBKDF2+ if flag(scrypt)+ other-modules:+ Scrypt+ Data.Password.Scrypt ghc-options: -threaded -O2 -rtsopts -with-rtsopts=-N build-depends: base >=4.9 && <5- , password+ , base64 , password-types , bytestring , cryptonite@@ -132,6 +180,19 @@ , tasty , tasty-hunit , tasty-quickcheck+ , template-haskell , text default-language: Haskell2010+ if flag(argon2)+ cpp-options:+ -DCABAL_FLAG_argon2+ if flag(bcrypt)+ cpp-options:+ -DCABAL_FLAG_bcrypt+ if flag(pbkdf2)+ cpp-options:+ -DCABAL_FLAG_pbkdf2+ if flag(scrypt)+ cpp-options:+ -DCABAL_FLAG_scrypt
test/tasty/Internal.hs view
@@ -7,8 +7,8 @@ import Test.Tasty.QuickCheck import Test.QuickCheck.Instances.Text () -import Data.Password.Types (mkPassword, Password, PasswordHash)-import Data.Password.Bcrypt (PasswordCheck(..), Salt(..))+import Data.Password.Types (mkPassword, Password, PasswordHash, Salt(..))+import Data.Password.Internal (PasswordCheck(..)) testCorrectPassword :: (Eq params, Show params)
test/tasty/Spec.hs view
@@ -1,13 +1,23 @@+{-# LANGUAGE CPP #-}+ import Test.Tasty import Test.Tasty.QuickCheck import Test.Tasty.Runners (NumThreads(..)) import Data.Password.Types +#ifdef CABAL_FLAG_argon2 import Argon2 (testArgon2)+#endif+#ifdef CABAL_FLAG_bcrypt import Bcrypt (testBcrypt)+#endif+#ifdef CABAL_FLAG_pbkdf2 import PBKDF2 (testPBKDF2)+#endif+#ifdef CABAL_FLAG_scrypt import Scrypt (testScrypt)+#endif import Validate (testValidate) main :: IO ()@@ -15,9 +25,17 @@ testGroup "Password" [ testProperty "Password" $ \pass -> unsafeShowPassword (mkPassword pass) === pass+#ifdef CABAL_FLAG_argon2 , testArgon2+#endif+#ifdef CABAL_FLAG_bcrypt , testBcrypt+#endif+#ifdef CABAL_FLAG_pbkdf2 , testPBKDF2+#endif+#ifdef CABAL_FLAG_scrypt , testScrypt+#endif , testValidate ]