Add API to generate a random nonce

This AEAD scheme is compatible with choosing the nonce randomly.
This commit is contained in:
Olivier Chéron 2019-08-25 16:38:08 +02:00
parent 29f0fd1b7a
commit 3ae08ed509

View File

@ -21,6 +21,7 @@
module Crypto.Cipher.AESGCMSIV
( Nonce
, nonce
, generateNonce
, encrypt
, decrypt
) where
@ -42,6 +43,7 @@ import Crypto.Cipher.AES.Primitive
import Crypto.Cipher.Types
import Crypto.Error
import Crypto.Internal.Compat (unsafeDoIO)
import Crypto.Random
-- 12-byte nonces
@ -55,6 +57,10 @@ nonce iv
| B.length iv == 12 = CryptoPassed (Nonce $ B.convert iv)
| otherwise = CryptoFailed CryptoError_IvSizeInvalid
-- | Generate a random nonce for use with AES-GCM-SIV.
generateNonce :: MonadRandom m => m Nonce
generateNonce = Nonce <$> getRandomBytes 12
-- POLYVAL (mutable context)