Safe Haskell | None |
---|---|
Language | Haskell2010 |
Internals of crypto_box
.
Synopsis
- type SecretKey = SizedByteArray CRYPTO_BOX_SECRETKEYBYTES ScrubbedBytes
- toSecretKey :: ScrubbedBytes -> Maybe SecretKey
- type PublicKey = SizedByteArray CRYPTO_BOX_PUBLICKEYBYTES ByteString
- toPublicKey :: ByteString -> Maybe PublicKey
- keypair :: IO (PublicKey, SecretKey)
- type Nonce a = SizedByteArray CRYPTO_BOX_NONCEBYTES a
- toNonce :: ByteArrayAccess ba => ba -> Maybe (Nonce ba)
- create :: (ByteArrayAccess nonce, ByteArrayAccess pt, ByteArray ct) => PublicKey -> SecretKey -> Nonce nonce -> pt -> IO ct
- open :: (ByteArrayAccess nonce, ByteArray pt, ByteArrayAccess ct) => SecretKey -> PublicKey -> Nonce nonce -> ct -> IO (Maybe pt)
Documentation
type SecretKey = SizedByteArray CRYPTO_BOX_SECRETKEYBYTES ScrubbedBytes Source #
Secret key that can be used for Box.
toSecretKey :: ScrubbedBytes -> Maybe SecretKey Source #
Convert bytes to a secret key.
type PublicKey = SizedByteArray CRYPTO_BOX_PUBLICKEYBYTES ByteString Source #
Public key that can be used for Box.
toPublicKey :: ByteString -> Maybe PublicKey Source #
keypair :: IO (PublicKey, SecretKey) Source #
Generate a new SecretKey
together with its PublicKey
.
Note: this function is not thread-safe (since the underlying
C function is not thread-safe both in Sodium and in NaCl)!
Either make sure there are no concurrent calls or see
Crypto.Init
in
crypto-sodium
to learn how to make this function thread-safe.
type Nonce a = SizedByteArray CRYPTO_BOX_NONCEBYTES a Source #
Nonce that can be used for Box.
This type is parametrised by the actual data type that contains
bytes. This can be, for example, a ByteString
.
toNonce :: ByteArrayAccess ba => ba -> Maybe (Nonce ba) Source #
Make a Nonce
from an arbitrary byte array.
This function returns Just
if and only if the byte array has
the right length to be used as a nonce with a Box.
:: (ByteArrayAccess nonce, ByteArrayAccess pt, ByteArray ct) | |
=> PublicKey | Receiver’s public key |
-> SecretKey | Sender’s secret key |
-> Nonce nonce | Nonce |
-> pt | Plaintext message |
-> IO ct |
Encrypt a message.