Lines Matching refs:ops

88 	php_hash_ops *ops = zend_hash_str_find_ptr(&php_hash_hashtable, lower, algo_len);  in php_hash_fetch_ops()  local
91 return ops; in php_hash_fetch_ops()
95 PHP_HASH_API void php_hash_register_algo(const char *algo, const php_hash_ops *ops) /* {{{ */ in php_hash_register_algo() argument
99 …zend_hash_add_ptr(&php_hash_hashtable, zend_string_init_interned(lower, algo_len, 1), (void *) ops in php_hash_register_algo()
104 PHP_HASH_API int php_hash_copy(const void *ops, void *orig_context, void *dest_context) /* {{{ */ in php_hash_copy() argument
106 php_hash_ops *hash_ops = (php_hash_ops *)ops; in php_hash_copy()
121 const php_hash_ops *ops; in php_hash_do_hash() local
129 ops = php_hash_fetch_ops(algo, algo_len); in php_hash_do_hash()
130 if (!ops) { in php_hash_do_hash()
146 context = emalloc(ops->context_size); in php_hash_do_hash()
147 ops->hash_init(context); in php_hash_do_hash()
154 ops->hash_update(context, (unsigned char *) buf, n); in php_hash_do_hash()
158 ops->hash_update(context, (unsigned char *) data, data_len); in php_hash_do_hash()
161 digest = zend_string_alloc(ops->digest_size, 0); in php_hash_do_hash()
162 ops->hash_final((unsigned char *) ZSTR_VAL(digest), context); in php_hash_do_hash()
166 ZSTR_VAL(digest)[ops->digest_size] = 0; in php_hash_do_hash()
169 zend_string *hex_digest = zend_string_safe_alloc(ops->digest_size, 2, 0, 0); in php_hash_do_hash()
171 php_hash_bin2hex(ZSTR_VAL(hex_digest), (unsigned char *) ZSTR_VAL(digest), ops->digest_size); in php_hash_do_hash()
172 ZSTR_VAL(hex_digest)[2 * ops->digest_size] = 0; in php_hash_do_hash()
211 static inline void php_hash_hmac_prep_key(unsigned char *K, const php_hash_ops *ops, void *context,… in php_hash_hmac_prep_key() argument
212 memset(K, 0, ops->block_size); in php_hash_hmac_prep_key()
213 if (key_len > (size_t)ops->block_size) { in php_hash_hmac_prep_key()
215 ops->hash_init(context); in php_hash_hmac_prep_key()
216 ops->hash_update(context, key, key_len); in php_hash_hmac_prep_key()
217 ops->hash_final(K, context); in php_hash_hmac_prep_key()
222 php_hash_string_xor_char(K, K, 0x36, ops->block_size); in php_hash_hmac_prep_key()
225 static inline void php_hash_hmac_round(unsigned char *final, const php_hash_ops *ops, void *context… in php_hash_hmac_round() argument
226 ops->hash_init(context); in php_hash_hmac_round()
227 ops->hash_update(context, key, ops->block_size); in php_hash_hmac_round()
228 ops->hash_update(context, data, data_size); in php_hash_hmac_round()
229 ops->hash_final(final, context); in php_hash_hmac_round()
239 const php_hash_ops *ops; in php_hash_do_hash_hmac() local
248 ops = php_hash_fetch_ops(algo, algo_len); in php_hash_do_hash_hmac()
249 if (!ops) { in php_hash_do_hash_hmac()
253 else if (!ops->is_crypto) { in php_hash_do_hash_hmac()
270 context = emalloc(ops->context_size); in php_hash_do_hash_hmac()
272 K = emalloc(ops->block_size); in php_hash_do_hash_hmac()
273 digest = zend_string_alloc(ops->digest_size, 0); in php_hash_do_hash_hmac()
275 php_hash_hmac_prep_key(K, ops, context, (unsigned char *) key, key_len); in php_hash_do_hash_hmac()
280 ops->hash_init(context); in php_hash_do_hash_hmac()
281 ops->hash_update(context, K, ops->block_size); in php_hash_do_hash_hmac()
283 ops->hash_update(context, (unsigned char *) buf, n); in php_hash_do_hash_hmac()
286 ops->hash_final((unsigned char *) ZSTR_VAL(digest), context); in php_hash_do_hash_hmac()
288 …php_hash_hmac_round((unsigned char *) ZSTR_VAL(digest), ops, context, K, (unsigned char *) data, d… in php_hash_do_hash_hmac()
291 php_hash_string_xor_char(K, K, 0x6A, ops->block_size); in php_hash_do_hash_hmac()
293 …_hmac_round((unsigned char *) ZSTR_VAL(digest), ops, context, K, (unsigned char *) ZSTR_VAL(digest… in php_hash_do_hash_hmac()
296 ZEND_SECURE_ZERO(K, ops->block_size); in php_hash_do_hash_hmac()
301 ZSTR_VAL(digest)[ops->digest_size] = 0; in php_hash_do_hash_hmac()
304 zend_string *hex_digest = zend_string_safe_alloc(ops->digest_size, 2, 0, 0); in php_hash_do_hash_hmac()
306 php_hash_bin2hex(ZSTR_VAL(hex_digest), (unsigned char *) ZSTR_VAL(digest), ops->digest_size); in php_hash_do_hash_hmac()
307 ZSTR_VAL(hex_digest)[2 * ops->digest_size] = 0; in php_hash_do_hash_hmac()
337 const php_hash_ops *ops; in php_hashcontext_ctor() local
345 ops = php_hash_fetch_ops(ZSTR_VAL(algo), ZSTR_LEN(algo)); in php_hashcontext_ctor()
346 if (!ops) { in php_hashcontext_ctor()
353 if (!ops->is_crypto) { in php_hashcontext_ctor()
366 context = emalloc(ops->context_size); in php_hashcontext_ctor()
367 ops->hash_init(context); in php_hashcontext_ctor()
369 hash->ops = ops; in php_hashcontext_ctor()
375 char *K = emalloc(ops->block_size); in php_hashcontext_ctor()
378 memset(K, 0, ops->block_size); in php_hashcontext_ctor()
380 if (ZSTR_LEN(key) > (size_t)ops->block_size) { in php_hashcontext_ctor()
382 ops->hash_update(context, (unsigned char *) ZSTR_VAL(key), ZSTR_LEN(key)); in php_hashcontext_ctor()
383 ops->hash_final((unsigned char *) K, context); in php_hashcontext_ctor()
385 ops->hash_init(context); in php_hashcontext_ctor()
391 block_size = ops->block_size; in php_hashcontext_ctor()
395 ops->hash_update(context, (unsigned char *) K, ops->block_size); in php_hashcontext_ctor()
430 hash->ops->hash_update(hash->context, (unsigned char *) ZSTR_VAL(data), ZSTR_LEN(data)); in PHP_FUNCTION()
465 hash->ops->hash_update(hash->context, (unsigned char *) buf, n); in PHP_FUNCTION()
501 hash->ops->hash_update(hash->context, (unsigned char *) buf, n); in PHP_FUNCTION()
526 digest_len = hash->ops->digest_size; in PHP_FUNCTION()
528 hash->ops->hash_final((unsigned char *) ZSTR_VAL(digest), hash->context); in PHP_FUNCTION()
533 block_size = hash->ops->block_size; in PHP_FUNCTION()
539 hash->ops->hash_init(hash->context); in PHP_FUNCTION()
540 hash->ops->hash_update(hash->context, hash->key, hash->ops->block_size); in PHP_FUNCTION()
541 hash->ops->hash_update(hash->context, (unsigned char *) ZSTR_VAL(digest), hash->ops->digest_size); in PHP_FUNCTION()
542 hash->ops->hash_final((unsigned char *) ZSTR_VAL(digest), hash->context); in PHP_FUNCTION()
545 ZEND_SECURE_ZERO(hash->key, hash->ops->block_size); in PHP_FUNCTION()
605 const php_hash_ops *ops; in PHP_FUNCTION() local
608 ZEND_HASH_FOREACH_STR_KEY_PTR(&php_hash_hashtable, str, ops) { in PHP_FUNCTION()
609 if (ops->is_crypto) { in PHP_FUNCTION()
624 const php_hash_ops *ops; in PHP_FUNCTION() local
631 ops = php_hash_fetch_ops(ZSTR_VAL(algo), ZSTR_LEN(algo)); in PHP_FUNCTION()
632 if (!ops) { in PHP_FUNCTION()
637 if (!ops->is_crypto) { in PHP_FUNCTION()
651 length = ops->digest_size; in PHP_FUNCTION()
652 } else if (length > ops->digest_size * 255) { in PHP_FUNCTION()
653 …php_error_docref(NULL, E_WARNING, "Length must be less than or equal to %d: " ZEND_LONG_FMT, ops->… in PHP_FUNCTION()
657 context = emalloc(ops->context_size); in PHP_FUNCTION()
660 ops->hash_init(context); in PHP_FUNCTION()
661 K = emalloc(ops->block_size); in PHP_FUNCTION()
662 php_hash_hmac_prep_key(K, ops, context, in PHP_FUNCTION()
665 prk = emalloc(ops->digest_size); in PHP_FUNCTION()
666 php_hash_hmac_round(prk, ops, context, K, (unsigned char *) ZSTR_VAL(ikm), ZSTR_LEN(ikm)); in PHP_FUNCTION()
667 php_hash_string_xor_char(K, K, 0x6A, ops->block_size); in PHP_FUNCTION()
668 php_hash_hmac_round(prk, ops, context, K, prk, ops->digest_size); in PHP_FUNCTION()
669 ZEND_SECURE_ZERO(K, ops->block_size); in PHP_FUNCTION()
673 digest = emalloc(ops->digest_size); in PHP_FUNCTION()
674 for (i = 1, rounds = (length - 1) / ops->digest_size + 1; i <= rounds; i++) { in PHP_FUNCTION()
679 php_hash_hmac_prep_key(K, ops, context, prk, ops->digest_size); in PHP_FUNCTION()
680 ops->hash_init(context); in PHP_FUNCTION()
681 ops->hash_update(context, K, ops->block_size); in PHP_FUNCTION()
684 ops->hash_update(context, digest, ops->digest_size); in PHP_FUNCTION()
688 ops->hash_update(context, (unsigned char *) ZSTR_VAL(info), ZSTR_LEN(info)); in PHP_FUNCTION()
691 ops->hash_update(context, c, 1); in PHP_FUNCTION()
692 ops->hash_final(digest, context); in PHP_FUNCTION()
693 php_hash_string_xor_char(K, K, 0x6A, ops->block_size); in PHP_FUNCTION()
694 php_hash_hmac_round(digest, ops, context, K, digest, ops->digest_size); in PHP_FUNCTION()
696 ZSTR_VAL(returnval) + ((i - 1) * ops->digest_size), in PHP_FUNCTION()
698 (i == rounds ? length - ((i - 1) * ops->digest_size) : ops->digest_size) in PHP_FUNCTION()
702 ZEND_SECURE_ZERO(K, ops->block_size); in PHP_FUNCTION()
703 ZEND_SECURE_ZERO(digest, ops->digest_size); in PHP_FUNCTION()
704 ZEND_SECURE_ZERO(prk, ops->digest_size); in PHP_FUNCTION()
724 const php_hash_ops *ops; in PHP_FUNCTION() local
731 ops = php_hash_fetch_ops(algo, algo_len); in PHP_FUNCTION()
732 if (!ops) { in PHP_FUNCTION()
736 else if (!ops->is_crypto) { in PHP_FUNCTION()
756 context = emalloc(ops->context_size); in PHP_FUNCTION()
757 ops->hash_init(context); in PHP_FUNCTION()
759 K1 = emalloc(ops->block_size); in PHP_FUNCTION()
760 K2 = emalloc(ops->block_size); in PHP_FUNCTION()
761 digest = emalloc(ops->digest_size); in PHP_FUNCTION()
762 temp = emalloc(ops->digest_size); in PHP_FUNCTION()
765 php_hash_hmac_prep_key(K1, ops, context, (unsigned char *) pass, pass_len); in PHP_FUNCTION()
767 php_hash_string_xor_char(K2, K1, 0x6A, ops->block_size); in PHP_FUNCTION()
771 length = ops->digest_size; in PHP_FUNCTION()
781 loops = (zend_long) ceil((float) digest_length / (float) ops->digest_size); in PHP_FUNCTION()
783 result = safe_emalloc(loops, ops->digest_size, 0); in PHP_FUNCTION()
797 php_hash_hmac_round(digest, ops, context, K1, computed_salt, (zend_long) salt_len + 4); in PHP_FUNCTION()
798 php_hash_hmac_round(digest, ops, context, K2, digest, ops->digest_size); in PHP_FUNCTION()
802 memcpy(temp, digest, ops->digest_size); in PHP_FUNCTION()
810 php_hash_hmac_round(digest, ops, context, K1, digest, ops->digest_size); in PHP_FUNCTION()
811 php_hash_hmac_round(digest, ops, context, K2, digest, ops->digest_size); in PHP_FUNCTION()
814 php_hash_string_xor(temp, temp, digest, ops->digest_size); in PHP_FUNCTION()
817 memcpy(result + ((i - 1) * ops->digest_size), temp, ops->digest_size); in PHP_FUNCTION()
820 ZEND_SECURE_ZERO(K1, ops->block_size); in PHP_FUNCTION()
821 ZEND_SECURE_ZERO(K2, ops->block_size); in PHP_FUNCTION()
1021 …const php_hash_ops *ops = php_hash_fetch_ops(algorithm_lookup.hash_name, strlen(algorithm_lookup.h… in PHP_FUNCTION() local
1022 if (ops) { in PHP_FUNCTION()
1023 RETVAL_LONG(ops->digest_size); in PHP_FUNCTION()
1064 …const php_hash_ops *ops = php_hash_fetch_ops(algorithm_lookup.hash_name, strlen(algorithm_lookup.h… in PHP_FUNCTION() local
1065 if (ops) { in PHP_FUNCTION()
1070 int block_size = ops->digest_size; in PHP_FUNCTION()
1074 context = emalloc(ops->context_size); in PHP_FUNCTION()
1075 ops->hash_init(context); in PHP_FUNCTION()
1078 digest = emalloc(ops->digest_size + 1); in PHP_FUNCTION()
1081 ops->hash_init(context); in PHP_FUNCTION()
1084 ops->hash_update(context, &null, 1); in PHP_FUNCTION()
1086 ops->hash_update(context, (unsigned char *)padded_salt, salt_len); in PHP_FUNCTION()
1087 ops->hash_update(context, (unsigned char *)password, password_len); in PHP_FUNCTION()
1088 ops->hash_final((unsigned char *)digest, context); in PHP_FUNCTION()
1126 unsigned char *dummy = emalloc(hash->ops->digest_size); in php_hashcontext_dtor()
1127 hash->ops->hash_final(dummy, hash->context); in php_hashcontext_dtor()
1134 ZEND_SECURE_ZERO(hash->key, hash->ops->block_size); in php_hashcontext_dtor()
1149 newobj->ops = oldobj->ops; in php_hashcontext_clone()
1151 newobj->context = emalloc(newobj->ops->context_size); in php_hashcontext_clone()
1152 newobj->ops->hash_init(newobj->context); in php_hashcontext_clone()
1154 if (SUCCESS != newobj->ops->hash_copy(newobj->ops, oldobj->context, newobj->context)) { in php_hashcontext_clone()
1160 newobj->key = ecalloc(1, newobj->ops->block_size); in php_hashcontext_clone()
1162 memcpy(newobj->key, oldobj->key, newobj->ops->block_size); in php_hashcontext_clone()