Lightweight Cryptography Primitives
|
GASCON-128 encryption algorithm and related family members. More...
#include "aead-common.h"
Go to the source code of this file.
Data Structures | |
union | gascon_hash_state_t |
State information for GASCON-HASH and GASCON-XOF incremental modes. More... | |
Macros | |
#define | GASCON128_KEY_SIZE 16 |
Size of the key for GASCON-128 and GASCON-128a. | |
#define | GASCON128_NONCE_SIZE 16 |
Size of the nonce for GASCON-128 and GASCON-128a. | |
#define | GASCON128_TAG_SIZE 16 |
Size of the authentication tag for GASCON-128 and GASCON-128a. | |
#define | GASCON80PQ_KEY_SIZE 20 |
Size of the key for GASCON-80pq. | |
#define | GASCON80PQ_NONCE_SIZE 16 |
Size of the nonce for GASCON-80pq. | |
#define | GASCON80PQ_TAG_SIZE 16 |
Size of the authentication tag for GASCON-80pq. | |
#define | GASCON_HASH_SIZE 32 |
Size of the hash output for GASCON-HASH. | |
Functions | |
int | gascon128_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 GASCON-128. More... | |
int | gascon128_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 GASCON-128. More... | |
int | gascon128a_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 GASCON-128a. More... | |
int | gascon128a_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 GASCON-128a. More... | |
int | gascon80pq_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 GASCON-80pq. More... | |
int | gascon80pq_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 GASCON-80pq. More... | |
int | gascon_hash (unsigned char *out, const unsigned char *in, unsigned long long inlen) |
Hashes a block of input data with GASCON-HASH. More... | |
void | gascon_hash_init (gascon_hash_state_t *state) |
Initializes the state for an GASCON-HASH hashing operation. More... | |
void | gascon_hash_update (gascon_hash_state_t *state, const unsigned char *in, unsigned long long inlen) |
Updates an GASCON-HASH state with more input data. More... | |
void | gascon_hash_finalize (gascon_hash_state_t *state, unsigned char *out) |
Returns the final hash value from an GASCON-HASH hashing operation. More... | |
int | gascon_xof (unsigned char *out, const unsigned char *in, unsigned long long inlen) |
Hashes a block of input data with GASCON-XOF and generates a fixed-length 32 byte output. More... | |
void | gascon_xof_init (gascon_hash_state_t *state) |
Initializes the state for an GASCON-XOF hashing operation. More... | |
void | gascon_xof_absorb (gascon_hash_state_t *state, const unsigned char *in, unsigned long long inlen) |
Aborbs more input data into an GASCON-XOF state. More... | |
void | gascon_xof_squeeze (gascon_hash_state_t *state, unsigned char *out, unsigned long long outlen) |
Squeezes output data from an GASCON-XOF state. More... | |
Variables | |
aead_cipher_t const | gascon128_cipher |
Meta-information block for the GASCON-128 cipher. | |
aead_cipher_t const | gascon128a_cipher |
Meta-information block for the GASCON-128a cipher. | |
aead_cipher_t const | gascon80pq_cipher |
Meta-information block for the GASCON-80pq cipher. | |
aead_hash_algorithm_t const | gascon_hash_algorithm |
Meta-information block for the GASCON-HASH algorithm. | |
aead_hash_algorithm_t const | gascon_xof_algorithm |
Meta-information block for the GASCON-XOF algorithm. | |
GASCON-128 encryption algorithm and related family members.
The GASCON family consists of several related algorithms:
References: https://gascon.iaik.tugraz.at/
int gascon128_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 GASCON-128.
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 gascon128_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 GASCON-128.
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. |
int gascon128a_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 GASCON-128a.
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 gascon128a_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 GASCON-128a.
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. |
int gascon80pq_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 GASCON-80pq.
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 20 bytes of the key to use to decrypt the packet. |
int gascon80pq_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 GASCON-80pq.
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 20 bytes of the key to use to encrypt the packet. |
int gascon_hash | ( | unsigned char * | out, |
const unsigned char * | in, | ||
unsigned long long | inlen | ||
) |
Hashes a block of input data with GASCON-HASH.
out | Buffer to receive the hash output which must be at least GASCON_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |
void gascon_hash_finalize | ( | gascon_hash_state_t * | state, |
unsigned char * | out | ||
) |
Returns the final hash value from an GASCON-HASH hashing operation.
state | Hash state to be finalized. |
out | Points to the output buffer to receive the 32-byte hash value. |
void gascon_hash_init | ( | gascon_hash_state_t * | state | ) |
Initializes the state for an GASCON-HASH hashing operation.
state | Hash state to be initialized. |
void gascon_hash_update | ( | gascon_hash_state_t * | state, |
const unsigned char * | in, | ||
unsigned long long | inlen | ||
) |
Updates an GASCON-HASH state with more input data.
state | Hash state to be updated. |
in | Points to the input data to be incorporated into the state. |
inlen | Length of the input data to be incorporated into the state. |
int gascon_xof | ( | unsigned char * | out, |
const unsigned char * | in, | ||
unsigned long long | inlen | ||
) |
Hashes a block of input data with GASCON-XOF and generates a fixed-length 32 byte output.
out | Buffer to receive the hash output which must be at least GASCON_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |
Use gascon_xof_squeeze() instead if you need variable-length XOF ouutput.
void gascon_xof_absorb | ( | gascon_hash_state_t * | state, |
const unsigned char * | in, | ||
unsigned long long | inlen | ||
) |
Aborbs more input data into an GASCON-XOF state.
state | Hash state to be updated. |
in | Points to the input data to be absorbed into the state. |
inlen | Length of the input data to be absorbed into the state. |
void gascon_xof_init | ( | gascon_hash_state_t * | state | ) |
Initializes the state for an GASCON-XOF hashing operation.
state | Hash state to be initialized. |
void gascon_xof_squeeze | ( | gascon_hash_state_t * | state, |
unsigned char * | out, | ||
unsigned long long | outlen | ||
) |
Squeezes output data from an GASCON-XOF state.
state | Hash state to squeeze the output data from. |
out | Points to the output buffer to receive the squeezed data. |
outlen | Number of bytes of data to squeeze out of the state. |