| Copyright | (c) Thomas DuBuisson 2017 |
|---|---|
| License | MIT |
| Maintainer | max@lambdalifting.org |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Crypto.Saltine.Core.AEAD.XChaCha20Poly1305
Description
Secret-key authenticated encryption with additional data (AEAD): Crypto.Saltine.Core.AEAD.XChaCha20Poly1305
Nonces are long enough that randomly generated nonces have negligible risk of collision.
Synopsis
- data Key
- data Nonce
- aead :: Key -> Nonce -> ByteString -> ByteString -> ByteString
- aeadOpen :: Key -> Nonce -> ByteString -> ByteString -> Maybe ByteString
- aeadDetached :: Key -> Nonce -> ByteString -> ByteString -> (ByteString, ByteString)
- aeadOpenDetached :: Key -> Nonce -> ByteString -> ByteString -> ByteString -> Maybe ByteString
- newKey :: IO Key
- newNonce :: IO Nonce
Documentation
An opaque XChaCha20Poly1305 cryptographic key.
Instances
| Data Key Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Key -> c Key # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Key # dataTypeOf :: Key -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Key) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Key) # gmapT :: (forall b. Data b => b -> b) -> Key -> Key # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Key -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Key -> r # gmapQ :: (forall d. Data d => d -> u) -> Key -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Key -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Key -> m Key # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Key -> m Key # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Key -> m Key # | |
| Generic Key Source # | |
| Show Key Source # | |
| NFData Key Source # | |
| Eq Key Source # | |
| Ord Key Source # | |
| Hashable Key Source # | |
| IsEncoding Key Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 Methods encode :: Key -> ByteString Source # decode :: ByteString -> Maybe Key Source # encoded :: (Choice p, Applicative f) => p Key (f Key) -> p ByteString (f ByteString) Source # | |
| type Rep Key Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 type Rep Key = D1 ('MetaData "Key" "Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305" "saltine-0.2.1.0-inplace" 'True) (C1 ('MetaCons "Key" 'PrefixI 'True) (S1 ('MetaSel ('Just "unKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))) | |
An opaque XChaCha20Poly1305 nonce.
Instances
| Data Nonce Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Nonce -> c Nonce # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Nonce # dataTypeOf :: Nonce -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Nonce) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Nonce) # gmapT :: (forall b. Data b => b -> b) -> Nonce -> Nonce # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Nonce -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Nonce -> r # gmapQ :: (forall d. Data d => d -> u) -> Nonce -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Nonce -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Nonce -> m Nonce # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Nonce -> m Nonce # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Nonce -> m Nonce # | |
| Generic Nonce Source # | |
| Show Nonce Source # | |
| NFData Nonce Source # | |
| Eq Nonce Source # | |
| Ord Nonce Source # | |
| Hashable Nonce Source # | |
| IsEncoding Nonce Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 Methods encode :: Nonce -> ByteString Source # decode :: ByteString -> Maybe Nonce Source # encoded :: (Choice p, Applicative f) => p Nonce (f Nonce) -> p ByteString (f ByteString) Source # | |
| IsNonce Nonce Source # | |
| type Rep Nonce Source # | |
Defined in Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305 type Rep Nonce = D1 ('MetaData "Nonce" "Crypto.Saltine.Internal.AEAD.XChaCha20Poly1305" "saltine-0.2.1.0-inplace" 'True) (C1 ('MetaCons "Nonce" 'PrefixI 'True) (S1 ('MetaSel ('Just "unNonce") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))) | |
Arguments
| :: Key | |
| -> Nonce | |
| -> ByteString | Message |
| -> ByteString | AAD |
| -> ByteString | Ciphertext |
Encrypts a message. It is infeasible for an attacker to decrypt
the message so long as the Nonce is never repeated.
Arguments
| :: Key | |
| -> Nonce | |
| -> ByteString | Ciphertext |
| -> ByteString | AAD |
| -> Maybe ByteString | Message |
Decrypts a message. Returns Nothing if the keys and message do
not match.
Arguments
| :: Key | |
| -> Nonce | |
| -> ByteString | Message |
| -> ByteString | AAD |
| -> (ByteString, ByteString) | Tag, Ciphertext |
Encrypts a message. It is infeasible for an attacker to decrypt
the message so long as the Nonce is never repeated.
Arguments
| :: Key | |
| -> Nonce | |
| -> ByteString | Tag |
| -> ByteString | Ciphertext |
| -> ByteString | AAD |
| -> Maybe ByteString | Message |
Decrypts a message. Returns Nothing if the keys and message do
not match.