aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/transforms/hashers/hasher.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/transforms/hashers/hasher.h')
-rw-r--r--Source/charon/transforms/hashers/hasher.h56
1 files changed, 38 insertions, 18 deletions
diff --git a/Source/charon/transforms/hashers/hasher.h b/Source/charon/transforms/hashers/hasher.h
index e207b30f1..00ea0a724 100644
--- a/Source/charon/transforms/hashers/hasher.h
+++ b/Source/charon/transforms/hashers/hasher.h
@@ -1,7 +1,7 @@
/**
* @file hasher.h
*
- * @brief Interface for hasher_t.
+ * @brief Interface hasher_t.
*
*/
@@ -26,22 +26,36 @@
#include <types.h>
+
typedef enum hash_algorithm_t hash_algorithm_t;
/**
* @brief Algorithms to use for hashing.
+ *
+ * Currently only the following algorithms are implemented and therefore supported:
+ * - HASH_MD5
+ * - HASH_SHA1
+ *
+ * @ingroup hashers
+ *
*/
enum hash_algorithm_t {
HASH_MD2,
- HASH_MD5, /* supported */
- HASH_SHA1, /* supported */
+ /**
+ * Implemented in class md5_hasher_t.
+ */
+ HASH_MD5,
+ /**
+ * Implemented in class sha1_hasher_t.
+ */
+ HASH_SHA1,
HASH_SHA256,
HASH_SHA384,
HASH_SHA512,
};
/**
- * string mappings for hash_algorithm_t
+ * String mappings for hash_algorithm_t.
*/
extern mapping_t hash_algorithm_m[];
@@ -52,37 +66,43 @@ typedef struct hasher_t hasher_t;
* @brief Generic interface for all hash functions.
*
* @b Constructors:
- * - hasher_create()
+ * - hasher_create()
+ * - md5_hasher_create()
+ * - sha1_hasher_create()
+ *
+ * @see
+ * - md5_hasher_t
+ * - sha1_hasher_t
*
- * @see md5_hasher_t, sha1_hasher_t
+ * @todo Implement more hash algorithms
*
* @ingroup hashers
*/
struct hasher_t {
/**
- * @brief hash data and write it in the buffer
+ * @brief Hash data and write it in the buffer.
*
* If the parameter hash is NULL, no result is written back
* an more data can be appended to already hashed data.
- * If not, the result is written back and the hasher is reset.
+ * If not, the result is written back and the hasher is reseted.
*
* @warning: the hash output parameter must hold at least
* hash_t.get_block_size bytes.
*
- * @param this calling hasher
+ * @param this calling object
* @param data data to hash
- * @param [out]buffer pointer where the hash will be written
+ * @param [out]hash pointer where the hash will be written
*/
void (*get_hash) (hasher_t *this, chunk_t data, u_int8_t *hash);
/**
- * @brief hash data and allocate space for the hash
+ * @brief Hash data and allocate space for the hash.
*
* If the parameter hash is NULL, no result is written back
* an more data can be appended to already hashed data.
- * If not, the result is written back and the hasher is reset.
+ * If not, the result is written back and the hasher is reseted.
*
- * @param this calling hasher
+ * @param this calling object
* @param data chunk with data to hash
* @param [out]hash chunk which will hold allocated hash
*/
@@ -91,23 +111,23 @@ struct hasher_t {
/**
* @brief Get the block size of this hashing function.
*
- * @param this calling hasher
+ * @param this calling object
* @return block size in bytes
*/
size_t (*get_block_size) (hasher_t *this);
/**
* @brief Resets the hashers state, which allows
- * computation of a completly new hash.
+ * computation of a completely new hash.
*
- * @param this calling hasher
+ * @param this calling object
*/
void (*reset) (hasher_t *this);
/**
* @brief Destroys a hasher object.
*
- * @param this hasher_t object to destroy
+ * @param this calling object
*/
void (*destroy) (hasher_t *this);
};
@@ -117,7 +137,7 @@ struct hasher_t {
*
* @param hash_algorithm Algorithm to use for hashing
* @return
- * - hasher_t if successfully
+ * - hasher_t object
* - NULL if algorithm not supported
*
* @ingroup hashers