Skip to content

Commit c24628f

Browse files
committed
Set adlen for the the second finalization
1 parent 086aead commit c24628f

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/aegis128x2/aegis128x2_common.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,24 +194,28 @@ aegis128x2_mac_nr(uint8_t *mac, size_t maclen, uint64_t adlen, aes_block_t *stat
194194

195195
memset(t, 0, sizeof t);
196196
if (maclen == 16) {
197+
#if AES_BLOCK_LENGTH > 16
197198
tmp = AES_BLOCK_XOR(state[6], AES_BLOCK_XOR(state[5], state[4]));
198199
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2]));
199200
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
200201
AES_BLOCK_STORE(t, tmp);
201-
202202
memcpy(state, state0, sizeof(aegis_blocks));
203203
for (i = 0; i < AES_BLOCK_LENGTH / 32; i++) {
204204
aegis128x2_absorb(t + i * 32, state);
205205
}
206+
tmp = AES_BLOCK_LOAD_64x2(0, AES_BLOCK_LENGTH << 3);
207+
tmp = AES_BLOCK_XOR(tmp, state[2]);
206208
for (i = 0; i < 7; i++) {
207209
aegis128x2_update(state, tmp, tmp);
208210
}
211+
#endif
209212
tmp = AES_BLOCK_XOR(state[6], AES_BLOCK_XOR(state[5], state[4]));
210213
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[3], state[2]));
211214
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
212215
AES_BLOCK_STORE(t, tmp);
213216
memcpy(mac, t, 16);
214217
} else if (maclen == 32) {
218+
#if AES_BLOCK_LENGTH > 16
215219
tmp = AES_BLOCK_XOR(state[3], state[2]);
216220
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
217221
AES_BLOCK_STORE(t, tmp);
@@ -224,9 +228,12 @@ aegis128x2_mac_nr(uint8_t *mac, size_t maclen, uint64_t adlen, aes_block_t *stat
224228
for (i = 0; i < 2 * AES_BLOCK_LENGTH / 32; i++) {
225229
aegis128x2_absorb(t + i * 32, state);
226230
}
231+
tmp = AES_BLOCK_LOAD_64x2(0, (2 * AES_BLOCK_LENGTH) << 3);
232+
tmp = AES_BLOCK_XOR(tmp, state[2]);
227233
for (i = 0; i < 7; i++) {
228234
aegis128x2_update(state, tmp, tmp);
229235
}
236+
#endif
230237
tmp = AES_BLOCK_XOR(state[3], state[2]);
231238
tmp = AES_BLOCK_XOR(tmp, AES_BLOCK_XOR(state[1], state[0]));
232239
AES_BLOCK_STORE(t, tmp);

0 commit comments

Comments
 (0)