3535
3636#include " sph_echo.h"
3737
38- #ifdef __cplusplus
39- extern "C" {
40- #endif
41-
42- #if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_ECHO
43- #define SPH_SMALL_FOOTPRINT_ECHO 1
44- #endif
45-
4638/*
4739 * We can use a 64-bit implementation only if a 64-bit type is available.
4840 */
@@ -69,8 +61,6 @@ extern "C"{
6961 } \
7062 } while (0 )
7163
72- #if SPH_SMALL_FOOTPRINT_ECHO
73-
7464static void
7565aes_2rounds_all (sph_u64 W[16 ][2 ],
7666 sph_u32 *pK0, sph_u32 *pK1, sph_u32 *pK2, sph_u32 *pK3)
@@ -109,46 +99,6 @@ aes_2rounds_all(sph_u64 W[16][2],
10999 aes_2rounds_all (W, &K0, &K1, &K2, &K3); \
110100 } while (0 )
111101
112- #else
113-
114- #define AES_2ROUNDS (X ) do { \
115- sph_u32 X0 = (sph_u32)(X[0]); \
116- sph_u32 X1 = (sph_u32)(X[0] >> 32); \
117- sph_u32 X2 = (sph_u32)(X[1]); \
118- sph_u32 X3 = (sph_u32)(X[1] >> 32); \
119- sph_u32 Y0, Y1, Y2, Y3; \
120- AES_ROUND_LE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3); \
121- AES_ROUND_NOKEY_LE(Y0, Y1, Y2, Y3, X0, X1, X2, X3); \
122- X[0] = (sph_u64)X0 | ((sph_u64)X1 << 32); \
123- X[1] = (sph_u64)X2 | ((sph_u64)X3 << 32); \
124- if ((K0 = T32(K0 + 1)) == 0) { \
125- if ((K1 = T32(K1 + 1)) == 0) \
126- if ((K2 = T32(K2 + 1)) == 0) \
127- K3 = T32(K3 + 1); \
128- } \
129- } while (0)
130-
131- #define BIG_SUB_WORDS do { \
132- AES_2ROUNDS(W[ 0]); \
133- AES_2ROUNDS(W[ 1]); \
134- AES_2ROUNDS(W[ 2]); \
135- AES_2ROUNDS(W[ 3]); \
136- AES_2ROUNDS(W[ 4]); \
137- AES_2ROUNDS(W[ 5]); \
138- AES_2ROUNDS(W[ 6]); \
139- AES_2ROUNDS(W[ 7]); \
140- AES_2ROUNDS(W[ 8]); \
141- AES_2ROUNDS(W[ 9]); \
142- AES_2ROUNDS(W[10]); \
143- AES_2ROUNDS(W[11]); \
144- AES_2ROUNDS(W[12]); \
145- AES_2ROUNDS(W[13]); \
146- AES_2ROUNDS(W[14]); \
147- AES_2ROUNDS(W[15]); \
148- } while (0)
149-
150- #endif
151-
152102#define SHIFT_ROW1 (a, b, c, d ) do { \
153103 sph_u64 tmp; \
154104 tmp = W[a][0 ]; \
@@ -187,8 +137,6 @@ aes_2rounds_all(sph_u64 W[16][2],
187137 SHIFT_ROW3 (3 , 7 , 11 , 15 ); \
188138 } while (0 )
189139
190- #if SPH_SMALL_FOOTPRINT_ECHO
191-
192140static void
193141mix_column (sph_u64 W[16 ][2 ], int ia, int ib, int ic, int id)
194142{
@@ -217,35 +165,6 @@ mix_column(sph_u64 W[16][2], int ia, int ib, int ic, int id)
217165
218166#define MIX_COLUMN (a, b, c, d ) mix_column(W, a, b, c, d)
219167
220- #else
221-
222- #define MIX_COLUMN1 (ia , ib , ic , id , n ) do { \
223- sph_u64 a = W[ia][n]; \
224- sph_u64 b = W[ib][n]; \
225- sph_u64 c = W[ic][n]; \
226- sph_u64 d = W[id][n]; \
227- sph_u64 ab = a ^ b; \
228- sph_u64 bc = b ^ c; \
229- sph_u64 cd = c ^ d; \
230- sph_u64 abx = ((ab & C64(0x8080808080808080)) >> 7) * 27U \
231- ^ ((ab & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
232- sph_u64 bcx = ((bc & C64(0x8080808080808080)) >> 7) * 27U \
233- ^ ((bc & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
234- sph_u64 cdx = ((cd & C64(0x8080808080808080)) >> 7) * 27U \
235- ^ ((cd & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
236- W[ia][n] = abx ^ bc ^ d; \
237- W[ib][n] = bcx ^ a ^ cd; \
238- W[ic][n] = cdx ^ ab ^ d; \
239- W[id][n] = abx ^ bcx ^ cdx ^ ab ^ c; \
240- } while (0)
241-
242- #define MIX_COLUMN (a , b , c , d ) do { \
243- MIX_COLUMN1(a, b, c, d, 0); \
244- MIX_COLUMN1(a, b, c, d, 1); \
245- } while (0)
246-
247- #endif
248-
249168#define BIG_MIX_COLUMNS do { \
250169 MIX_COLUMN (0 , 1 , 2 , 3 ); \
251170 MIX_COLUMN (4 , 5 , 6 , 7 ); \
@@ -282,7 +201,6 @@ mix_column(sph_u64 W[16][2], int ia, int ib, int ic, int id)
282201 FINAL_BIG; \
283202 } while (0 )
284203
285-
286204#define INCR_COUNTER (sc, val ) do { \
287205 sc->C0 = T32 (sc->C0 + (sph_u32)(val)); \
288206 if (sc->C0 < (sph_u32)(val)) { \
@@ -408,31 +326,28 @@ echo_big_close(sph_echo_big_context *sc, unsigned ub, unsigned n,
408326
409327/* see sph_echo.h */
410328void
411- sph_echo512_init (void * cc )
329+ sph_echo512_init (sph_echo512_context *cc)
412330{
413331 echo_big_init (cc, 512 );
414332}
415333
416334/* see sph_echo.h */
417335void
418- sph_echo512 (void * cc , const void * data , size_t len )
336+ sph_echo512 (sph_echo512_context *cc, const void *data, size_t len)
419337{
420- echo_big_core (cc , data , len );
338+ echo_big_core (cc, static_cast < const unsigned char *>( data) , len);
421339}
422340
423341/* see sph_echo.h */
424342void
425- sph_echo512_close (void * cc , void * dst )
343+ sph_echo512_close (sph_echo512_context *cc, void *dst)
426344{
427345 echo_big_close (cc, 0 , 0 , dst, 16 );
428346}
429347
430348/* see sph_echo.h */
431349void
432- sph_echo512_addbits_and_close (void * cc , unsigned ub , unsigned n , void * dst )
350+ sph_echo512_addbits_and_close (sph_echo512_context *cc, unsigned ub, unsigned n, void *dst)
433351{
434352 echo_big_close (cc, ub, n, dst, 16 );
435353}
436- #ifdef __cplusplus
437- }
438- #endif
0 commit comments