Ruby
3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
siphash.h (892c46283a5ea4179500d951c9d4866c0051f27b)
1
#ifndef SIPHASH_H
2
#define SIPHASH_H 1
3
#include <stdlib.h>
4
#ifdef HAVE_STDINT_H
5
#include <stdint.h>
6
#endif
7
#ifdef HAVE_INTTYPES_H
8
#include <inttypes.h>
9
#endif
10
11
#ifndef HAVE_UINT64_T
12
typedef
struct
{
13
uint32_t u32[2];
14
}
sip_uint64_t
;
15
#define uint64_t sip_uint64_t
16
#else
17
typedef
uint64_t
sip_uint64_t
;
18
#endif
19
20
typedef
struct
{
21
int
c;
22
int
d;
23
uint64_t v[4];
24
uint8_t buf[
sizeof
(uint64_t)];
25
uint8_t buflen;
26
uint8_t msglen_byte;
27
}
sip_state
;
28
29
typedef
struct
sip_interface_st sip_interface;
30
31
typedef
struct
{
32
sip_state
state[1];
33
const
sip_interface *methods;
34
}
sip_hash
;
35
36
sip_hash
*sip_hash_new(
const
uint8_t key[16],
int
c,
int
d);
37
sip_hash
*sip_hash_init(
sip_hash
*h,
const
uint8_t key[16],
int
c,
int
d);
38
int
sip_hash_update(
sip_hash
*h,
const
uint8_t *data,
size_t
len
);
39
int
sip_hash_final(
sip_hash
*h, uint8_t **digest,
size_t
*
len
);
40
int
sip_hash_final_integer(
sip_hash
*h, uint64_t *digest);
41
int
sip_hash_digest(
sip_hash
*h,
const
uint8_t *data,
size_t
data_len, uint8_t **digest,
size_t
*digest_len);
42
int
sip_hash_digest_integer(
sip_hash
*h,
const
uint8_t *data,
size_t
data_len, uint64_t *digest);
43
void
sip_hash_free(
sip_hash
*h);
44
void
sip_hash_dump(
sip_hash
*h);
45
46
NO_SANITIZE(
"unsigned-integer-overflow"
, uint64_t sip_hash13(
const
uint8_t key[16],
const
uint8_t *data,
size_t
len
));
47
48
#endif
len
int len
Length of the buffer.
Definition:
io.h:8
sip_hash
Definition:
siphash.h:31
sip_state
Definition:
siphash.h:20
sip_uint64_t
Definition:
siphash.h:12
Generated by
1.9.1