nonce-1.0.5: Generate cryptographic nonces.

Safe HaskellNone
LanguageHaskell2010

Crypto.Nonce

Description

Usage of this module is very simple. Here is a sample GHCi run:

*Crypto.Nonce> g <- new
*Crypto.Nonce> nonce128 g
"c\164\252\162f\207\245\ESC`\180p\DC4\234\223QP"
*Crypto.Nonce> nonce128 g
"\203C\190\138aI\158\194\146\&7\208\&7\ETX0\f\229"
*Crypto.Nonce> nonce128url g
"3RP-iEFT-6NrpCMsxigondMC"
*Crypto.Nonce> nonce128url g
"MVZH3Gi5zSKXJY-_qdtznxla"
*Crypto.Nonce> nonce128url g
"3f3cVNfuZT62-uGco1CBThci"
*Crypto.Nonce> nonce128urlT g
"iGMJyrRkw2QMp09SRy59s4Jx"
*Crypto.Nonce> nonce128urlT g
"WsHs0KwYiex3tsqQZ8b0119_"
*Crypto.Nonce> nonce128urlT g
"JWkLSX7qSFGu1Q3PHuExwurF"

The functions that generate nonces are not pure on purpose, since that makes it a lot harder to reuse the same nonce.

Synopsis

Documentation

data Generator Source #

An encapsulated nonce generator.

new :: MonadIO m => m Generator Source #

Create a new nonce generator using the system entropy.

delete :: MonadIO m => Generator -> m () Source #

Release the given generator's resources. The generator won't be usable afterwards.

withGenerator :: MonadUnliftIO m => (Generator -> m a) -> m a Source #

An exception-safe convenience function.

withGenerator = bracket new delete

nonce128 :: MonadIO m => Generator -> m ByteString Source #

Generate a 128 bit nonce as a ByteString of 16 bytes. Each byte may have any value from 0 to 255.

nonce128url :: MonadIO m => Generator -> m ByteString Source #

Generate a 128 bit nonce as a ByteString of 24 bytes. Each byte is either a letter (upper or lowercase), a digit, a dash (-) or an underscore (_), which is the set of characters from the base64url encoding. In order to avoid any issues with padding, the generated nonce actually has 144 bits.

nonce128urlT :: MonadIO m => Generator -> m Text Source #

Same as nonce128url, but returns its result as Text instead.