gimli-core.h 594 B

12345678910111213141516171819202122232425
  1. #ifdef __SSE2__
  2. #include "gimli-core/sse2.h"
  3. #else
  4. #include "gimli-core/portable.h"
  5. #endif
  6. static void
  7. gimli_core_u8(uint8_t state_u8[gimli_BLOCKBYTES], uint8_t tag)
  8. {
  9. state_u8[gimli_BLOCKBYTES - 1] ^= tag;
  10. #ifndef NATIVE_LITTLE_ENDIAN
  11. uint32_t state_u32[12];
  12. int i;
  13. for (i = 0; i < 12; i++) {
  14. state_u32[i] = LOAD32_LE(&state_u8[i * 4]);
  15. }
  16. gimli_core(state_u32);
  17. for (i = 0; i < 12; i++) {
  18. STORE32_LE(&state_u8[i * 4], state_u32[i]);
  19. }
  20. #else
  21. gimli_core((uint32_t *) (void *) state_u8); /* state_u8 must be properly aligned */
  22. #endif
  23. }