ASCON-128 encryption algorithm and related family members.
More...
#include <stddef.h>
Go to the source code of this file.
|
int | ascon128_aead_encrypt (unsigned char *c, size_t *clen, const unsigned char *m, size_t mlen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Encrypts and authenticates a packet with ASCON-128. More...
|
|
int | ascon128_aead_decrypt (unsigned char *m, size_t *mlen, const unsigned char *c, size_t clen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Decrypts and authenticates a packet with ASCON-128. More...
|
|
int | ascon128a_aead_encrypt (unsigned char *c, size_t *clen, const unsigned char *m, size_t mlen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Encrypts and authenticates a packet with ASCON-128a. More...
|
|
int | ascon128a_aead_decrypt (unsigned char *m, size_t *mlen, const unsigned char *c, size_t clen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Decrypts and authenticates a packet with ASCON-128a. More...
|
|
int | ascon80pq_aead_encrypt (unsigned char *c, size_t *clen, const unsigned char *m, size_t mlen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Encrypts and authenticates a packet with ASCON-80pq. More...
|
|
int | ascon80pq_aead_decrypt (unsigned char *m, size_t *mlen, const unsigned char *c, size_t clen, const unsigned char *ad, size_t adlen, const unsigned char *npub, const unsigned char *k) |
| Decrypts and authenticates a packet with ASCON-80pq. More...
|
|
ASCON-128 encryption algorithm and related family members.
The ASCON family consists of several related algorithms:
- ASCON-128 with a 128-bit key, a 128-bit nonce, a 128-bit authentication tag, and a block rate of 64 bits.
- ASCON-128a with a 128-bit key, a 128-bit nonce, a 128-bit authentication tag, and a block rate of 128 bits. This is faster than ASCON-128 but may not be as secure.
- ASCON-80pq with a 160-bit key, a 128-bit nonce, a 128-bit authentication tag, and a block rate of 64 bits. This is similar to ASCON-128 but has a 160-bit key instead which may be more resistant against quantum computers.
- ASCON-HASH and ASCON-HASHA with a 256-bit hash output.
- ASCON-XOF and ASCON-XOFA with extensible hash output (XOF mode).
References: https://ascon.iaik.tugraz.at/
int ascon128_aead_decrypt |
( |
unsigned char * |
m, |
|
|
size_t * |
mlen, |
|
|
const unsigned char * |
c, |
|
|
size_t |
clen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Decrypts and authenticates a packet with ASCON-128.
- Parameters
-
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
c | Buffer that contains the ciphertext and authentication tag to decrypt. |
clen | Length of the input data in bytes, which includes the ciphertext and the 16 byte authentication tag. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
- Returns
- 0 on success, -1 if the authentication tag was incorrect, or some other negative number if there was an error in the parameters.
- See Also
- ascon128_aead_encrypt()
int ascon128_aead_encrypt |
( |
unsigned char * |
c, |
|
|
size_t * |
clen, |
|
|
const unsigned char * |
m, |
|
|
size_t |
mlen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Encrypts and authenticates a packet with ASCON-128.
- Parameters
-
c | Buffer to receive the output. |
clen | On exit, set to the length of the output which includes the ciphertext and the 16 byte authentication tag. |
m | Buffer that contains the plaintext message to encrypt. |
mlen | Length of the plaintext message in bytes. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
- Returns
- 0 on success, or a negative value if there was an error in the parameters.
- See Also
- ascon128_aead_decrypt()
int ascon128a_aead_decrypt |
( |
unsigned char * |
m, |
|
|
size_t * |
mlen, |
|
|
const unsigned char * |
c, |
|
|
size_t |
clen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Decrypts and authenticates a packet with ASCON-128a.
- Parameters
-
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
c | Buffer that contains the ciphertext and authentication tag to decrypt. |
clen | Length of the input data in bytes, which includes the ciphertext and the 16 byte authentication tag. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
- Returns
- 0 on success, -1 if the authentication tag was incorrect, or some other negative number if there was an error in the parameters.
- See Also
- ascon128a_aead_encrypt()
int ascon128a_aead_encrypt |
( |
unsigned char * |
c, |
|
|
size_t * |
clen, |
|
|
const unsigned char * |
m, |
|
|
size_t |
mlen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Encrypts and authenticates a packet with ASCON-128a.
- Parameters
-
c | Buffer to receive the output. |
clen | On exit, set to the length of the output which includes the ciphertext and the 16 byte authentication tag. |
m | Buffer that contains the plaintext message to encrypt. |
mlen | Length of the plaintext message in bytes. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
- Returns
- 0 on success, or a negative value if there was an error in the parameters.
- See Also
- ascon128a_aead_decrypt()
int ascon80pq_aead_decrypt |
( |
unsigned char * |
m, |
|
|
size_t * |
mlen, |
|
|
const unsigned char * |
c, |
|
|
size_t |
clen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Decrypts and authenticates a packet with ASCON-80pq.
- Parameters
-
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
c | Buffer that contains the ciphertext and authentication tag to decrypt. |
clen | Length of the input data in bytes, which includes the ciphertext and the 16 byte authentication tag. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 20 bytes of the key to use to decrypt the packet. |
- Returns
- 0 on success, -1 if the authentication tag was incorrect, or some other negative number if there was an error in the parameters.
- See Also
- ascon80pq_aead_encrypt()
int ascon80pq_aead_encrypt |
( |
unsigned char * |
c, |
|
|
size_t * |
clen, |
|
|
const unsigned char * |
m, |
|
|
size_t |
mlen, |
|
|
const unsigned char * |
ad, |
|
|
size_t |
adlen, |
|
|
const unsigned char * |
npub, |
|
|
const unsigned char * |
k |
|
) |
| |
Encrypts and authenticates a packet with ASCON-80pq.
- Parameters
-
c | Buffer to receive the output. |
clen | On exit, set to the length of the output which includes the ciphertext and the 16 byte authentication tag. |
m | Buffer that contains the plaintext message to encrypt. |
mlen | Length of the plaintext message in bytes. |
ad | Buffer that contains associated data to authenticate along with the packet but which does not need to be encrypted. |
adlen | Length of the associated data in bytes. |
npub | Points to the public nonce for the packet which must be 16 bytes in length. |
k | Points to the 20 bytes of the key to use to encrypt the packet. |
- Returns
- 0 on success, or a negative value if there was an error in the parameters.
- See Also
- ascon80pq_aead_decrypt()