Lines Matching refs:ops

91 	php_hash_ops *ops;  in php_hash_fetch_ops()  local
95 if (SUCCESS != zend_hash_find(&php_hash_hashtable, lower, algo_len + 1, (void*)&ops)) { in php_hash_fetch_ops()
96 ops = NULL; in php_hash_fetch_ops()
100 return ops; in php_hash_fetch_ops()
104 PHP_HASH_API void php_hash_register_algo(const char *algo, const php_hash_ops *ops) /* {{{ */ in php_hash_register_algo() argument
110 zend_hash_add(&php_hash_hashtable, lower, algo_len + 1, (void*)ops, sizeof(php_hash_ops), NULL); in php_hash_register_algo()
115 PHP_HASH_API int php_hash_copy(const void *ops, void *orig_context, void *dest_context) /* {{{ */ in php_hash_copy() argument
117 php_hash_ops *hash_ops = (php_hash_ops *)ops; in php_hash_copy()
131 const php_hash_ops *ops; in php_hash_do_hash() local
139 ops = php_hash_fetch_ops(algo, algo_len); in php_hash_do_hash()
140 if (!ops) { in php_hash_do_hash()
156 context = emalloc(ops->context_size); in php_hash_do_hash()
157 ops->hash_init(context); in php_hash_do_hash()
164 ops->hash_update(context, (unsigned char *) buf, n); in php_hash_do_hash()
168 ops->hash_update(context, (unsigned char *) data, data_len); in php_hash_do_hash()
171 digest = emalloc(ops->digest_size + 1); in php_hash_do_hash()
172 ops->hash_final((unsigned char *) digest, context); in php_hash_do_hash()
176 digest[ops->digest_size] = 0; in php_hash_do_hash()
177 RETURN_STRINGL(digest, ops->digest_size, 0); in php_hash_do_hash()
179 char *hex_digest = safe_emalloc(ops->digest_size, 2, 1); in php_hash_do_hash()
181 php_hash_bin2hex(hex_digest, (unsigned char *) digest, ops->digest_size); in php_hash_do_hash()
182 hex_digest[2 * ops->digest_size] = 0; in php_hash_do_hash()
184 RETURN_STRINGL(hex_digest, 2 * ops->digest_size, 0); in php_hash_do_hash()
221 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
222 memset(K, 0, ops->block_size); in php_hash_hmac_prep_key()
223 if (key_len > ops->block_size) { in php_hash_hmac_prep_key()
225 ops->hash_init(context); in php_hash_hmac_prep_key()
226 ops->hash_update(context, key, key_len); in php_hash_hmac_prep_key()
227 ops->hash_final(K, context); in php_hash_hmac_prep_key()
232 php_hash_string_xor_char(K, K, 0x36, ops->block_size); in php_hash_hmac_prep_key()
235 static inline void php_hash_hmac_round(unsigned char *final, const php_hash_ops *ops, void *context… in php_hash_hmac_round() argument
236 ops->hash_init(context); in php_hash_hmac_round()
237 ops->hash_update(context, key, ops->block_size); in php_hash_hmac_round()
238 ops->hash_update(context, data, data_size); in php_hash_hmac_round()
239 ops->hash_final(final, context); in php_hash_hmac_round()
247 const php_hash_ops *ops; in php_hash_do_hash_hmac() local
256 ops = php_hash_fetch_ops(algo, algo_len); in php_hash_do_hash_hmac()
257 if (!ops) { in php_hash_do_hash_hmac()
273 context = emalloc(ops->context_size); in php_hash_do_hash_hmac()
275 K = emalloc(ops->block_size); in php_hash_do_hash_hmac()
276 digest = emalloc(ops->digest_size + 1); in php_hash_do_hash_hmac()
278 php_hash_hmac_prep_key((unsigned char *) K, ops, context, (unsigned char *) key, key_len); in php_hash_do_hash_hmac()
283 ops->hash_init(context); in php_hash_do_hash_hmac()
284 ops->hash_update(context, (unsigned char *) K, ops->block_size); in php_hash_do_hash_hmac()
286 ops->hash_update(context, (unsigned char *) buf, n); in php_hash_do_hash_hmac()
289 ops->hash_final((unsigned char *) digest, context); in php_hash_do_hash_hmac()
291 …php_hash_hmac_round((unsigned char *) digest, ops, context, (unsigned char *) K, (unsigned char *)… in php_hash_do_hash_hmac()
294 php_hash_string_xor_char((unsigned char *) K, (unsigned char *) K, 0x6A, ops->block_size); in php_hash_do_hash_hmac()
296 …p_hash_hmac_round((unsigned char *) digest, ops, context, (unsigned char *) K, (unsigned char *) d… in php_hash_do_hash_hmac()
299 memset(K, 0, ops->block_size); in php_hash_do_hash_hmac()
304 digest[ops->digest_size] = 0; in php_hash_do_hash_hmac()
305 RETURN_STRINGL(digest, ops->digest_size, 0); in php_hash_do_hash_hmac()
307 char *hex_digest = safe_emalloc(ops->digest_size, 2, 1); in php_hash_do_hash_hmac()
309 php_hash_bin2hex(hex_digest, (unsigned char *) digest, ops->digest_size); in php_hash_do_hash_hmac()
310 hex_digest[2 * ops->digest_size] = 0; in php_hash_do_hash_hmac()
312 RETURN_STRINGL(hex_digest, 2 * ops->digest_size, 0); in php_hash_do_hash_hmac()
344 const php_hash_ops *ops; in PHP_FUNCTION() local
351 ops = php_hash_fetch_ops(algo, algo_len); in PHP_FUNCTION()
352 if (!ops) { in PHP_FUNCTION()
364 context = emalloc(ops->context_size); in PHP_FUNCTION()
365 ops->hash_init(context); in PHP_FUNCTION()
368 hash->ops = ops; in PHP_FUNCTION()
374 char *K = emalloc(ops->block_size); in PHP_FUNCTION()
377 memset(K, 0, ops->block_size); in PHP_FUNCTION()
379 if (key_len > ops->block_size) { in PHP_FUNCTION()
381 ops->hash_update(context, (unsigned char *) key, key_len); in PHP_FUNCTION()
382 ops->hash_final((unsigned char *) K, context); in PHP_FUNCTION()
384 ops->hash_init(context); in PHP_FUNCTION()
390 for(i=0; i < ops->block_size; i++) { in PHP_FUNCTION()
393 ops->hash_update(context, (unsigned char *) K, ops->block_size); in PHP_FUNCTION()
416 hash->ops->hash_update(hash->context, (unsigned char *) data, data_len); in PHP_FUNCTION()
450 hash->ops->hash_update(hash->context, (unsigned char *) buf, n); in PHP_FUNCTION()
484 hash->ops->hash_update(hash->context, (unsigned char *) buf, n); in PHP_FUNCTION()
509 digest_len = hash->ops->digest_size; in PHP_FUNCTION()
511 hash->ops->hash_final((unsigned char *) digest, hash->context); in PHP_FUNCTION()
516 for(i=0; i < hash->ops->block_size; i++) { in PHP_FUNCTION()
521 hash->ops->hash_init(hash->context); in PHP_FUNCTION()
522 hash->ops->hash_update(hash->context, (unsigned char *) hash->key, hash->ops->block_size); in PHP_FUNCTION()
523 hash->ops->hash_update(hash->context, (unsigned char *) digest, hash->ops->digest_size); in PHP_FUNCTION()
524 hash->ops->hash_final((unsigned char *) digest, hash->context); in PHP_FUNCTION()
527 memset(hash->key, 0, hash->ops->block_size); in PHP_FUNCTION()
572 context = emalloc(hash->ops->context_size); in PHP_FUNCTION()
573 hash->ops->hash_init(context); in PHP_FUNCTION()
575 res = hash->ops->hash_copy(hash->ops, hash->context, context); in PHP_FUNCTION()
582 copy_hash->ops = hash->ops; in PHP_FUNCTION()
585 copy_hash->key = ecalloc(1, hash->ops->block_size); in PHP_FUNCTION()
587 memcpy(copy_hash->key, hash->key, hash->ops->block_size); in PHP_FUNCTION()
622 const php_hash_ops *ops; in PHP_FUNCTION() local
629 ops = php_hash_fetch_ops(algo, algo_len); in PHP_FUNCTION()
630 if (!ops) { in PHP_FUNCTION()
650 context = emalloc(ops->context_size); in PHP_FUNCTION()
651 ops->hash_init(context); in PHP_FUNCTION()
653 K1 = emalloc(ops->block_size); in PHP_FUNCTION()
654 K2 = emalloc(ops->block_size); in PHP_FUNCTION()
655 digest = emalloc(ops->digest_size); in PHP_FUNCTION()
656 temp = emalloc(ops->digest_size); in PHP_FUNCTION()
659 php_hash_hmac_prep_key(K1, ops, context, (unsigned char *) pass, pass_len); in PHP_FUNCTION()
661 php_hash_string_xor_char(K2, K1, 0x6A, ops->block_size); in PHP_FUNCTION()
665 length = ops->digest_size; in PHP_FUNCTION()
675 loops = (long) ceil((float) digest_length / (float) ops->digest_size); in PHP_FUNCTION()
677 result = safe_emalloc(loops, ops->digest_size, 0); in PHP_FUNCTION()
691 php_hash_hmac_round(digest, ops, context, K1, computed_salt, (long) salt_len + 4); in PHP_FUNCTION()
692 php_hash_hmac_round(digest, ops, context, K2, digest, ops->digest_size); in PHP_FUNCTION()
696 memcpy(temp, digest, ops->digest_size); in PHP_FUNCTION()
704 php_hash_hmac_round(digest, ops, context, K1, digest, ops->digest_size); in PHP_FUNCTION()
705 php_hash_hmac_round(digest, ops, context, K2, digest, ops->digest_size); in PHP_FUNCTION()
708 php_hash_string_xor(temp, temp, digest, ops->digest_size); in PHP_FUNCTION()
711 memcpy(result + ((i - 1) * ops->digest_size), temp, ops->digest_size); in PHP_FUNCTION()
714 memset(K1, 0, ops->block_size); in PHP_FUNCTION()
715 memset(K2, 0, ops->block_size); in PHP_FUNCTION()
784 unsigned char *dummy = emalloc(hash->ops->digest_size); in php_hash_dtor()
785 hash->ops->hash_final(dummy, hash->context); in php_hash_dtor()
791 memset(hash->key, 0, hash->ops->block_size); in php_hash_dtor()
919 …const php_hash_ops *ops = php_hash_fetch_ops(algorithm_lookup.hash_name, strlen(algorithm_lookup.h… in PHP_FUNCTION() local
920 if (ops) { in PHP_FUNCTION()
921 RETVAL_LONG(ops->digest_size); in PHP_FUNCTION()
962 …const php_hash_ops *ops = php_hash_fetch_ops(algorithm_lookup.hash_name, strlen(algorithm_lookup.h… in PHP_FUNCTION() local
963 if (ops) { in PHP_FUNCTION()
968 int block_size = ops->digest_size; in PHP_FUNCTION()
972 context = emalloc(ops->context_size); in PHP_FUNCTION()
973 ops->hash_init(context); in PHP_FUNCTION()
976 digest = emalloc(ops->digest_size + 1); in PHP_FUNCTION()
979 ops->hash_init(context); in PHP_FUNCTION()
982 ops->hash_update(context, &null, 1); in PHP_FUNCTION()
984 ops->hash_update(context, (unsigned char *)padded_salt, salt_len); in PHP_FUNCTION()
985 ops->hash_update(context, (unsigned char *)password, password_len); in PHP_FUNCTION()
986 ops->hash_final((unsigned char *)digest, context); in PHP_FUNCTION()