Apache Portable Runtime Utility Library
Macros | Functions | Variables
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"

Go to the source code of this file.

Macros

#define APR_SIPHASH_DSIZE   8
 
#define APR_SIPHASH_KSIZE   16
 

Functions

 APR_DECLARE (apr_uint64_t) apr_siphash(const void *src
 Computes SipHash-c-d, producing a 64bit (APR_SIPHASH_DSIZE) hash from a message and a 128bit (APR_SIPHASH_KSIZE) secret key. More...
 
 APR_DECLARE (void) apr_siphash_auth(unsigned char out[APR_SIPHASH_DSIZE]
 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. More...
 

Variables

apr_size_t len
 
apr_size_t const unsigned char key [APR_SIPHASH_KSIZE]
 
apr_size_t const unsigned char unsigned int c
 
apr_size_t const unsigned char unsigned int unsigned int d
 
const void * src
 

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.

Macro Definition Documentation

#define APR_SIPHASH_DSIZE   8

size of the siphash digest

#define APR_SIPHASH_KSIZE   16

size of the siphash key

Function Documentation

APR_DECLARE ( apr_uint64_t  ) const

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

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

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

Parameters
srcThe message
lenThe length of the message
keyThe secret key
cThe number of compression rounds
dThe number of finalization rounds
Returns
The hash value as a 64bit unsigned integer
Parameters
srcThe message to hash
lenThe length of the message
keyThe secret key
Returns
The hash value as a 64bit unsigned integer
Parameters
srcThe message
lenThe length of the message
keyThe secret key
Returns
The hash value as a 64bit unsigned integer
APR_DECLARE ( void  )

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.

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.

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
outThe output buffer (or MAC)
srcThe message
lenThe length of the message
keyThe secret key
cThe number of compression rounds
dThe number of finalization rounds
Returns
The hash value as a 64bit unsigned integer
Parameters
outThe output buffer (or MAC)
srcThe message
lenThe length of the message
keyThe secret key
Returns
The hash value as a 64bit unsigned integer