mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
fixup! Initial ASCON hash256 and AEAD128 support based on NIST SP 800-232 ipd
This commit is contained in:
@ -386,7 +386,7 @@ int wc_AsconAEAD128_EncryptUpdate(wc_AsconAEAD128* a, byte* out,
|
|||||||
else if (a->op != ASCON_AEAD128_ENCRYPT)
|
else if (a->op != ASCON_AEAD128_ENCRYPT)
|
||||||
return BAD_STATE_E;
|
return BAD_STATE_E;
|
||||||
|
|
||||||
/* Process leftover block */
|
/* Process leftover from last block */
|
||||||
if (a->lastBlkSz != 0) {
|
if (a->lastBlkSz != 0) {
|
||||||
word32 toProcess = min(ASCON_AEAD128_RATE - a->lastBlkSz, inSz);
|
word32 toProcess = min(ASCON_AEAD128_RATE - a->lastBlkSz, inSz);
|
||||||
xorbuf(&a->state.s8[a->lastBlkSz], in, toProcess);
|
xorbuf(&a->state.s8[a->lastBlkSz], in, toProcess);
|
||||||
@ -411,7 +411,7 @@ int wc_AsconAEAD128_EncryptUpdate(wc_AsconAEAD128* a, byte* out,
|
|||||||
out += ASCON_AEAD128_RATE;
|
out += ASCON_AEAD128_RATE;
|
||||||
inSz -= ASCON_AEAD128_RATE;
|
inSz -= ASCON_AEAD128_RATE;
|
||||||
}
|
}
|
||||||
|
/* Store leftover */
|
||||||
xorbuf(a->state.s64, in, inSz);
|
xorbuf(a->state.s64, in, inSz);
|
||||||
XMEMCPY(out, a->state.s64, inSz);
|
XMEMCPY(out, a->state.s64, inSz);
|
||||||
a->lastBlkSz = inSz;
|
a->lastBlkSz = inSz;
|
||||||
@ -430,7 +430,7 @@ int wc_AsconAEAD128_EncryptFinal(wc_AsconAEAD128* a, byte* tag)
|
|||||||
if (a->op != ASCON_AEAD128_ENCRYPT)
|
if (a->op != ASCON_AEAD128_ENCRYPT)
|
||||||
return BAD_STATE_E;
|
return BAD_STATE_E;
|
||||||
|
|
||||||
/* Pad last block */
|
/* Process leftover from last block */
|
||||||
a->state.s8[a->lastBlkSz] ^= 1;
|
a->state.s8[a->lastBlkSz] ^= 1;
|
||||||
|
|
||||||
a->state.s64[2] ^= a->key[0];
|
a->state.s64[2] ^= a->key[0];
|
||||||
@ -487,7 +487,7 @@ int wc_AsconAEAD128_DecryptUpdate(wc_AsconAEAD128* a, byte* out,
|
|||||||
out += ASCON_AEAD128_RATE;
|
out += ASCON_AEAD128_RATE;
|
||||||
inSz -= ASCON_AEAD128_RATE;
|
inSz -= ASCON_AEAD128_RATE;
|
||||||
}
|
}
|
||||||
|
/* Store leftover */
|
||||||
xorbufout(out, a->state.s64, in, inSz);
|
xorbufout(out, a->state.s64, in, inSz);
|
||||||
XMEMCPY(a->state.s64, in, inSz);
|
XMEMCPY(a->state.s64, in, inSz);
|
||||||
a->lastBlkSz = inSz;
|
a->lastBlkSz = inSz;
|
||||||
|
Reference in New Issue
Block a user