root/ext/hash/php_hash_fnv.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2   +----------------------------------------------------------------------+
   3   | PHP Version 7                                                        |
   4   +----------------------------------------------------------------------+
   5   | Copyright (c) 1997-2016 The PHP Group                                |
   6   +----------------------------------------------------------------------+
   7   | This source file is subject to version 3.01 of the PHP license,      |
   8   | that is bundled with this package in the file LICENSE, and is        |
   9   | available through the world-wide-web at the following url:           |
  10   | http://www.php.net/license/3_01.txt                                  |
  11   | If you did not receive a copy of the PHP license and are unable to   |
  12   | obtain it through the world-wide-web, please send a note to          |
  13   | license@php.net so we can mail you a copy immediately.               |
  14   +----------------------------------------------------------------------+
  15   | Author: Michael Maclean <mgdm@php.net>                               |
  16   +----------------------------------------------------------------------+
  17 */
  18 
  19 /* $Id$ */
  20 
  21 #ifndef PHP_HASH_FNV_H
  22 #define PHP_HASH_FNV_H
  23 
  24 #define PHP_FNV1_32_INIT ((php_hash_uint32)0x811c9dc5)
  25 #define PHP_FNV1_32A_INIT PHP_FNV1_32_INIT
  26 
  27 #define PHP_FNV_32_PRIME ((php_hash_uint32)0x01000193)
  28 
  29 #define PHP_FNV1_64_INIT ((php_hash_uint64)0xcbf29ce484222325ULL)
  30 #define PHP_FNV1A_64_INIT FNV1_64_INIT
  31 
  32 #define PHP_FNV_64_PRIME ((php_hash_uint64)0x100000001b3ULL)
  33 
  34 
  35 /*
  36  * hash types
  37  */
  38 enum php_fnv_type {
  39         PHP_FNV_NONE  = 0,      /* invalid FNV hash type */
  40         PHP_FNV0_32   = 1,      /* FNV-0 32 bit hash */
  41         PHP_FNV1_32   = 2,      /* FNV-1 32 bit hash */
  42         PHP_FNV1a_32  = 3,      /* FNV-1a 32 bit hash */
  43         PHP_FNV0_64   = 4,      /* FNV-0 64 bit hash */
  44         PHP_FNV1_64   = 5,      /* FNV-1 64 bit hash */
  45         PHP_FNV1a_64  = 6,      /* FNV-1a 64 bit hash */
  46 };
  47 
  48 typedef struct {
  49         php_hash_uint32 state;
  50 } PHP_FNV132_CTX;
  51 
  52 typedef struct {
  53         php_hash_uint64 state;
  54 } PHP_FNV164_CTX;
  55 
  56 
  57 PHP_HASH_API void PHP_FNV132Init(PHP_FNV132_CTX *context);
  58 PHP_HASH_API void PHP_FNV132Update(PHP_FNV132_CTX *context, const unsigned char *input, unsigned int inputLen);
  59 PHP_HASH_API void PHP_FNV1a32Update(PHP_FNV132_CTX *context, const unsigned char *input, unsigned int inputLen);
  60 PHP_HASH_API void PHP_FNV132Final(unsigned char digest[16], PHP_FNV132_CTX * context);
  61 
  62 PHP_HASH_API void PHP_FNV164Init(PHP_FNV164_CTX *context);
  63 PHP_HASH_API void PHP_FNV164Update(PHP_FNV164_CTX *context, const unsigned char *input, unsigned int inputLen);
  64 PHP_HASH_API void PHP_FNV1a64Update(PHP_FNV164_CTX *context, const unsigned char *input, unsigned int inputLen);
  65 PHP_HASH_API void PHP_FNV164Final(unsigned char digest[16], PHP_FNV164_CTX * context);
  66 
  67 static php_hash_uint32 fnv_32_buf(void *buf, size_t len, php_hash_uint32 hval, int alternate);
  68 static php_hash_uint64 fnv_64_buf(void *buf, size_t len, php_hash_uint64 hval, int alternate);
  69 
  70 #endif
  71 
  72 /*
  73  * Local variables:
  74  * tab-width: 4
  75  * c-basic-offset: 4
  76  * End:
  77  * vim600: noet sw=4 ts=4 fdm=marker
  78  * vim<600: noet sw=4 ts=4
  79  */

/* [<][>][^][v][top][bottom][index][help] */