Copyright | (c) Joseph Abrahamson 2013 |
---|---|
License | MIT |
Maintainer | me@jspha.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Secret-key single-message authentication: Crypto.Saltine.Core.OneTimeAuth
The auth
function authenticates a message ByteString
using a
secret key The function returns an authenticator. The verify
function checks if it's passed a correct authenticator of a message
under the given secret key.
The auth
function, viewed as a function of the message for a
uniform random key, is designed to meet the standard notion of
unforgeability after a single message. After the sender
authenticates one message, an attacker cannot find authenticators
for any other messages.
The sender must not use auth
to authenticate more than one
message under the same key. Authenticators for two messages under
the same key should be expected to reveal enough information to
allow forgeries of authenticators on other messages.
Crypto.Saltine.Core.OneTimeAuth is
crypto_onetimeauth_poly1305
, an authenticator specified in
"Cryptography in NaCl" (http://nacl.cr.yp.to/valid.html), Section
9. This authenticator is proven to meet the standard notion of
unforgeability after a single message.
This is version 2010.08.30 of the onetimeauth.html web page.
Synopsis
- data Key
- data Authenticator
- newKey :: IO Key
- auth :: Key -> ByteString -> Authenticator
- verify :: Key -> Authenticator -> ByteString -> Bool
Documentation
An opaque auth
cryptographic key.
Instances
Eq Key Source # | |
Ord Key Source # | |
IsEncoding Key Source # | |
Defined in Crypto.Saltine.Core.OneTimeAuth encode :: Key -> ByteString Source # decode :: ByteString -> Maybe Key Source # encoded :: (Choice p, Applicative f) => p Key (f Key) -> p ByteString (f ByteString) Source # |
data Authenticator Source #
An opaque auth
authenticator.
Instances
Eq Authenticator Source # | |
Defined in Crypto.Saltine.Core.OneTimeAuth (==) :: Authenticator -> Authenticator -> Bool # (/=) :: Authenticator -> Authenticator -> Bool # | |
Ord Authenticator Source # | |
Defined in Crypto.Saltine.Core.OneTimeAuth compare :: Authenticator -> Authenticator -> Ordering # (<) :: Authenticator -> Authenticator -> Bool # (<=) :: Authenticator -> Authenticator -> Bool # (>) :: Authenticator -> Authenticator -> Bool # (>=) :: Authenticator -> Authenticator -> Bool # max :: Authenticator -> Authenticator -> Authenticator # min :: Authenticator -> Authenticator -> Authenticator # | |
IsEncoding Authenticator Source # | |
Defined in Crypto.Saltine.Core.OneTimeAuth encode :: Authenticator -> ByteString Source # decode :: ByteString -> Maybe Authenticator Source # encoded :: (Choice p, Applicative f) => p Authenticator (f Authenticator) -> p ByteString (f ByteString) Source # |
:: Key | |
-> ByteString | Message |
-> Authenticator |
Builds a keyed Authenticator
for a message. This
Authenticator
is impossible to forge so long as the Key
is
never used twice.
:: Key | |
-> Authenticator | |
-> ByteString | Message |
-> Bool | Is this message authentic? |
Verifies that an Authenticator
matches a given message and key.