Lightweight Cryptography Primitives
|
ChaChaPoly implementation for performance comparisons. More...
#include "aead-common.h"
Go to the source code of this file.
Macros | |
#define | CHACHAPOLY_KEY_SIZE 32 |
Size of the key for ChaChaPoly. | |
#define | CHACHAPOLY_NONCE_SIZE 8 |
Size of the nonce for ChaChaPoly. | |
#define | CHACHAPOLY_TAG_SIZE 16 |
Size of the authentication tag for ChaChaPoly. | |
Functions | |
int | internal_chachapoly_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 ChaChaPoly. More... | |
int | internal_chachapoly_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 ChaChaPoly. More... | |
Variables | |
aead_cipher_t const | internal_chachapoly_cipher |
Meta-information block for the ChaChaPoly cipher. | |
ChaChaPoly implementation for performance comparisons.
ChaChaPoly is not one of the NIST lightweight submissions. We use it as a baseline to evaluate the performance of other ciphers. For example, a performance result of "1.2 ChaChaPolys" means that the algorithm is 1.2 times faster than ChaChaPoly on the same input data on the same hardware.
This ChaChaPoly implementation is based on the one from the Arduino Cryptography Library.
int internal_chachapoly_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 ChaChaPoly.
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 16 bytes in length. |
k | Points to the 16 bytes of the key to use to decrypt the packet. |
int internal_chachapoly_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 ChaChaPoly.
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 16 bytes in length. |
k | Points to the 16 bytes of the key to use to encrypt the packet. |