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

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