php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
php_hash_fnv.h
Go to the documentation of this file.
1/*
2 +----------------------------------------------------------------------+
3 | Copyright (c) The PHP Group |
4 +----------------------------------------------------------------------+
5 | This source file is subject to version 3.01 of the PHP license, |
6 | that is bundled with this package in the file LICENSE, and is |
7 | available through the world-wide-web at the following url: |
8 | https://www.php.net/license/3_01.txt |
9 | If you did not receive a copy of the PHP license and are unable to |
10 | obtain it through the world-wide-web, please send a note to |
11 | license@php.net so we can mail you a copy immediately. |
12 +----------------------------------------------------------------------+
13 | Author: Michael Maclean <mgdm@php.net> |
14 +----------------------------------------------------------------------+
15*/
16
17#ifndef PHP_HASH_FNV_H
18#define PHP_HASH_FNV_H
19
20#define PHP_FNV1_32_INIT ((uint32_t)0x811c9dc5)
21
22#define PHP_FNV_32_PRIME ((uint32_t)0x01000193)
23
24#define PHP_FNV1_64_INIT ((uint64_t)0xcbf29ce484222325ULL)
25
26#define PHP_FNV_64_PRIME ((uint64_t)0x100000001b3ULL)
27
28
29/*
30 * hash types
31 */
33 PHP_FNV_NONE = 0, /* invalid FNV hash type */
34 PHP_FNV0_32 = 1, /* FNV-0 32 bit hash */
35 PHP_FNV1_32 = 2, /* FNV-1 32 bit hash */
36 PHP_FNV1a_32 = 3, /* FNV-1a 32 bit hash */
37 PHP_FNV0_64 = 4, /* FNV-0 64 bit hash */
38 PHP_FNV1_64 = 5, /* FNV-1 64 bit hash */
39 PHP_FNV1a_64 = 6, /* FNV-1a 64 bit hash */
40};
41
42typedef struct {
43 uint32_t state;
45#define PHP_FNV132_SPEC "l."
46
47typedef struct {
48 uint64_t state;
50#define PHP_FNV164_SPEC "q."
51
52
54PHP_HASH_API void PHP_FNV132Update(PHP_FNV132_CTX *context, const unsigned char *input, size_t inputLen);
55PHP_HASH_API void PHP_FNV1a32Update(PHP_FNV132_CTX *context, const unsigned char *input, size_t inputLen);
56PHP_HASH_API void PHP_FNV132Final(unsigned char digest[4], PHP_FNV132_CTX * context);
57
59PHP_HASH_API void PHP_FNV164Update(PHP_FNV164_CTX *context, const unsigned char *input, size_t inputLen);
60PHP_HASH_API void PHP_FNV1a64Update(PHP_FNV164_CTX *context, const unsigned char *input, size_t inputLen);
61PHP_HASH_API void PHP_FNV164Final(unsigned char digest[8], PHP_FNV164_CTX * context);
62
63static uint32_t fnv_32_buf(void *buf, size_t len, uint32_t hval, int alternate);
64static uint64_t fnv_64_buf(void *buf, size_t len, uint64_t hval, int alternate);
65
66#endif
size_t len
Definition apprentice.c:174
zend_ffi_ctype_name_buf buf
Definition ffi.c:4685
#define PHP_HASH_API
Definition php_hash.h:144
PHP_HASH_API void PHP_FNV1a64Update(PHP_FNV164_CTX *context, const unsigned char *input, size_t inputLen)
Definition hash_fnv.c:133
PHP_HASH_API void PHP_FNV1a32Update(PHP_FNV132_CTX *context, const unsigned char *input, size_t inputLen)
Definition hash_fnv.c:98
PHP_HASH_API void PHP_FNV132Init(PHP_FNV132_CTX *context, ZEND_ATTRIBUTE_UNUSED HashTable *args)
Definition hash_fnv.c:86
PHP_HASH_API void PHP_FNV164Init(PHP_FNV164_CTX *context, ZEND_ATTRIBUTE_UNUSED HashTable *args)
Definition hash_fnv.c:121
PHP_HASH_API void PHP_FNV132Update(PHP_FNV132_CTX *context, const unsigned char *input, size_t inputLen)
Definition hash_fnv.c:92
PHP_HASH_API void PHP_FNV164Update(PHP_FNV164_CTX *context, const unsigned char *input, size_t inputLen)
Definition hash_fnv.c:127
PHP_HASH_API void PHP_FNV164Final(unsigned char digest[8], PHP_FNV164_CTX *context)
Definition hash_fnv.c:139
PHP_HASH_API void PHP_FNV132Final(unsigned char digest[4], PHP_FNV132_CTX *context)
Definition hash_fnv.c:104
php_fnv_type
@ PHP_FNV0_32
@ PHP_FNV_NONE
@ PHP_FNV1_32
@ PHP_FNV1a_64
@ PHP_FNV1_64
@ PHP_FNV1a_32
@ PHP_FNV0_64
Definition dce.c:49
zval * args
#define ZEND_ATTRIBUTE_UNUSED
struct _zend_array HashTable
Definition zend_types.h:386