Lightweight Cryptography Primitives
|
ForkAE authenticated encryption algorithm family. More...
#include "aead-common.h"
Go to the source code of this file.
Macros | |
#define | FORKAE_PAEF_64_192_KEY_SIZE 16 |
Size of the key for PAEF-ForkSkinny-64-192. | |
#define | FORKAE_PAEF_64_192_TAG_SIZE 8 |
Size of the authentication tag for PAEF-ForkSkinny-64-192. | |
#define | FORKAE_PAEF_64_192_NONCE_SIZE 6 |
Size of the nonce for PAEF-ForkSkinny-64-192. | |
#define | FORKAE_PAEF_128_192_KEY_SIZE 16 |
Size of the key for PAEF-ForkSkinny-128-192. | |
#define | FORKAE_PAEF_128_192_TAG_SIZE 16 |
Size of the authentication tag for PAEF-ForkSkinny-128-192. | |
#define | FORKAE_PAEF_128_192_NONCE_SIZE 6 |
Size of the nonce for PAEF-ForkSkinny-128-192. | |
#define | FORKAE_PAEF_128_256_KEY_SIZE 16 |
Size of the key for PAEF-ForkSkinny-128-256. | |
#define | FORKAE_PAEF_128_256_TAG_SIZE 16 |
Size of the authentication tag for PAEF-ForkSkinny-128-256. | |
#define | FORKAE_PAEF_128_256_NONCE_SIZE 14 |
Size of the nonce for PAEF-ForkSkinny-128-256. | |
#define | FORKAE_PAEF_128_288_KEY_SIZE 16 |
Size of the key for PAEF-ForkSkinny-128-288. | |
#define | FORKAE_PAEF_128_288_TAG_SIZE 16 |
Size of the authentication tag for PAEF-ForkSkinny-128-288. | |
#define | FORKAE_PAEF_128_288_NONCE_SIZE 13 |
Size of the nonce for PAEF-ForkSkinny-128-288. | |
#define | FORKAE_SAEF_128_192_KEY_SIZE 16 |
Size of the key for SAEF-ForkSkinny-128-192. | |
#define | FORKAE_SAEF_128_192_TAG_SIZE 16 |
Size of the authentication tag for SAEF-ForkSkinny-128-192. | |
#define | FORKAE_SAEF_128_192_NONCE_SIZE 7 |
Size of the nonce for SAEF-ForkSkinny-128-192. | |
#define | FORKAE_SAEF_128_256_KEY_SIZE 16 |
Size of the key for SAEF-ForkSkinny-128-256. | |
#define | FORKAE_SAEF_128_256_TAG_SIZE 16 |
Size of the authentication tag for SAEF-ForkSkinny-128-256. | |
#define | FORKAE_SAEF_128_256_NONCE_SIZE 15 |
Size of the nonce for SAEF-ForkSkinny-128-256. | |
Functions | |
int | forkae_paef_64_192_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-64-192. More... | |
int | forkae_paef_64_192_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-64-192. More... | |
int | forkae_paef_128_192_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-192. More... | |
int | forkae_paef_128_192_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-192. More... | |
int | forkae_paef_128_256_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-256. More... | |
int | forkae_paef_128_256_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-256. More... | |
int | forkae_paef_128_288_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-288. More... | |
int | forkae_paef_128_288_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-288. More... | |
int | forkae_saef_128_192_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with SAEF-ForkSkinny-128-192. More... | |
int | forkae_saef_128_192_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with SAEF-ForkSkinny-128-192. More... | |
int | forkae_saef_128_256_aead_encrypt (unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) |
Encrypts and authenticates a packet with SAEF-ForkSkinny-128-256. More... | |
int | forkae_saef_128_256_aead_decrypt (unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) |
Decrypts and authenticates a packet with SAEF-ForkSkinny-128-256. More... | |
Variables | |
aead_cipher_t const | forkae_paef_64_192_cipher |
Meta-information block for the PAEF-ForkSkinny-64-192 cipher. | |
aead_cipher_t const | forkae_paef_128_192_cipher |
Meta-information block for the PAEF-ForkSkinny-128-192 cipher. | |
aead_cipher_t const | forkae_paef_128_256_cipher |
Meta-information block for the PAEF-ForkSkinny-128-256 cipher. | |
aead_cipher_t const | forkae_paef_128_288_cipher |
Meta-information block for the PAEF-ForkSkinny-128-288 cipher. | |
aead_cipher_t const | forkae_saef_128_192_cipher |
Meta-information block for the SAEF-ForkSkinny-128-192 cipher. | |
aead_cipher_t const | forkae_saef_128_256_cipher |
Meta-information block for the SAEF-ForkSkinny-128-256 cipher. | |
ForkAE authenticated encryption algorithm family.
ForkAE is a family of authenticated encryption algorithms based on a modified version of the SKINNY tweakable block cipher. The modifications introduce "forking" where each input block produces two output blocks for use in encryption and authentication. There are six members in the ForkAE family:
The PAEF variants support parallel encryption and decryption for higher throughput. The SAEF variants encrypt or decrypt blocks sequentially.
ForkAE is designed to be efficient on small packet sizes so most of the PAEF algorithms have a limit of 64k or 128k on the amount of payload in a single packet. Obviously the input can be split into separate packets for larger amounts of data.
References: https://www.esat.kuleuven.be/cosic/forkae/
int forkae_paef_128_192_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-192.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 6 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_paef_128_192_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-192.
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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 6 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
int forkae_paef_128_256_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-256.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 14 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_paef_128_256_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-256.
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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 14 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
int forkae_paef_128_288_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-128-288.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 13 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_paef_128_288_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-128-288.
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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 13 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
int forkae_paef_64_192_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with PAEF-ForkSkinny-64-192.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 8 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 6 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_paef_64_192_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with PAEF-ForkSkinny-64-192.
c | Buffer to receive the output. |
clen | On exit, set to the length of the output which includes the ciphertext and the 8 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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 6 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
int forkae_saef_128_192_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with SAEF-ForkSkinny-128-192.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 7 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_saef_128_192_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with SAEF-ForkSkinny-128-192.
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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 7 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |
int forkae_saef_128_256_aead_decrypt | ( | unsigned char * | m, |
unsigned long long * | mlen, | ||
unsigned char * | nsec, | ||
const unsigned char * | c, | ||
unsigned long long | clen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Decrypts and authenticates a packet with SAEF-ForkSkinny-128-256.
m | Buffer to receive the plaintext message on output. |
mlen | Receives the length of the plaintext message on output. |
nsec | Secret nonce - not used by this algorithm. |
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 15 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int forkae_saef_128_256_aead_encrypt | ( | unsigned char * | c, |
unsigned long long * | clen, | ||
const unsigned char * | m, | ||
unsigned long long | mlen, | ||
const unsigned char * | ad, | ||
unsigned long long | adlen, | ||
const unsigned char * | nsec, | ||
const unsigned char * | npub, | ||
const unsigned char * | k | ||
) |
Encrypts and authenticates a packet with SAEF-ForkSkinny-128-256.
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. |
nsec | Secret nonce - not used by this algorithm. |
npub | Points to the public nonce for the packet which must be 15 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |