summaryrefslogtreecommitdiff
path: root/cesar/cp/secu/src
diff options
context:
space:
mode:
authorlaranjeiro2009-01-29 14:24:05 +0000
committerlaranjeiro2009-01-29 14:24:05 +0000
commit1a962abfc9ed243c14ef54881d3f706b6c19f0e3 (patch)
tree70daa5b89afed6e1d4f5a76a458509c44bc2970e /cesar/cp/secu/src
parentc0efb228bff615f9de00dfa7e58b60ad46b292c7 (diff)
cp/secu: Added the TEK function generation. (Closes #64).
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@3898 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/cp/secu/src')
-rw-r--r--cesar/cp/secu/src/secu.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/cesar/cp/secu/src/secu.c b/cesar/cp/secu/src/secu.c
index 3becf836d4..ae219872cd 100644
--- a/cesar/cp/secu/src/secu.c
+++ b/cesar/cp/secu/src/secu.c
@@ -18,6 +18,7 @@
#include "cp/secu/defs.h"
#include "cp/secu/secu.h"
#include "cp/secu/pbkdf1.h"
+#include "cp/secu/sha256.h"
#include "cp/secu/inc/pbkdf1.h"
@@ -147,3 +148,28 @@ cp_secu_nmk2nid(cp_key_t nmk, u8 security_level)
return nid;
}
+void
+cp_secu_tek_gen (const u32 left[], const uint left_len,
+ const u32 right[], const uint right_len,
+ cp_key_t *output)
+{
+ u8 sha_buff[left_len + right_len];
+ u8 output_buffer [CP_SECU_SHA256_SIZE];
+ dbg_assert (left);
+ dbg_assert (right);
+ dbg_assert (output);
+
+ /* Insert the left part in the left part of the sha_buf. */
+ memcpy (sha_buff + right_len, left, left_len);
+ memcpy (sha_buff, right, right_len);
+
+ /* Salt is NULL, no salt use for the tek
+ * the first 0 is for the salt length
+ * the second one is for the iteration number.
+ * see HPAV section 7.10.7.2. Paragraph 4 .*/
+ cp_secu_sha256 (sha_buff, left_len + right_len, output_buffer);
+
+ /* Copy the leftmost 16 bytes. */
+ memcpy (output->key, output_buffer, 16);
+}
+