#ifndef cp_msg_inc_cm_get_key_h #define cp_msg_inc_cm_get_key_h /* Cesar project {{{ * * Copyright (C) 2008 Spidcom * * <<>> * * }}} */ /** * \file cp/msg/inc/cm_get_key.h * \brief CM_GET_KEY messages. * \ingroup cp_msg */ #include "mac/common/defs.h" /** CM_GET_KEY.CNF result. */ enum cp_msg_cm_get_key_cnf_result_t { CP_MSG_CM_GET_KEY_CNF_RESULT_KEY_GRANTED, CP_MSG_CM_GET_KEY_CNF_RESULT_REQUEST_REFUSED, CP_MSG_CM_GET_KEY_CNF_RESULT_UNSUPPORTED_METHOD_KEY_TYPE, CP_MSG_CM_GET_KEY_CNF_RESULT_NB }; /** Data associated with a CM_GET_KEY.REQ message. */ struct cp_msg_cm_get_key_req_t { /** Request type: direct or relayed. */ uint relayed; /** Requested key type. */ enum cp_msg_key_type_t key_type; /** NID. */ cp_nid_t nid; /** Hash key if present. */ u32 hash_key[CP_HASH_KEY_SIZE / sizeof (u32)]; }; typedef struct cp_msg_cm_get_key_req_t cp_msg_cm_get_key_req_t; /** Data associated with a CM_GET_KEY.CNF message. */ struct cp_msg_cm_get_key_cnf_t { /** Result. */ enum cp_msg_cm_get_key_cnf_result_t result; /** Requested key type. */ enum cp_msg_key_type_t key_type; /** NID. */ cp_nid_t nid; /** EKS. */ mac_eks_t eks; union { /** Hash key if present. */ u32 hash_key[CP_HASH_KEY_SIZE / sizeof (u32)]; /** Key if present. */ cp_key_t key; }; }; typedef struct cp_msg_cm_get_key_cnf_t cp_msg_cm_get_key_cnf_t; #endif /* cp_msg_inc_cm_get_key_h */