2 * Copyright (C) 2007-2010 Andre Noll <maan@systemlinux.org>
4 * Licensed under the GPL v2. For licencing details see COPYING.
7 /** \file hash.h Inline functions for hash values. */
9 /** hash arrays are always unsigned char. */
10 #define HASH_TYPE unsigned char
13 /** We use openssl's sha1 implementation. */
14 #define hash_function sha1_hash
19 * \param h1 Pointer to the first hash value.
20 * \param h2 Pointer to the second hash value.
22 * \return 1, -1, or zero, depending on whether \a h1 is greater than,
23 * less than or equal to h2, respectively.
25 _static_inline_
int hash_compare(HASH_TYPE
*h1
, HASH_TYPE
*h2
)
29 for (i
= 0; i
< HASH_SIZE
; i
++) {
39 * Convert a hash value to ascii format.
41 * \param hash the hash value.
42 * \param asc Result pointer.
44 * \a asc must point to an area of at least 2 * \p HASH_SIZE + 1 bytes which
45 * will be filled by the function with the ascii representation of the hash
46 * value given by \a hash, and a terminating \p NULL byte.
48 _static_inline_
void hash_to_asc(HASH_TYPE
*hash
, char *asc
)
51 const char hexchar
[] = "0123456789abcdef";
53 for (i
= 0; i
< HASH_SIZE
; i
++) {
54 asc
[2 * i
] = hexchar
[hash
[i
] >> 4];
55 asc
[2 * i
+ 1] = hexchar
[hash
[i
] & 0xf];
57 asc
[2 * HASH_SIZE
] = '\0';