aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/transforms/signers/signer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/transforms/signers/signer.h')
-rw-r--r--Source/charon/transforms/signers/signer.h72
1 files changed, 49 insertions, 23 deletions
diff --git a/Source/charon/transforms/signers/signer.h b/Source/charon/transforms/signers/signer.h
index b0a107e2f..5eb4c1875 100644
--- a/Source/charon/transforms/signers/signer.h
+++ b/Source/charon/transforms/signers/signer.h
@@ -1,7 +1,7 @@
/**
* @file signer.h
*
- * @brief Generic interface for integrity algorithms
+ * @brief Interface for signer_t.
*
*/
@@ -23,33 +23,55 @@
#ifndef SIGNER_H_
#define SIGNER_H_
-#include <encoding/payloads/transform_substructure.h>
+#include <types.h>
+#include <definitions.h>
+
+typedef enum integrity_algorithm_t integrity_algorithm_t;
+
+/**
+ * @brief Integrity algorithm, as in IKEv2 draft 3.3.2.
+ *
+ */
+enum integrity_algorithm_t {
+ AUTH_UNDEFINED = 1024,
+ AUTH_HMAC_MD5_96 = 1,
+ AUTH_HMAC_SHA1_96 = 2,
+ AUTH_DES_MAC = 3,
+ AUTH_KPDK_MD5 = 4,
+ AUTH_AES_XCBC_96 = 5
+};
+
+/**
+ * string mappings for integrity_algorithm_t
+ */
+extern mapping_t integrity_algorithm_m[];
typedef struct signer_t signer_t;
/**
- * Object representing a diffie hellman exchange
+ * @brief Generig interface for a symmetric signature algorithm.
+ *
+ * @ingroup signers
*/
struct signer_t {
/**
- * @brief generates pseudo random bytes and writes them
- * in the buffer
+ * @brief Generate a signature.
*
* @param this calling signer
- * @param seed a chunk containing the seed for the next bytes
- * @param [out]buffer pointer where the generated bytes will be written
+ * @param data a chunk containing the data to sign
+ * @param[out] buffer pointer where the signature will be written
* @return
* - SUCCESS in any case
*/
status_t (*get_signature) (signer_t *this, chunk_t data, u_int8_t *buffer);
/**
- * @brief generates pseudo random bytes and allocate space for them
+ * @brief Generate a signature and allocate space for it.
*
* @param this calling signer
- * @param seed a chunk containing the seed for the next bytes
- * @param [out]chunk chunk which will hold generated bytes
+ * @param data a chunk containing the data to sign
+ * @param[out] chunk chunk which will hold the allocated signature
* @return
* - SUCCESS in any case
* - OUT_OF_RES if space could not be allocated
@@ -57,19 +79,19 @@ struct signer_t {
status_t (*allocate_signature) (signer_t *this, chunk_t data, chunk_t *chunk);
/**
- * @brief generates pseudo random bytes and writes them
- * in the buffer
+ * @brief Verify a signature.
*
* @param this calling signer
- * @param seed a chunk containing the seed for the next bytes
- * @param [out]buffer pointer where the generated bytes will be written
+ * @param data a chunk containing the data to verify
+ * @param signature a chunk containing the signature
+ * @param[out] vaild set to TRUE, if signature is valid, to FALSE otherwise
* @return
* - SUCCESS in any case
*/
status_t (*verify_signature) (signer_t *this, chunk_t data, chunk_t signature, bool *valid);
/**
- * @brief get the block size of this signer
+ * @brief Get the block size of this signature algorithm.
*
* @param this calling signer
* @return block size in bytes
@@ -77,30 +99,34 @@ struct signer_t {
size_t (*get_block_size) (signer_t *this);
/**
- * @brief Set the key for this signer
+ * @brief Set the key for this signer.
*
* @param this calling signer
- * @return block size in bytes
+ * @param key key to set
+ * @return
+ * - SUCCESS in any case
*/
status_t (*set_key) (signer_t *this, chunk_t key);
/**
* @brief Destroys a signer object.
*
- * @param this signer_t object to destroy
+ * @param this signer_t object to destroy
* @return
- * SUCCESS in any case
+ * - SUCCESS in any case
*/
status_t (*destroy) (signer_t *this);
};
/**
- * Creates a new signer_t object
+ * @brief Creates a new signer_t object.
*
- * @param pseudo_random_function Algorithm to use
+ * @param integrity_algorithm Algorithm to use for signing and verifying.
* @return
- * - signer_t if successfully
- * - NULL if out of ressources or signer not supported
+ * - signer_t if successfully
+ * - NULL if out of ressources or signer not supported
+ *
+ * @ingroup signers
*/
signer_t *signer_create(integrity_algorithm_t integrity_algorithm);