Ruby
1.9.3p551(2014-11-13revision48407)
Main Page
Modules
Data Structures
Files
File List
Globals
siphash.h
Go to the documentation of this file.
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
uint64_t
sip_hash24
(
const
uint8_t
key
[16],
const
uint8_t
*data,
size_t
len
);
47
48
#endif
49
Generated on Fri Nov 14 2014 16:04:13 for Ruby by
1.8.3