Add context id getter to TKM DH implementation
authorAdrian-Ken Rueegsegger <ken@codelabs.ch>
Wed, 22 Aug 2012 09:17:14 +0000 (11:17 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 19 Mar 2013 14:23:46 +0000 (15:23 +0100)
src/charon-tkm/src/tkm/tkm_diffie_hellman.c
src/charon-tkm/src/tkm/tkm_diffie_hellman.h
src/charon-tkm/tests/diffie_hellman_tests.c

index 21378da..9a38c16 100644 (file)
@@ -103,6 +103,12 @@ METHOD(diffie_hellman_t, destroy, void,
        free(this);
 }
 
+METHOD(tkm_diffie_hellman_t, get_id, dh_id_type,
+       private_tkm_diffie_hellman_t *this)
+{
+       return this->context_id;
+}
+
 /*
  * Described in header.
  */
@@ -119,6 +125,7 @@ tkm_diffie_hellman_t *tkm_diffie_hellman_create(diffie_hellman_group_t group)
                                .get_dh_group = _get_dh_group,
                                .destroy = _destroy,
                        },
+                       .get_id = _get_id,
                },
                .group = group,
                .context_id = tkm->idmgr->acquire_id(tkm->idmgr, TKM_CTX_DH),
index 25d1967..0f45793 100644 (file)
@@ -20,6 +20,7 @@
 typedef struct tkm_diffie_hellman_t tkm_diffie_hellman_t;
 
 #include <library.h>
+#include <tkm/types.h>
 
 /**
  * diffie_hellman_t implementation using the trusted key manager.
@@ -30,6 +31,14 @@ struct tkm_diffie_hellman_t {
         * Implements diffie_hellman_t interface.
         */
        diffie_hellman_t dh;
+
+       /**
+        * Get Diffie-Hellman context id.
+        *
+        * @return      id of this DH context.
+        */
+       dh_id_type (*get_id)(tkm_diffie_hellman_t * const this);
+
 };
 
 /**
index c2e905e..ffe9961 100644 (file)
@@ -27,6 +27,7 @@ START_TEST(test_dh_creation)
 
        dh = tkm_diffie_hellman_create(MODP_4096_BIT);
        fail_if(!dh, "MODP_4096 not created");
+       fail_if(!dh->get_id(dh), "Invalid context id (0)");
 
        dh->dh.destroy(&dh->dh);
 }