Newer
Older
import qualified Crypto.PubKey.RSA as RSA
import qualified Data.ByteString as B
import Tahoe.SDMF.Internal.Keys (signatureKeyToBytes)
import Tahoe.SDMF.Keys (Signature (..))
-- | The size of the keys to generate.
bits :: Int
bits = 2048
-- | The number of keys to generate.
count :: Int
count = 5
main :: IO ()
main = do
mapM_ genKey [0 .. count - 1]
genKey :: Show a => a -> IO ()
genKey n = do
print "Generating RSA key..."
(_, priv) <- RSA.generate (bits `div` 8) e
print $ "Serializing key " <> show n
let bytes = signatureKeyToBytes (Signature priv)
print $ "Generated them (" <> show (B.length bytes) <> " bytes)"
B.writeFile ("test/data/rsa-privkey-" <> show n <> ".der") bytes
print "Wrote them to the file."
where
e = 0x10001