- updated documentation, should be the reference

This commit is contained in:
Martin Willi
2005-11-24 11:39:05 +00:00
parent 5796aa164d
commit 7a09fceae0
2 changed files with 28 additions and 31 deletions
+20 -23
View File
@@ -1,7 +1,7 @@
/** /**
* @file hmac.c * @file hmac.c
* *
* @brief Implementation of hmac_t * @brief Implementation of hmac_t.
*/ */
/* /*
@@ -9,13 +9,13 @@
* Hochschule fuer Technik Rapperswil * Hochschule fuer Technik Rapperswil
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General hmac License as published by the
* Free Software Foundation; either version 2 of the License, or (at your * Free Software Foundation; either version 2 of the License, or (at your
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
* *
* This program is distributed in the hope that it will be useful, but * This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General hmac License
* for more details. * for more details.
*/ */
@@ -24,17 +24,17 @@
#include <utils/allocator.h> #include <utils/allocator.h>
typedef struct private_hmac_t private_hmac_t; typedef struct private_hmac_t private_hmac_t;
/** /**
* Private data of an hmac_t object. * Private data of an hmac_t object.
*
*/ */
struct private_hmac_t { struct private_hmac_t {
/** /**
* public hmac_t interface * hmac_t interface
*/ */
hmac_t public; hmac_t hmac;
/** /**
* block size, as in RFC * block size, as in RFC
@@ -57,7 +57,7 @@ struct private_hmac_t {
}; };
/** /**
* implementation of hmac_t.get_mac * Implementation of hmac_t.get_mac.
*/ */
static status_t get_mac(private_hmac_t *this, chunk_t data, u_int8_t *out) static status_t get_mac(private_hmac_t *this, chunk_t data, u_int8_t *out)
{ {
@@ -96,7 +96,7 @@ static status_t get_mac(private_hmac_t *this, chunk_t data, u_int8_t *out)
} }
/** /**
* implementation of hmac_t.allocate_mac * Implementation of hmac_t.allocate_mac.
*/ */
static status_t allocate_mac(private_hmac_t *this, chunk_t data, chunk_t *out) static status_t allocate_mac(private_hmac_t *this, chunk_t data, chunk_t *out)
{ {
@@ -104,7 +104,7 @@ static status_t allocate_mac(private_hmac_t *this, chunk_t data, chunk_t *out)
if (out == NULL) if (out == NULL)
{ {
/* append mode */ /* append mode */
this->public.get_mac(&(this->public), data, NULL); this->hmac.get_mac(&(this->hmac), data, NULL);
} }
else else
{ {
@@ -114,13 +114,13 @@ static status_t allocate_mac(private_hmac_t *this, chunk_t data, chunk_t *out)
{ {
return OUT_OF_RES; return OUT_OF_RES;
} }
this->public.get_mac(&(this->public), data, out->ptr); this->hmac.get_mac(&(this->hmac), data, out->ptr);
} }
return SUCCESS; return SUCCESS;
} }
/** /**
* implementation of hmac_t.get_block_size * Implementation of hmac_t.get_block_size.
*/ */
static size_t get_block_size(private_hmac_t *this) static size_t get_block_size(private_hmac_t *this)
{ {
@@ -128,7 +128,7 @@ static size_t get_block_size(private_hmac_t *this)
} }
/** /**
* implementation of hmac_t.set_key * Implementation of hmac_t.set_key.
*/ */
static status_t set_key(private_hmac_t *this, chunk_t key) static status_t set_key(private_hmac_t *this, chunk_t key)
{ {
@@ -163,7 +163,7 @@ static status_t set_key(private_hmac_t *this, chunk_t key)
} }
/** /**
* implementation of hmac_t.destroy * Implementation of hmac_t.destroy.
*/ */
static status_t destroy(private_hmac_t *this) static status_t destroy(private_hmac_t *this)
{ {
@@ -186,12 +186,12 @@ hmac_t *hmac_create(hash_algorithm_t hash_algorithm)
{ {
return NULL; return NULL;
} }
/* set public methods */ /* set hmac_t methods */
this->public.get_mac = (size_t (*)(hmac_t *,chunk_t,u_int8_t*))get_mac; this->hmac.get_mac = (size_t (*)(hmac_t *,chunk_t,u_int8_t*))get_mac;
this->public.allocate_mac = (size_t (*)(hmac_t *,chunk_t,chunk_t*))allocate_mac; this->hmac.allocate_mac = (size_t (*)(hmac_t *,chunk_t,chunk_t*))allocate_mac;
this->public.get_block_size = (size_t (*)(hmac_t *))get_block_size; this->hmac.get_block_size = (size_t (*)(hmac_t *))get_block_size;
this->public.set_key = (status_t (*)(hmac_t *,chunk_t))set_key; this->hmac.set_key = (status_t (*)(hmac_t *,chunk_t))set_key;
this->public.destroy = (status_t (*)(hmac_t *))destroy; this->hmac.destroy = (status_t (*)(hmac_t *))destroy;
/* set b, according to hasher */ /* set b, according to hasher */
switch (hash_algorithm) switch (hash_algorithm)
@@ -212,8 +212,6 @@ hmac_t *hmac_create(hash_algorithm_t hash_algorithm)
allocator_free(this); allocator_free(this);
return NULL; return NULL;
} }
/* build ipad and opad */ /* build ipad and opad */
this->opaded_key.ptr = allocator_alloc(this->b); this->opaded_key.ptr = allocator_alloc(this->b);
@@ -234,6 +232,5 @@ hmac_t *hmac_create(hash_algorithm_t hash_algorithm)
return NULL; return NULL;
} }
return &(this->hmac);
return &(this->public);
} }
+8 -8
View File
@@ -28,14 +28,14 @@
typedef struct hmac_t hmac_t; typedef struct hmac_t hmac_t;
/** /**
* @brief Message authentication based using hash functions. * @brief Message authentication using hash functions.
* *
* This class implements the message authenticaion algorithm * This class implements the message authenticaion algorithm
* described in RFC2104. It uses a hash function, wich must * described in RFC2104. It uses a hash function, wich must
* be implemented as a hasher_t class. * be implemented as a hasher_t class.
* *
* @see http://www.faqs.org/rfcs/rfc2104.html
* @see hasher_t, prf_hmac_t * @see hasher_t, prf_hmac_t
* *
* @ingroup transforms * @ingroup transforms
@@ -76,7 +76,7 @@ struct hmac_t {
status_t (*allocate_mac) (hmac_t *this, chunk_t data, chunk_t *chunk); status_t (*allocate_mac) (hmac_t *this, chunk_t data, chunk_t *chunk);
/** /**
* @brief get the block size of this hmac * @brief Get the block size of this hmac.
* *
* @param this calling hmac * @param this calling hmac
* @return block size in bytes * @return block size in bytes
@@ -84,7 +84,7 @@ struct hmac_t {
size_t (*get_block_size) (hmac_t *this); size_t (*get_block_size) (hmac_t *this);
/** /**
* @brief set the key for this hmac * @brief Set the key for this hmac.
* *
* Any key length is accepted. * Any key length is accepted.
* *
@@ -97,9 +97,9 @@ struct hmac_t {
/** /**
* @brief Destroys a hmac object. * @brief Destroys a hmac object.
* *
* @param this hmac_t object to destroy * @param this hmac_t object to destroy
* @return * @return
* SUCCESS in any case * - SUCCESS in any case
*/ */
status_t (*destroy) (hmac_t *this); status_t (*destroy) (hmac_t *this);
}; };
@@ -107,7 +107,7 @@ struct hmac_t {
/** /**
* @brief Creates a new hmac_t object. * @brief Creates a new hmac_t object.
* *
* Creates a new hmac_t object using sing hash_algorithm to * Creates a new hmac_t object using hash_algorithm to
* create a hasher_t internally. * create a hasher_t internally.
* *
* @param hash_algorithm hash algorithm to use * @param hash_algorithm hash algorithm to use