#include "echo.h"
-#include "gf256mul/gf256mul.h"
-#include "memxor/memxor.h"
+#include "gf256mul.h"
+#include "memxor.h"
+#include "aes_enc_round.h"
#include <stdint.h>
#include <string.h>
#include "cli.h"
#endif
-void aes_encrypt_round(void* state, void* key);
#define INDEX(c,r) ((c)*16*4+(r)*16)
static void echo_compress(uint8_t* s, uint8_t iterations, uint64_t* c, void* salt){
uint8_t i, j;
- uint8_t k[16];
+ union {
+ uint8_t v8[16];
+ uint64_t v64[2];
+ } k;
#if DEBUG
uint8_t round=0;
#endif
- memcpy(k, c, 8);
- memset(k+8, 0, 8);
+ memcpy(k.v8, c, 8);
+ memset(k.v8+8, 0, 8);
do{
/* BIG.SubWords */
#if DEBUG
}
#endif
for(i=0; i<16; ++i){
- aes_encrypt_round(s+16*i, k);
- aes_encrypt_round(s+16*i, salt);
- *((uint64_t*)(k)) += 1;
+ aes_enc_round((aes_cipher_state_t*)(s+16*i), (aes_roundkey_t*)k.v8);
+ aes_enc_round((aes_cipher_state_t*)(s+16*i), (aes_roundkey_t*)salt);
+ k.v64[0] += 1;
}
#if DEBUG
if(round<DEBUG_DEPTH){