(no commit message)
authorJan Hutter <jhutter@hsr.ch>
Tue, 22 Nov 2005 07:55:15 +0000 (07:55 -0000)
committerJan Hutter <jhutter@hsr.ch>
Tue, 22 Nov 2005 07:55:15 +0000 (07:55 -0000)
Source/charon/transforms/prfs/prf.c [new file with mode: 0644]
Source/charon/transforms/prfs/prf.h [new file with mode: 0644]

diff --git a/Source/charon/transforms/prfs/prf.c b/Source/charon/transforms/prfs/prf.c
new file mode 100644 (file)
index 0000000..d5f480f
--- /dev/null
@@ -0,0 +1,51 @@
+/**
+ * @file prf.c
+ * 
+ * @brief Generic interface for pseudo-random-functions
+ * 
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * Hochschule fuer Technik Rapperswil
+ *
+ * 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
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * 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
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+
+#include "prf.h"
+
+#include "prf_hmac_sha1.h"
+
+
+/*
+ * Described in header
+ */
+prf_t *prf_create(pseudo_random_function_t pseudo_random_function, chunk_t key)
+{
+       switch (pseudo_random_function)
+       {
+               case PRF_HMAC_SHA1:
+               {
+                       return (prf_t*)prf_hmac_sha1_create(key);
+               }
+               case PRF_HMAC_MD5:
+               case PRF_HMAC_TIGER:
+               case PRF_AES128_CBC:
+               default:
+                       return NULL;
+       }
+}
+
+
+
+
+
diff --git a/Source/charon/transforms/prfs/prf.h b/Source/charon/transforms/prfs/prf.h
new file mode 100644 (file)
index 0000000..537b05a
--- /dev/null
@@ -0,0 +1,88 @@
+/**
+ * @file prf.h
+ * 
+ * @brief Generic interface for pseudo-random-functions
+ * 
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * Hochschule fuer Technik Rapperswil
+ *
+ * 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
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * 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
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#ifndef PRF_H_
+#define PRF_H_
+
+#include "../../payloads/transform_substructure.h"
+
+
+/**
+ * Object representing a diffie hellman exchange
+ */
+typedef struct prf_s prf_t;
+
+struct prf_s {
+       /**
+        * @brief generates pseudo random bytes and writes them
+        * in the buffer
+        * 
+        * @param this                  calling prf
+        * @param seed                  a chunk containing the seed for the next bytes
+        * @param [out]buffer   pointer where the generated bytes will be written
+        * @return                              
+        *                                              - SUCCESS in any case
+        */
+       status_t (*get_bytes) (prf_t *this, chunk_t seed, u_int8_t *buffer);
+       
+       /**
+        * @brief generates pseudo random bytes and allocate space for them
+        * 
+        * @param this                  calling prf
+        * @param seed                  a chunk containing the seed for the next bytes
+        * @param [out]chunk    chunk which will hold generated bytes
+        * @return                              
+        *                                              - SUCCESS in any case
+        *                                              - OUT_OF_RES if space could not be allocated
+        */
+       status_t (*allocate_bytes) (prf_t *this, chunk_t seed, chunk_t *chunk);
+       
+       /**
+        * @brief get the block size of this prf
+        * 
+        * @param this                  calling prf
+        * @return                              block size in bytes
+        */
+       size_t (*get_block_size) (prf_t *this);
+       
+       /**
+        * @brief Destroys a prf object.
+        *
+        * @param this  prf_t object to destroy
+        * @return              
+        *                              SUCCESS in any case
+        */
+       status_t (*destroy) (prf_t *this);
+};
+
+/**
+ * Creates a new prf_t object
+ * 
+ * @param pseudo_random_function       Algorithm to use
+ * @param key                                          A chunk containing the key
+ * @return
+ *                                                                     - prf_t if successfully
+ *                                                                     - NULL if out of ressources or prf not supported
+ */
+prf_t *prf_create(pseudo_random_function_t pseudo_random_function, chunk_t key);
+
+#endif /*PRF_H_*/