]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: hash-method: Add hash_method_get_digest().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 6 Jan 2019 22:03:13 +0000 (23:03 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 4 Dec 2019 14:33:31 +0000 (14:33 +0000)
src/lib/hash-method.c
src/lib/hash-method.h

index a485c00aa4e9bec8a4467567c74ebdfccc173838..c5e55023a58c12cf26c052d3b001c83b1b7b4f3c 100644 (file)
@@ -48,18 +48,28 @@ static void hash_method_result_size(void *context, unsigned char *result_r)
        result_r[7] = (*ctx & 0x00000000000000ffULL);
 }
 
-buffer_t *t_hash_data(const struct hash_method *meth,
-                     const void *data, size_t data_len)
+void hash_method_get_digest(const struct hash_method *meth,
+                           const void *data, size_t data_len,
+                           unsigned char *result_r)
 {
        i_assert(meth != NULL);
        i_assert(data_len == 0 || data != NULL);
        unsigned char ctx[meth->context_size];
+
+       meth->init(ctx);
+       meth->loop(ctx, data == NULL ? "" : data, data_len);
+       meth->result(ctx, result_r);
+}
+
+buffer_t *t_hash_data(const struct hash_method *meth,
+                     const void *data, size_t data_len)
+{
+       i_assert(meth != NULL);
        buffer_t *result = t_buffer_create(meth->digest_size);
        unsigned char *resptr = buffer_append_space_unsafe(result,
                                                           meth->digest_size);
-       meth->init(ctx);
-       meth->loop(ctx, data == NULL ? "" : data, data_len);
-       meth->result(ctx, resptr);
+
+       hash_method_get_digest(meth, data, data_len, resptr);
        return result;
 }
 
index 1340e163f0252c06e8d40fd9a8b5bdc67f728f46..2c68b91065810455cae2c9f24d6db9ded7e105b0 100644 (file)
@@ -20,6 +20,10 @@ const struct hash_method *hash_method_lookup(const char *name);
 /* NULL-terminated list of all hash methods */
 extern const struct hash_method *hash_methods[];
 
+void hash_method_get_digest(const struct hash_method *meth,
+                           const void *data, size_t data_len,
+                           unsigned char *result_r);
+
 /** Simple datastack helpers for digesting (hashing)
 
  * USAGE: