#ifndef cp2_msg_inc_cm_get_key_h #define cp2_msg_inc_cm_get_key_h /* Cesar project {{{ * * Copyright (C) 2008 Spidcom * * <<>> * * }}} */ /** * \file cp2/msg/inc/cm_get_key.h * \brief CM_GET_KEY messages. * \ingroup cp2_msg */ /** 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. */ bool relayed; /** Requested key type. */ enum cp_msg_key_type_t key_type; /** NID. */ cp_nid_t nid; /** Hash key if present. */ u8 hash_key[CP_HASH_KEY_SIZE]; }; 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. */ u8 eks; union { /** Hash key if present. */ u8 hash_key[CP_HASH_KEY_SIZE]; /** Key if present. */ cp_key_t key; }; }; typedef struct cp_msg_cm_get_key_cnf_t cp_msg_cm_get_key_cnf_t; #endif /* cp2_msg_inc_cm_get_key_h */