@@ -194,24 +194,28 @@ aegis128x2_mac_nr(uint8_t *mac, size_t maclen, uint64_t adlen, aes_block_t *stat
194
194
195
195
memset (t , 0 , sizeof t );
196
196
if (maclen == 16 ) {
197
+ #if AES_BLOCK_LENGTH > 16
197
198
tmp = AES_BLOCK_XOR (state [6 ], AES_BLOCK_XOR (state [5 ], state [4 ]));
198
199
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [3 ], state [2 ]));
199
200
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [1 ], state [0 ]));
200
201
AES_BLOCK_STORE (t , tmp );
201
-
202
202
memcpy (state , state0 , sizeof (aegis_blocks ));
203
203
for (i = 0 ; i < AES_BLOCK_LENGTH / 32 ; i ++ ) {
204
204
aegis128x2_absorb (t + i * 32 , state );
205
205
}
206
+ tmp = AES_BLOCK_LOAD_64x2 (0 , AES_BLOCK_LENGTH << 3 );
207
+ tmp = AES_BLOCK_XOR (tmp , state [2 ]);
206
208
for (i = 0 ; i < 7 ; i ++ ) {
207
209
aegis128x2_update (state , tmp , tmp );
208
210
}
211
+ #endif
209
212
tmp = AES_BLOCK_XOR (state [6 ], AES_BLOCK_XOR (state [5 ], state [4 ]));
210
213
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [3 ], state [2 ]));
211
214
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [1 ], state [0 ]));
212
215
AES_BLOCK_STORE (t , tmp );
213
216
memcpy (mac , t , 16 );
214
217
} else if (maclen == 32 ) {
218
+ #if AES_BLOCK_LENGTH > 16
215
219
tmp = AES_BLOCK_XOR (state [3 ], state [2 ]);
216
220
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [1 ], state [0 ]));
217
221
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
224
228
for (i = 0 ; i < 2 * AES_BLOCK_LENGTH / 32 ; i ++ ) {
225
229
aegis128x2_absorb (t + i * 32 , state );
226
230
}
231
+ tmp = AES_BLOCK_LOAD_64x2 (0 , (2 * AES_BLOCK_LENGTH ) << 3 );
232
+ tmp = AES_BLOCK_XOR (tmp , state [2 ]);
227
233
for (i = 0 ; i < 7 ; i ++ ) {
228
234
aegis128x2_update (state , tmp , tmp );
229
235
}
236
+ #endif
230
237
tmp = AES_BLOCK_XOR (state [3 ], state [2 ]);
231
238
tmp = AES_BLOCK_XOR (tmp , AES_BLOCK_XOR (state [1 ], state [0 ]));
232
239
AES_BLOCK_STORE (t , tmp );
0 commit comments