Safe Haskell | None |
---|---|
Language | Haskell2010 |
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.
- data Generator
- new :: MonadIO m => m Generator
- delete :: MonadIO m => Generator -> m ()
- withGenerator :: MonadUnliftIO m => (Generator -> m a) -> m a
- nonce128 :: MonadIO m => Generator -> m ByteString
- nonce128url :: MonadIO m => Generator -> m ByteString
- nonce128urlT :: MonadIO m => Generator -> m Text
Documentation
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.