|
Lightweight Cryptography Primitives
|
Internal implementation of the ASCON permutation. More...
#include "internal-util.h"Go to the source code of this file.
Data Structures | |
| union | ascon_state_t |
| Structure of the internal state of the ASCON permutation. More... | |
Macros | |
| #define | ASCON_SLICED 1 |
| Defined to 1 if the 32-bit sliced version of ASCON is preferred. | |
| #define | ASCON128_IV 0x80400c0600000000ULL |
| Initialization vector for ASCON-128. | |
| #define | ASCON128a_IV 0x80800c0800000000ULL |
| Initialization vector for ASCON-128a. | |
| #define | ASCON80PQ_IV 0xa0400c06U |
| Initialization vector for ASCON-80pq. | |
| #define | ascon_set_sliced(state, data, offset) |
| Sets data into the ASCON state in sliced form. More... | |
| #define | ascon_absorb_sliced(state, data, offset) |
| Absorbs data into the ASCON state in sliced form. More... | |
| #define | ascon_absorb32_low_sliced(state, data, offset) |
| Absorbs 32 bits of data into the ASCON state in sliced form. More... | |
| #define | ascon_absorb32_high_sliced(state, data, offset) |
| Absorbs 32 bits of data into the ASCON state in sliced form. More... | |
| #define | ascon_squeeze_sliced(state, data, offset) |
| Squeezes data from the ASCON state in sliced form. More... | |
| #define | ascon_encrypt_sliced(state, c, m, offset) |
| Encrypts data using the ASCON state in sliced form. More... | |
| #define | ascon_decrypt_sliced(state, m, c, offset) |
| Decrypts data using the ASCON state in sliced form. More... | |
| #define | ascon_separator() (state.W[8] ^= 0x01) |
| Absorbs the standard ASCON separator for switching between associated data and message payload. | |
Functions | |
| void | ascon_permute (ascon_state_t *state, uint8_t first_round) |
| Permutes the ASCON state. More... | |
| void | ascon_to_sliced (ascon_state_t *state) |
| Converts an ASCON state from byte form into sliced form. More... | |
| void | ascon_from_sliced (ascon_state_t *state) |
| Converts an ASCON state from sliced form into byte form. More... | |
| void | ascon_permute_sliced (ascon_state_t *state, uint8_t first_round) |
| Permutes the ASCON state in sliced form. More... | |
Internal implementation of the ASCON permutation.
References: http://competitions.cr.yp.to/round3/asconv12.pdf, http://ascon.iaik.tugraz.at/
| #define ascon_absorb32_high_sliced | ( | state, | |
| data, | |||
| offset | |||
| ) |
Absorbs 32 bits of data into the ASCON state in sliced form.
| state | The ASCON state for the data to be absorbed into. |
| data | Points to 4 bytes of data in big-endian byte order to absorb. |
| offset | Offset of the 64-bit word within the state to absorb at, between 0 and 4. |
The data is absorbed into the high bits of the 64-bit word at offset.
| #define ascon_absorb32_low_sliced | ( | state, | |
| data, | |||
| offset | |||
| ) |
Absorbs 32 bits of data into the ASCON state in sliced form.
| state | The ASCON state for the data to be absorbed into. |
| data | Points to 4 bytes of data in big-endian byte order to absorb. |
| offset | Offset of the 64-bit word within the state to absorb at, between 0 and 4. |
The data is absorbed into the low bits of the 64-bit word at offset.
| #define ascon_absorb_sliced | ( | state, | |
| data, | |||
| offset | |||
| ) |
Absorbs data into the ASCON state in sliced form.
| state | The ASCON state for the data to be absorbed into. |
| data | Points to 8 bytes of data in big-endian byte order to absorb. |
| offset | Offset of the 64-bit word within the state to absorb at, between 0 and 4. |
| #define ascon_decrypt_sliced | ( | state, | |
| m, | |||
| c, | |||
| offset | |||
| ) |
Decrypts data using the ASCON state in sliced form.
| state | The ASCON state. |
| m | Points to 8 bytes of output plaintext in big-endian byte order. |
| c | Points to 8 bytes of input ciphertext in big-endian byte order. |
| offset | Offset of the 64-bit word within the state to absorb and squeeze at, between 0 and 4. |
| #define ascon_encrypt_sliced | ( | state, | |
| c, | |||
| m, | |||
| offset | |||
| ) |
Encrypts data using the ASCON state in sliced form.
| state | The ASCON state. |
| c | Points to 8 bytes of output ciphertext in big-endian byte order. |
| m | Points to 8 bytes of input plaintext in big-endian byte order. |
| offset | Offset of the 64-bit word within the state to absorb and squeeze at, between 0 and 4. |
| #define ascon_set_sliced | ( | state, | |
| data, | |||
| offset | |||
| ) |
Sets data into the ASCON state in sliced form.
| state | The ASCON state for the data to be absorbed into. |
| data | Points to 8 bytes of data in big-endian byte order to set. |
| offset | Offset of the 64-bit word within the state to set at, between 0 and 4. |
| #define ascon_squeeze_sliced | ( | state, | |
| data, | |||
| offset | |||
| ) |
Squeezes data from the ASCON state in sliced form.
| state | The ASCON state to extract the data from. |
| data | Points to the 8 bytes to be extracted from the state. |
| offset | Offset of the 64-bit word within the state to extract, between 0 and 4. |
| void ascon_from_sliced | ( | ascon_state_t * | state | ) |
Converts an ASCON state from sliced form into byte form.
| state | The ASCON state to be converted, in host byte order on entry and in big-endian byte order on exit. |
| void ascon_permute | ( | ascon_state_t * | state, |
| uint8_t | first_round | ||
| ) |
Permutes the ASCON state.
| state | The ASCON state to be permuted. |
| first_round | The first round (of 12) to be performed; 0, 4, or 6. |
The input and output state will be in big-endian byte order.
| void ascon_permute_sliced | ( | ascon_state_t * | state, |
| uint8_t | first_round | ||
| ) |
Permutes the ASCON state in sliced form.
| state | The ASCON state to be permuted. |
| first_round | The first round (of 12) to be performed; 0, 4, or 6. |
The input and output state will be in host byte order.
| void ascon_to_sliced | ( | ascon_state_t * | state | ) |
Converts an ASCON state from byte form into sliced form.
| state | The ASCON state to be converted, in big-endian byte order on entry and in host byte order on exit. |
1.8.6