include/apr_siphash.h File Reference

APR-UTIL siphash library "SipHash-c-d is a family of pseudorandom functions (a.k.a. keyed hash functions) optimized for speed on short messages", designed by Jean-Philippe Aumasson and Daniel J. Bernstein. It generates a 64bit hash (or MAC) from the message and a 128bit key. See http://cr.yp.to/siphash/siphash-20120620.pdf for the details, c is the number of compression rounds, d the number of finalization rounds; we also define fast implementations for c = 2 with d = 4 (aka siphash-2-4), and c = 4 with d = 8 (aka siphash-4-8), as recommended parameters per the authors. More...

#include "apr.h"
#include "apu.h"

Go to the source code of this file.

Defines

#define APR_SIPHASH_DSIZE   8
#define APR_SIPHASH_KSIZE   16

Functions

apr_uint64_t apr_siphash (const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE], unsigned int c, unsigned int d)
 Computes SipHash-c-d, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.
void apr_siphash_auth (unsigned char out[APR_SIPHASH_DSIZE], const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE], unsigned int c, unsigned int d)
 Computes SipHash-c-d, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.
apr_uint64_t apr_siphash24 (const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE])
 Computes SipHash-2-4, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.
void apr_siphash24_auth (unsigned char out[APR_SIPHASH_DSIZE], const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE])
 Computes SipHash-2-4, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.
apr_uint64_t apr_siphash48 (const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE])
 Computes SipHash-4-8, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.
void apr_siphash48_auth (unsigned char out[APR_SIPHASH_DSIZE], const void *src, apr_size_t len, const unsigned char key[APR_SIPHASH_KSIZE])
 Computes SipHash-4-8, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.


Detailed Description

APR-UTIL siphash library "SipHash-c-d is a family of pseudorandom functions (a.k.a. keyed hash functions) optimized for speed on short messages", designed by Jean-Philippe Aumasson and Daniel J. Bernstein. It generates a 64bit hash (or MAC) from the message and a 128bit key. See http://cr.yp.to/siphash/siphash-20120620.pdf for the details, c is the number of compression rounds, d the number of finalization rounds; we also define fast implementations for c = 2 with d = 4 (aka siphash-2-4), and c = 4 with d = 8 (aka siphash-4-8), as recommended parameters per the authors.


Define Documentation

#define APR_SIPHASH_DSIZE   8

size of the siphash digest

#define APR_SIPHASH_KSIZE   16

size of the siphash key


Function Documentation

apr_uint64_t apr_siphash ( const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE],
unsigned int  c,
unsigned int  d 
)

Computes SipHash-c-d, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.

Parameters:
src The message
len The length of the message
key The secret key
c The number of compression rounds
d The number of finalization rounds
Returns:
The hash value as a 64bit unsigned integer

apr_uint64_t apr_siphash24 ( const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE] 
)

Computes SipHash-2-4, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.

Parameters:
src The message to hash
len The length of the message
key The secret key
Returns:
The hash value as a 64bit unsigned integer

void apr_siphash24_auth ( unsigned char  out[APR_SIPHASH_DSIZE],
const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE] 
)

Computes SipHash-2-4, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.

Parameters:
out The output buffer (or MAC)
src The message
len The length of the message
key The secret key
Returns:
The hash value as a 64bit unsigned integer

apr_uint64_t apr_siphash48 ( const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE] 
)

Computes SipHash-4-8, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key.

Parameters:
src The message
len The length of the message
key The secret key
Returns:
The hash value as a 64bit unsigned integer

void apr_siphash48_auth ( unsigned char  out[APR_SIPHASH_DSIZE],
const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE] 
)

Computes SipHash-4-8, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.

Parameters:
out The output buffer (or MAC)
src The message
len The length of the message
key The secret key
Returns:
The hash value as a 64bit unsigned integer

void apr_siphash_auth ( unsigned char  out[APR_SIPHASH_DSIZE],
const void *  src,
apr_size_t  len,
const unsigned char  key[APR_SIPHASH_KSIZE],
unsigned int  c,
unsigned int  d 
)

Computes SipHash-c-d, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key, into a possibly unaligned buffer (using the little endian representation as defined by the authors for interoperabilty) usable as a MAC.

Parameters:
out The output buffer (or MAC)
src The message
len The length of the message
key The secret key
c The number of compression rounds
d The number of finalization rounds
Returns:
The hash value as a 64bit unsigned integer


Generated on Mon Mar 11 06:19:45 2019 for Apache Portable Runtime Utility Library by  doxygen 1.5.6