packages feed

DSA 1.0.0 → 1.0.1

raw patch · 3 files changed

+14/−13 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Codec.Crypto.DSA.Exceptions: ProbablePrimesEvidence :: Integer -> Integer -> (ByteString -> ByteString) -> ProbablePrimesEvidence
+ Codec.Crypto.DSA.Exceptions: ProbablePrimesEvidence :: ByteString -> Integer -> (ByteString -> ByteString) -> ProbablePrimesEvidence
- Codec.Crypto.DSA.Exceptions: prpeDomainParameterSeed :: ProbablePrimesEvidence -> Integer
+ Codec.Crypto.DSA.Exceptions: prpeDomainParameterSeed :: ProbablePrimesEvidence -> ByteString
- Codec.Crypto.DSA.Pure: ProbablePrimesEvidence :: Integer -> Integer -> (ByteString -> ByteString) -> ProbablePrimesEvidence
+ Codec.Crypto.DSA.Pure: ProbablePrimesEvidence :: ByteString -> Integer -> (ByteString -> ByteString) -> ProbablePrimesEvidence
- Codec.Crypto.DSA.Pure: prpeDomainParameterSeed :: ProbablePrimesEvidence -> Integer
+ Codec.Crypto.DSA.Pure: prpeDomainParameterSeed :: ProbablePrimesEvidence -> ByteString

Files

DSA.cabal view
@@ -1,6 +1,6 @@ name:          DSA category:      Cryptography, Codec-version:       1.0.0+version:       1.0.1 license:       BSD3 license-file:  LICENSE author:        Adam Wick <awick@galois.com>
src/Codec/Crypto/DSA/Pure.hs view
@@ -346,7 +346,7 @@ -- be used to ensure that the /p/ and /q/ values provided were generated -- appropriately. data ProbablePrimesEvidence = ProbablePrimesEvidence {-       prpeDomainParameterSeed :: Integer+       prpeDomainParameterSeed :: ByteString      , prpeCounter             :: Integer      , prpeHash                :: ByteString -> ByteString      }@@ -392,14 +392,13 @@   find_q g'     | isLeft dpsEth   = Left (DSARandomGenerationError err)     | isLeft primeEth = Left primeErr-    | isPrime         = find_p g''' 1 0 q dpsI+    | isPrime         = find_p g''' 1 0 q domParamSeed     | otherwise       = find_q g'''    where     dpsEth                = genBytes (fromIntegral ((seedlen + 7) `div` 8)) g'     Left err              = dpsEth     Right (dpsBS, g'')    = dpsEth     domParamSeed          = BS.fromStrict dpsBS-    dpsI                  = bs2int domParamSeed     mask                  = 2 ^ (bigN - 1)     bigU                  = bs2int (hash domParamSeed) `mod` mask     q                     = mask + bigU + 1 - (bigU `mod` 2)@@ -407,13 +406,15 @@     Left primeErr         = primeEth     Right (isPrime, g''') = primeEth   ---  find_p g' !off !ctr !q !dps+  find_p g' !off !ctr !q !dpsBS     | ctr == fourTimesL = find_q g'-    | p < twoLm1        = find_p g' off' ctr' q dps+    | p < twoLm1        = find_p g' off' ctr' q dpsBS     | isLeft primeEth   = Left primeErr-    | isPrime           = Right (p, q, ProbablePrimesEvidence dps ctr hash, g'')-    | otherwise         = find_p g'' off' ctr' q dps+    | isPrime           = let ev = ProbablePrimesEvidence dpsBS ctr hash+                          in Right (p, q, ev, g'')+    | otherwise         = find_p g'' off' ctr' q dpsBS    where+    dps                  = bs2int (dpsBS :: ByteString) :: Integer     !bigW                = computeW hash dps off n b seedlen     bigX                 = bigW + (2 ^ (bigL - 1))     c                    = bigX `mod` (2 * q)@@ -471,11 +472,11 @@   -- 4. If (counter > (4L – 1)), then return INVALID.   --    [See the second line above]   -- 5. seedlen = len (domain_parameter_seed).-  seedlen = intlen dps * 8+  seedlen = fromIntegral (BS.length dps * 8)   -- 6. If (seedlen < N), then return INVALID.   --    [See the third line above]   -- 7. U = Hash(domain_parameter_seed) mod 2N–1-  bigU = bs2int (hash (int2bs dps)) `mod` (2 ^ (bigN - 1))+  bigU = bs2int (hash dps) `mod` (2 ^ (bigN - 1))   -- 8. computed_q = 2^(N–1) + U + 1 – ( U mod 2).   computed_q = (2 ^ (bigN - 1)) + bigU + 1 - (bigU `mod` 2)   -- 9. Test whether or not computed_q is prime as specified in Appendix C.3.@@ -500,7 +501,7 @@     | isPrime                       = step14 gen i computed_p isPrime     | otherwise                     = loop gen' (i + 1) off'    where-    bigW                  = computeW hash dps off n b seedlen+    bigW                  = computeW hash (bs2int dps) off n b seedlen     bigX                  = bigW + (2 ^ (bigL - 1))     c                     = bigX `mod` (2 * q)     computed_p            = bigX - (c - 1)@@ -677,7 +678,7 @@  instance GenerationEvidence ProbablePrimesEvidence where   getHash                = prpeHash-  getDomainParameterSeed = int2bs . prpeDomainParameterSeed+  getDomainParameterSeed = prpeDomainParameterSeed  instance GenerationEvidence ProvablePrimesEvidence where   getHash                  = pvpeHash
src/Test.hs view
@@ -183,7 +183,7 @@     Right (p, q, ev, g') ->         let (res, _) = validateProbablePrimes g' p q ev         in if not res-              then trace ("FAIL p = " ++ show p ++ " q = " ++ show q) False+              then trace ("FAIL p = " ++ show p ++ " q = " ++ show q ++ " dps = " ++ show (prpeDomainParameterSeed ev) ++ " counter: " ++ show (prpeCounter ev)) False               else True  where mseedlen' = fmap (\ x -> (getPositive x * 8) + getN params) mseedlen