#include <string.h>#include <stdio.h>#include "siphash.h"Go to the source code of this file.
Defines | |
| #define | lo u32[0] |
| #define | hi u32[1] |
| #define | UNALIGNED_WORD_ACCESS 0 |
| #define | U8TO32_LE(p) |
| #define | U32TO8_LE(p, v) |
| #define | U8TO64_LE(p) u8to64_le(p) |
| #define | U64TO8_LE(p, v) u64to8_le(p, v) |
| #define | ROTL64_TO(v, s) |
| #define | ADD64_TO(v, s) add64_to(&(v), (s)) |
| #define | XOR64_TO(v, s) xor64_to(&(v), (s)) |
| #define | XOR64_INT(v, x) ((v).lo ^= (x)) |
| #define | sip_init_state sip_init_state_bin.u64 |
| #define | SIP_COMPRESS(v0, v1, v2, v3) |
| #define | SIP_2_ROUND(m, v0, v1, v2, v3) |
| #define | OR_BYTE(n) |
Functions | |
| static uint64_t | u8to64_le (const uint8_t *p) |
| static void | u64to8_le (uint8_t *p, uint64_t v) |
| static uint64_t * | rotl64_to (uint64_t *v, unsigned int s) |
| static uint64_t * | rotl64_swap (uint64_t *v) |
| static uint64_t * | add64_to (uint64_t *v, const uint64_t s) |
| static uint64_t * | xor64_to (uint64_t *v, const uint64_t s) |
| uint64_t | sip_hash24 (const uint8_t key[16], const uint8_t *data, size_t len) |
Variables | |
| union { | |
| char bin [32] | |
| uint64_t u64 [4] | |
| } | sip_init_state_bin |
| #define hi u32[1] |
Definition at line 22 of file siphash.c.
Referenced by assign_heap_slot(), and is_pointer_to_heap().
| #define lo u32[0] |
Definition at line 21 of file siphash.c.
Referenced by assign_heap_slot(), big2dbl(), and is_pointer_to_heap().
| #define OR_BYTE | ( | n | ) |
do { \ if (n >= 4) \ last.hi |= ((uint32_t) end[n]) << ((n) >= 4 ? (n) * 8 - 32 : 0); \ else \ last.lo |= ((uint32_t) end[n]) << ((n) >= 4 ? 0 : (n) * 8); \ } while (0)
Referenced by sip_hash24().
| #define ROTL64_TO | ( | v, | |||
| s | ) |
((s) > 32 ? rotl64_swap(rotl64_to(&(v), (s) - 32)) : \ (s) == 32 ? rotl64_swap(&(v)) : rotl64_to(&(v), (s)))
| #define SIP_2_ROUND | ( | m, | |||
| v0, | |||||
| v1, | |||||
| v2, | |||||
| v3 | ) |
do { \ XOR64_TO((v3), (m)); \ SIP_COMPRESS(v0, v1, v2, v3); \ SIP_COMPRESS(v0, v1, v2, v3); \ XOR64_TO((v0), (m)); \ } while (0)
Definition at line 388 of file siphash.c.
Referenced by sip_hash24().
| #define SIP_COMPRESS | ( | v0, | |||
| v1, | |||||
| v2, | |||||
| v3 | ) |
do { \ ADD64_TO((v0), (v1)); \ ADD64_TO((v2), (v3)); \ ROTL64_TO((v1), 13); \ ROTL64_TO((v3), 16); \ XOR64_TO((v1), (v0)); \ XOR64_TO((v3), (v2)); \ ROTL64_TO((v0), 32); \ ADD64_TO((v2), (v1)); \ ADD64_TO((v0), (v3)); \ ROTL64_TO((v1), 17); \ ROTL64_TO((v3), 21); \ XOR64_TO((v1), (v2)); \ XOR64_TO((v3), (v0)); \ ROTL64_TO((v2), 32); \ } while(0)
Definition at line 157 of file siphash.c.
Referenced by sip_hash24().
| #define sip_init_state sip_init_state_bin.u64 |
Definition at line 137 of file siphash.c.
Referenced by sip_hash24().
| #define U32TO8_LE | ( | p, | |||
| v | ) |
| #define U8TO32_LE | ( | p | ) |
| #define U8TO64_LE | ( | p | ) | u8to64_le(p) |
Definition at line 72 of file siphash.c.
Referenced by sip_hash24().
| #define XOR64_INT | ( | v, | |||
| x | ) | ((v).lo ^= (x)) |
Definition at line 130 of file siphash.c.
Referenced by sip_hash24().
| #define XOR64_TO | ( | v, | |||
| s | ) | xor64_to(&(v), (s)) |
Definition at line 121 of file siphash.c.
Referenced by sip_hash24().
Definition at line 397 of file siphash.c.
References last, OR_BYTE, SIP_2_ROUND, SIP_COMPRESS, sip_init_state, U8TO64_LE, uint64_t, XOR64_INT, and XOR64_TO.
union { ... } sip_init_state_bin [static] |
1.6.1