32 #if defined(ASCON_BACKEND_DIRECT_XOR)
34 #if defined(ASCON_CHECK_ACQUIRE_RELEASE)
38 static int acquired = 0;
43 #if defined(ASCON_CHECK_ACQUIRE_RELEASE)
45 fprintf(stderr,
"acquire and release operations are not balanced\n");
60 #if defined(ASCON_CHECK_ACQUIRE_RELEASE)
62 fprintf(stderr,
"acquire and release operations are not balanced\n");
76 while (offset < 40 && size > 0) {
86 while (offset < 40 && size > 0) {
96 while (offset < 40 && size > 0) {
106 while (offset < 40 && size > 0) {
115 unsigned offset,
unsigned size)
117 while (offset < 40 && size > 0) {
118 *output++ = *input++ ^
state->
B[offset];
126 unsigned offset,
unsigned size)
128 while (offset < 40 && size > 0) {
129 unsigned char in = *input++;
130 *output++ = in ^
state->
B[offset];
141 #if defined(ASCON_CHECK_ACQUIRE_RELEASE)
143 fprintf(stderr,
"acquire and release operations are not balanced\n");
154 #if defined(ASCON_CHECK_ACQUIRE_RELEASE)
156 fprintf(stderr,
"acquire and release operations are not balanced\n");
165 memcpy(dest->
B, src->
B,
sizeof(dest->
B));
#define ascon_backend_free(state)
#define ascon_backend_init(state)
Direct access to the ASCON permutation primitive.
void ascon_overwrite_with_zeroes(ascon_state_t *state, unsigned offset, unsigned size)
Overwrites a part of the ASCON state with zeroes.
void ascon_free(ascon_state_t *state)
Frees an ASCON permutation state and attempts to destroy any sensitive material.
void ascon_release(ascon_state_t *state)
Temporarily releases access to any shared hardware resources that a permutation state was using.
void ascon_overwrite_bytes(ascon_state_t *state, const uint8_t *data, unsigned offset, unsigned size)
Overwrites existing bytes in the ASCON state.
void ascon_copy(ascon_state_t *dest, const ascon_state_t *src)
Copies the entire ASCON permutation state from a source to a destination.
void ascon_extract_bytes(const ascon_state_t *state, uint8_t *data, unsigned offset, unsigned size)
Extracts bytes from the ASCON state.
void ascon_extract_and_overwrite_bytes(ascon_state_t *state, const uint8_t *input, uint8_t *output, unsigned offset, unsigned size)
Extracts bytes from the ASCON state and XOR's them with input bytes to produce output bytes....
void ascon_add_bytes(ascon_state_t *state, const uint8_t *data, unsigned offset, unsigned size)
Adds bytes to the ASCON state by XOR'ing them with existing bytes.
void ascon_extract_and_add_bytes(const ascon_state_t *state, const uint8_t *input, uint8_t *output, unsigned offset, unsigned size)
Extracts bytes from the ASCON state and XOR's them with input bytes to produce output bytes.
void ascon_acquire(ascon_state_t *state)
Re-acquires access to any shared hardware resources that a permutation state was using.
void ascon_init(ascon_state_t *state)
Initializes the words of the ASCON permutation state to zero.
ascon_state_t state
[snippet_key]
unsigned char data[8]
[snippet_key]
Structure of the internal state of the ASCON permutation.
System utilities of use to applications that use ASCON.
void ascon_clean(void *buf, unsigned size)
Cleans a buffer that contains sensitive material.