20static int php_hash_xxh32_unserialize(
22static int php_hash_xxh64_unserialize(
32 php_hash_xxh32_unserialize,
46 zval *seed = zend_hash_str_find_deref(
args,
"seed",
sizeof(
"seed") - 1);
74 copy_context->
s = orig_context->
s;
78static int php_hash_xxh32_unserialize(
85 && ctx->s.memsize < 16) {
88 return r !=
SUCCESS ? r : -2000;
99 php_hash_xxh64_unserialize,
113 zval *seed = zend_hash_str_find_deref(
args,
"seed",
sizeof(
"seed") - 1);
139 copy_context->
s = orig_context->
s;
167 zval *_seed = zend_hash_str_find_deref(
args,
"seed",
sizeof(
"seed") - 1);
168 zval *_secret = zend_hash_str_find_deref(
args,
"secret",
sizeof(
"secret") - 1);
170 if (_seed && _secret) {
171 zend_throw_error(
NULL,
"%s: Only one of seed or secret is to be passed for initialization", algo_name);
184 }
else if (_secret) {
186 php_error_docref(
NULL,
E_DEPRECATED,
"Passing a secret of a type other than string is deprecated because it implicitly converts to a string, potentially hiding bugs");
188 zend_string *secret_string = zval_try_get_string(_secret);
195 zend_string_release(secret_string);
204 zend_string_release(secret_string);
210 func_init_seed(&ctx->
s, 0);
230 copy_context->
s = orig_context->
s;
234static int php_hash_xxh64_unserialize(
241 && ctx->s.memsize < 32) {
244 return r !=
SUCCESS ? r : -2000;
280 copy_context->
s = orig_context->
s;
memset(ptr, 0, type->size)
const php_stream_filter_ops * ops
unsigned long long XXH64_hash_t
XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t *statePtr)
Returns the calculated hash value from an XXH32_state_t.
XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, XXH32_hash_t seed)
Resets an XXH32_state_t to begin a new hash.
XXH_PUBLIC_API XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, size_t length)
Consumes a block of input to an XXH32_state_t.
XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t *dst, XXH32_hash_t hash)
Converts an XXH32_hash_t to a big endian XXH32_canonical_t.
XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update(XXH3_state_t *statePtr, const void *input, size_t length)
XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t *statePtr, XXH64_hash_t seed)
XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t *statePtr, XXH64_hash_t seed)
XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest(const XXH3_state_t *statePtr)
XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t *statePtr, const void *secret, size_t secretSize)
XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update(XXH3_state_t *statePtr, const void *input, size_t length)
struct XXH3_state_s XXH3_state_t
The state struct for the XXH3 streaming API.
XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest(const XXH3_state_t *statePtr)
XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t *dst, XXH128_hash_t hash)
#define XXH3_SECRET_SIZE_MIN
XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t *statePtr, const void *secret, size_t secretSize)
XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, XXH64_hash_t seed)
XXH_PUBLIC_API XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, size_t length)
XXH_PUBLIC_API XXH64_hash_t XXH64_digest(const XXH64_state_t *statePtr)
XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t *dst, XXH64_hash_t hash)
PHP_HASH_API zend_result php_hash_serialize(const php_hashcontext_object *hash, zend_long *magic, zval *zv)
PHP_HASH_API int php_hash_unserialize_spec(php_hashcontext_object *hash, const zval *zv, const char *spec)
PHP_HASH_API int php_hash_unserialize(php_hashcontext_object *hash, zend_long magic, const zval *zv)
hash(string $algo, string $data, bool $binary=false, array $options=[])
PHP_HASH_API void PHP_XXH3_128_Init(PHP_XXH3_128_CTX *ctx, HashTable *args)
PHP_HASH_API void PHP_XXH64Init(PHP_XXH64_CTX *ctx, HashTable *args)
PHP_HASH_API zend_result PHP_XXH32Copy(const php_hash_ops *ops, const PHP_XXH32_CTX *orig_context, PHP_XXH32_CTX *copy_context)
PHP_HASH_API void PHP_XXH64Update(PHP_XXH64_CTX *ctx, const unsigned char *in, size_t len)
PHP_HASH_API void PHP_XXH3_128_Update(PHP_XXH3_128_CTX *ctx, const unsigned char *in, size_t len)
PHP_HASH_API zend_result PHP_XXH64Copy(const php_hash_ops *ops, const PHP_XXH64_CTX *orig_context, PHP_XXH64_CTX *copy_context)
PHP_HASH_API zend_result PHP_XXH3_128_Copy(const php_hash_ops *ops, const PHP_XXH3_128_CTX *orig_context, PHP_XXH3_128_CTX *copy_context)
XXH_errorcode(* xxh3_reset_with_secret_func_t)(XXH3_state_t *, const void *, size_t)
PHP_HASH_API void PHP_XXH3_64_Update(PHP_XXH3_64_CTX *ctx, const unsigned char *in, size_t len)
PHP_HASH_API zend_result PHP_XXH3_64_Copy(const php_hash_ops *ops, const PHP_XXH3_64_CTX *orig_context, PHP_XXH3_64_CTX *copy_context)
const php_hash_ops php_hash_xxh32_ops
XXH_errorcode(* xxh3_reset_with_seed_func_t)(XXH3_state_t *, XXH64_hash_t)
const php_hash_ops php_hash_xxh3_128_ops
PHP_HASH_API void PHP_XXH64Final(unsigned char digest[8], PHP_XXH64_CTX *ctx)
const php_hash_ops php_hash_xxh3_64_ops
const php_hash_ops php_hash_xxh64_ops
PHP_HASH_API void PHP_XXH32Init(PHP_XXH32_CTX *ctx, HashTable *args)
PHP_HASH_API void PHP_XXH32Update(PHP_XXH32_CTX *ctx, const unsigned char *in, size_t len)
PHP_HASH_API void PHP_XXH3_64_Init(PHP_XXH3_64_CTX *ctx, HashTable *args)
PHP_HASH_API void PHP_XXH3_128_Final(unsigned char digest[16], PHP_XXH3_128_CTX *ctx)
PHP_HASH_API void PHP_XXH32Final(unsigned char digest[4], PHP_XXH32_CTX *ctx)
PHP_HASH_API void PHP_XXH3_64_Final(unsigned char digest[8], PHP_XXH3_64_CTX *ctx)
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
void(* php_hash_final_func_t)(unsigned char *digest, void *context)
zend_result(* php_hash_copy_func_t)(const void *ops, const void *orig_context, void *dest_context)
struct _php_hashcontext_object php_hashcontext_object
void(* php_hash_init_func_t)(void *context, HashTable *args)
void(* php_hash_update_func_t)(void *context, const unsigned char *buf, size_t count)
struct _php_hash_ops php_hash_ops
#define PHP_HASH_SERIALIZE_MAGIC_SPEC
PHP_XXH3_CTX PHP_XXH3_64_CTX
PHP_XXH3_CTX PHP_XXH3_128_CTX
#define PHP_XXH3_SECRET_SIZE_MIN
const unsigned char secret[PHP_XXH3_SECRET_SIZE_MAX]
Canonical (big endian) representation of XXH32_hash_t.
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
struct _zend_string zend_string
#define zend_always_inline
#define UNEXPECTED(condition)
struct _zend_array HashTable
ZEND_RESULT_CODE zend_result