curve25519 0.2.6 → 0.2.7
raw patch · 2 files changed
+38/−16 lines, 2 filesdep −DRBGdep ~HUnitdep ~QuickCheckdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies removed: DRBG
Dependency ranges changed: HUnit, QuickCheck, base, tagged, test-framework, test-framework-hunit, test-framework-quickcheck2
API changes (from Hackage documentation)
Files
- Test.hs +22/−5
- curve25519.cabal +16/−11
Test.hs view
@@ -1,9 +1,10 @@ import Control.Monad(replicateM)-import Crypto.Random(CryptoRandomGen, genSeedLength, newGen)-import Crypto.Random.DRBG(HashDRBG)+import Crypto.Random(CryptoRandomGen(..), GenError(..), ReseedInfo(..), genSeedLength, newGen) import Crypto.Types(ByteLength)+import Data.ByteString(ByteString) import qualified Data.ByteString as BS-import Data.Tagged(Tagged, unTagged)+import Data.Tagged(Tagged(..), unTagged)+import Data.Word(Word64) import Test.Framework import Test.Framework.Providers.HUnit(testCase) import Test.Framework.Providers.QuickCheck2(testProperty)@@ -16,15 +17,31 @@ data KeyPair = KP PrivateKey PublicKey deriving (Show) +data FakeRandom = FakeRandom ByteString++randomBufferSize :: Word64+randomBufferSize = 512++instance CryptoRandomGen FakeRandom where+ newGen = Right . FakeRandom+ genSeedLength = Tagged (fromIntegral randomBufferSize)+ genBytes len (FakeRandom bs)+ | BS.length bs < len = Left RequestedTooManyBytes+ | (retval, rest) <- BS.splitAt len bs = Right (retval, FakeRandom rest)+ reseedInfo (FakeRandom bs) = InXBytes (fromIntegral (BS.length bs))+ reseedPeriod _ = InXBytes randomBufferSize+ genBytesWithEntropy len rest (FakeRandom bs) = genBytes len (FakeRandom (BS.append bs rest))+ reseed new (FakeRandom old) = Right (FakeRandom (old `BS.append` new))+ instance Arbitrary KeyPair where arbitrary =- do let taggedSeedLen = genSeedLength :: Tagged HashDRBG ByteLength+ do let taggedSeedLen = genSeedLength :: Tagged FakeRandom ByteLength seedLen = unTagged taggedSeedLen seedBS <- BS.pack `fmap` replicateM seedLen arbitrary case newGen seedBS of Left _ -> arbitrary Right g ->- case generateKeyPair (g :: HashDRBG) of+ case generateKeyPair (g :: FakeRandom) of Left _ -> arbitrary Right (priv, pub, _) -> return (KP priv pub)
curve25519.cabal view
@@ -1,8 +1,11 @@ name: curve25519-version: 0.2.6+version: 0.2.7 synopsis: Fast implementations of the curve25519 elliptic curve primitives. description: Haskell bindings and extensions to the curve25519-donna- codebase.+ codebase. This module is a pretty straightforward implementation+ of the basic cryptographic routines you'd want from a project that+ uses curve25519: key generation, and key agreement. For further+ functionality, you'll want to look elsewhere. homepage: http://github.com/acw/curve25519 license: BSD3 license-file: LICENSE@@ -11,13 +14,16 @@ category: Math build-type: Simple cabal-version: >=1.10+tested-with: GHC==9.2.1, GHC==9.0.1,+ GHC==8.10.7, GHC==8.8.4, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2,+ GHC==7.10.3, GHC==7.8.4, GHC==7.6.3 library default-language: Haskell2010 exposed-modules: Crypto.Curve25519, Crypto.Curve25519.Exceptions, Crypto.Curve25519.Pure- build-depends: base >= 4.6 && < 4.16,+ build-depends: base >= 4.6 && < 4.20, bytestring >= 0.10 && < 0.12, crypto-api >= 0.10 && < 0.14 hs-source-dirs: src@@ -34,15 +40,14 @@ c-sources: upstream-c/test-curve25519.c build-depends: base, bytestring,- crypto-api, curve25519,- DRBG >= 0.5 && < 0.7,- HUnit >= 1.2.5.2 && < 1.7,- QuickCheck >= 2.4 && < 2.15,- tagged >= 0.7 && < 0.9,- test-framework >= 0.2 && < 1.0.0,- test-framework-hunit >= 0.3 && < 0.5,- test-framework-quickcheck2 >= 0.3 && < 0.5+ crypto-api,+ HUnit,+ QuickCheck,+ tagged,+ test-framework,+ test-framework-hunit,+ test-framework-quickcheck2 source-repository head type: git