Where can I find the proper version of below — to do things like apr_crypto_hash_t * sha256_ctx = apr_crypto_sha256_new(pool);
apr_hash(sha256_ctx, …... ? Or was this abstracting in apr_random of the hash something which was never completed (nor had its MD2, MD5 and friends folded in) ? Dw. Index: apr_random.c =================================================================== --- apr_random.c (revision 1779018) +++ apr_random.c (working copy) @@ -53,6 +53,36 @@ #define crypt_setkey(c,k) (c)->set_key((c)->data,k) #define crypt_crypt(c,out,in) (c)->crypt((c)->date,out,in) +APR_DECLARE(apr_status_t) apr_hash_init(apr_crypto_hash_t *key_hash) { + hash_init(key_hash); + return APR_SUCCESS; +} + +APR_DECLARE(apr_status_t) apr_hash_add(apr_crypto_hash_t * key_hash, const void * addvuff, apr_size_t addbytes) { + hash_add(key_hash, addvuff, addbytes); + return APR_SUCCESS; +} + +APR_DECLARE(apr_status_t) apr_hash_finish(apr_crypto_hash_t * key_hash, void ** resultp, apr_size_t *resultlenp, apr_pool_t * pool) { + if (*resultp == NULL) + *resultp = apr_palloc(pool, key_hash->size); + else if (*resultlenp < key_hash->size) + return APR_EINVAL; + + hash_finish(key_hash, *resultp); + *resultlenp = key_hash->size; + + return APR_SUCCESS; +} + +APR_DECLARE(apr_status_t) apr_hash(apr_crypto_hash_t * key_hash, void ** resultp, apr_size_t *resultlenp, const void * inbuff, apr_size_t inbytes, apr_pool_t * pool) { + hash_init(key_hash); + hash_add(key_hash, inbuff, inbytes); + + return apr_hash_finish(key_hash, resultp, resultlenp, pool); +}