newhope-0.1.0.0: src/Crypto/NewHope/SeedExpander.hs
{-# LANGUAGE Safe #-}
{-|
Module : Crypto.NewHope.SeedExpander
Description : Seed expander for NewHope.
Copyright : © Jeremy Bornstein 2019
License : Apache 2.0
Maintainer : jeremy@bornstein.org
Stability : experimental
Portability : portable
The "seed expander" is a facility specified by NIST for generating
pseudorandom data given a seed. It is not used in the actual NewHope
key exchange and is provided here for completeness/isomorphism with
the NewHope C reference library.
This module contains the public interface. Implementation definitions
are in the "Crypto.NewHope.Internal.SeedExpander" module.
* Sample usage
@
let maxLen' = case maxLen 256 of Right value -> value
Left x -> error (show x)
let diversifier = case createDiversifier (BSC.pack "12345678") of Right value -> value
Left x -> error (show x)
let seed = (Internals.makeSeed "32 bytes of seed data go here...")
let ctx = case seedexpanderInit seed diversifier maxLen' of Right value -> value
Left x -> error (show x)
let (ctx', buf) = case seedexpander ctx 16 of Right value -> value
Left x r -> error (show x)
@
-}
module Crypto.NewHope.SeedExpander ( RNGError
-- * Preparing parameters
, makeSeed
, Seedable
, maxLen
, createDiversifier
-- * Expanding a seed
, seedexpanderInit
, seedexpander
) where
import Crypto.NewHope.Internal.SeedExpander
import Crypto.NewHope.Internals (Seedable, makeSeed)