From d6dc0a21fbd6c4c82ee342fcbefdb479f8592055 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Wed, 10 Dec 2008 13:43:51 +0000 Subject: [PATCH] incremental version of chunk_hash --- src/libstrongswan/chunk.c | 12 ++++++++++-- src/libstrongswan/chunk.h | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/libstrongswan/chunk.c b/src/libstrongswan/chunk.c index 1d0f9279a..01f6b9ed7 100644 --- a/src/libstrongswan/chunk.c +++ b/src/libstrongswan/chunk.c @@ -448,11 +448,11 @@ int chunk_compare(chunk_t a, chunk_t b) * The implementation is based on Paul Hsieh's SuperFastHash: * http://www.azillionmonkeys.com/qed/hash.html */ -u_int32_t chunk_hash(chunk_t chunk) +u_int32_t chunk_hash_inc(chunk_t chunk, u_int32_t hash) { u_char *data = chunk.ptr; size_t len = chunk.len; - u_int32_t hash = len, tmp; + u_int32_t tmp; int rem; if (!len || data == NULL) @@ -511,6 +511,14 @@ u_int32_t chunk_hash(chunk_t chunk) return hash; } +/** + * Described in header. + */ +u_int32_t chunk_hash(chunk_t chunk) +{ + return chunk_hash_inc(chunk, chunk.len); +} + /** * output handler in printf() for chunks */ diff --git a/src/libstrongswan/chunk.h b/src/libstrongswan/chunk.h index 566137589..d6c2e805b 100644 --- a/src/libstrongswan/chunk.h +++ b/src/libstrongswan/chunk.h @@ -231,6 +231,11 @@ static inline bool chunk_equals(chunk_t a, chunk_t b) */ u_int32_t chunk_hash(chunk_t chunk); +/** + * Incremental version of chunk_hash. Use this to hash two or more chunks. + */ +u_int32_t chunk_hash_inc(chunk_t chunk, u_int32_t hash); + /** * Get printf hooks for a chunk. *