summaryrefslogtreecommitdiff
path: root/cesar/cp
diff options
context:
space:
mode:
authorlaranjeiro2009-09-03 08:24:02 +0000
committerlaranjeiro2009-09-03 08:24:02 +0000
commiteae6a5af32515cc74e519fd17a73e3489d693d58 (patch)
treeff4fc69ca392a212b169e931e616e0a431a4c0cb /cesar/cp
parent62bcba37fa5fff903fd89f29d9be5d2c12377e94 (diff)
*cp/sta/mgr: (Closes #488)
* Handle the storage of the DAK. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@5401 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/cp')
-rw-r--r--cesar/cp/sta/mgr/inc/sta_own_data.h5
-rw-r--r--cesar/cp/sta/mgr/src/sta_own_data.c18
-rw-r--r--cesar/cp/sta/mgr/sta_own_data.h16
-rw-r--r--cesar/cp/sta/mgr/test/src/sta-test.c28
4 files changed, 67 insertions, 0 deletions
diff --git a/cesar/cp/sta/mgr/inc/sta_own_data.h b/cesar/cp/sta/mgr/inc/sta_own_data.h
index 0e955cd50f..53540d19be 100644
--- a/cesar/cp/sta/mgr/inc/sta_own_data.h
+++ b/cesar/cp/sta/mgr/inc/sta_own_data.h
@@ -91,6 +91,11 @@ struct cp_sta_own_data_private_t
* The current TEK.
*/
cp_key_t tek;
+
+ /**
+ * The station's DAK.
+ */
+ cp_key_t dak;
};
#endif /* cp_sta_data_inc_sta_own_data_h */
diff --git a/cesar/cp/sta/mgr/src/sta_own_data.c b/cesar/cp/sta/mgr/src/sta_own_data.c
index 3fad63cc8a..dba78738e0 100644
--- a/cesar/cp/sta/mgr/src/sta_own_data.c
+++ b/cesar/cp/sta/mgr/src/sta_own_data.c
@@ -553,3 +553,21 @@ cp_sta_own_data_get_backup_cco_status (cp_t *ctx)
* functionality, we should return it. */
return CP_BACKUP_CCO_CAP;
}
+
+void
+cp_sta_own_data_set_dak (cp_t *ctx, cp_key_t dak)
+{
+ uint i;
+ dbg_assert (ctx);
+
+ for (i = 0; i < COUNT (dak.key); i++)
+ ctx->sta_mgr.sta_own_data.dak.key[i] = dak.key[i];
+}
+
+cp_key_t
+cp_sta_own_data_get_dak (cp_t *ctx)
+{
+ dbg_assert (ctx);
+
+ return ctx->sta_mgr.sta_own_data.dak;
+}
diff --git a/cesar/cp/sta/mgr/sta_own_data.h b/cesar/cp/sta/mgr/sta_own_data.h
index 031e5ea7b6..bc87db73b9 100644
--- a/cesar/cp/sta/mgr/sta_own_data.h
+++ b/cesar/cp/sta/mgr/sta_own_data.h
@@ -363,6 +363,22 @@ cp_sta_own_data_get_tek (cp_t *ctx);
bool
cp_sta_own_data_get_backup_cco_status (cp_t *ctx);
+/**
+ * Set the DAK in the station.
+ * \param ctx the control plane context.
+ * \param dak the DAK of the station.
+ */
+void
+cp_sta_own_data_set_dak (cp_t *ctx, cp_key_t dak);
+
+/**
+ * Get the DAK of the station.
+ * \param ctx the control plane context.
+ * \return the DAK of the station.
+ */
+cp_key_t
+cp_sta_own_data_get_dak (cp_t *ctx);
+
END_DECLS
#endif /* cp_sta_data_sta_own_data_h */
diff --git a/cesar/cp/sta/mgr/test/src/sta-test.c b/cesar/cp/sta/mgr/test/src/sta-test.c
index f4f823a847..f67565c48d 100644
--- a/cesar/cp/sta/mgr/test/src/sta-test.c
+++ b/cesar/cp/sta/mgr/test/src/sta-test.c
@@ -487,6 +487,33 @@ test_case_cp_sta_own_data__tek (test_t test)
test_end;
}
+void
+test_case_cp_sta_own_data__dak (test_t test)
+{
+ test_case_begin (test, "DAK");
+
+ test_begin (test, "store dak")
+ {
+ cp_t cp;
+ uint i;
+ cp_key_t dak = { {0x11111111, 0x22222222, 0x33333333, 0x44444444} };
+ cp_key_t own_dak;
+
+ memset (&cp, 0, sizeof (cp_t));
+
+ cp_sta_mgr_init (&cp);
+
+ cp_sta_own_data_set_dak (&cp, dak);
+ own_dak = cp_sta_own_data_get_dak (&cp);
+
+ for (i = 0; i < COUNT (dak.key); i++)
+ test_fail_unless (dak.key[i] == own_dak.key[i]);
+
+ cp_sta_mgr_uninit (&cp);
+ }
+ test_end;
+}
+
int
main (void)
{
@@ -512,6 +539,7 @@ main (void)
test_case_cp_sta_own_data__nid (test);
test_case_cp_sta_own_data__snid (test);
test_case_cp_sta_own_data__tek (test);
+ test_case_cp_sta_own_data__dak (test);
test_result (test);
return test_nb_failed (test) == 0 ? 0 : 1;