[number] further cleanup random generation

This commit is contained in:
Vincent Hanquez 2015-05-23 13:44:26 +01:00
parent c0e50547ad
commit bc4a55ff74
2 changed files with 4 additions and 7 deletions

View File

@ -10,7 +10,6 @@ module Crypto.Number.Generate
, generateParams
, generateMax
, generateBetween
, generateOfSize
) where
import Crypto.Internal.Imports
@ -123,8 +122,6 @@ generateMax range
-- | generate a number between the inclusive bound [low,high].
generateBetween :: MonadRandom m => Integer -> Integer -> m Integer
generateBetween low high = (low +) <$> generateMax (high - low + 1)
-- | generate a positive integer of a specific bit size.
generateOfSize :: MonadRandom m => Int -> m Integer
generateOfSize bits = generateParams bits (Just SetTwoHighest) False
generateBetween low high
| low == 1 = generateMax high >>= \r -> if r == 0 then generateBetween low high else return r
| otherwise = (low +) <$> generateMax (high - low + 1)

View File

@ -53,7 +53,7 @@ generatePrime bits = do
-- as such it shouldn't be used if this number is supposed to be kept safe.
generateSafePrime :: MonadRandom m => Int -> m Integer
generateSafePrime bits = do
sp <- generateOfSize bits
sp <- generateParams bits (Just SetTwoHighest) True
let p = findPrimeFromWith (\i -> isProbablyPrime (2*i+1)) (sp `div` 2)
return (2*p+1)