39#ifndef _EDHOC_MSGS_H__
40#define _EDHOC_MSGS_H__
50typedef struct edhoc_ead_data {
52 const uint8_t *ead_value;
56typedef struct edhoc_msg_1 {
66typedef struct edhoc_msg_2 {
67 uint8_t *gy_ciphertext_2;
68 size_t gy_ciphertext_2_sz;
71typedef struct edhoc_msg_3 {
72 uint8_t *ciphertext_3;
73 size_t ciphertext_3_sz;
76#define EDHOC_MSG_ERR_CODE_RESERVED_FOR_SUCCESS 0
77#define EDHOC_MSG_ERR_CODE_UNSPECIFIED_ERROR 1
78#define EDHOC_MSG_ERR_CODE_WRONG_CIPHER_SUITE 2
79#define EDHOC_MSG_ERR_CODE_UNKNOWN_CREDENTIAL_SELECTION 3
80#define EDHOC_MSG_ERR_CODE_RESERVED 23
82typedef struct edhoc_msg_error {
97edhoc_msg_error_get_code(
const edhoc_msg_error_t *msg)
102static inline const char *
103edhoc_msg_error_get_info(
const edhoc_msg_error_t *msg)
105 return msg->info.tstr.err_info;
109edhoc_msg_error_get_info_sz(
const edhoc_msg_error_t *msg)
111 return msg->err_code == EDHOC_MSG_ERR_CODE_UNSPECIFIED_ERROR
112 ? msg->info.tstr.err_info_sz
116static inline const uint8_t *
117edhoc_msg_error_get_suites(
const edhoc_msg_error_t *msg)
119 return msg->info.suites.suites;
122static inline const uint8_t
123edhoc_msg_error_get_suites_num(
const edhoc_msg_error_t *msg)
125 return msg->err_code == EDHOC_MSG_ERR_CODE_WRONG_CIPHER_SUITE
126 ? msg->info.suites.suites_num
156size_t edhoc_serialize_msg_1(edhoc_msg_1_t *msg,
unsigned char *buffer,
size_t buffer_sz,
bool suite_array);
165size_t edhoc_serialize_err(
const edhoc_msg_error_t *msg,
unsigned char *buffer,
size_t buffer_sz);
EDHOC configuration file.
Error handling module header for EDHOC.
edhoc_error_t
Unified error type for EDHOC operations.
EDHOC key storage - Implementation of key storage for managing DH-static authentication key pairs.
struct cose_key cose_key_t
KEY length in bytes.
edhoc_error_t edhoc_deserialize_msg_1(edhoc_msg_1_t *msg, unsigned char *buffer, size_t buff_sz)
Deserialize EDHOC message 1 from CBOR data.
void print_msg_3(edhoc_msg_3_t *msg)
Print EDHOC message 3 contents for debugging.
void edhoc_write_byte_identifier(cbor_writer_state_t *state, const uint8_t *bytes, size_t len)
Write EDHOC byte identifier according to RFC 9528 rules.
size_t edhoc_serialize_err(const edhoc_msg_error_t *msg, unsigned char *buffer, size_t buffer_sz)
Serialize EDHOC error message to CBOR format.
void print_msg_1(edhoc_msg_1_t *msg)
Print EDHOC message 1 contents for debugging.
const uint8_t * edhoc_read_byte_identifier(cbor_reader_state_t *reader, size_t *size)
Read byte identifier from CBOR reader.
uint8_t edhoc_get_ad(cbor_reader_state_t *reader, uint8_t *ad, size_t ad_buffer_size)
Parse Additional Data (AD) from CBOR reader.
void print_msg_2(edhoc_msg_2_t *msg)
Print EDHOC message 2 contents for debugging.
edhoc_error_t edhoc_deserialize_msg_3(edhoc_msg_3_t *msg, unsigned char *buffer, size_t buff_sz)
Deserialize EDHOC message 3 from CBOR data.
edhoc_error_t edhoc_get_auth_key_from_kid(uint8_t *kid, uint8_t kid_sz, cose_key_t **key)
Get authentication key by Key ID (KID).
size_t edhoc_serialize_msg_1(edhoc_msg_1_t *msg, unsigned char *buffer, size_t buffer_sz, bool suite_array)
Serialize EDHOC message 1 to CBOR format.
uint8_t edhoc_get_sign(cbor_reader_state_t *reader, uint8_t **sign)
Parse signature data from CBOR reader.
edhoc_error_t edhoc_deserialize_msg_2(edhoc_msg_2_t *msg, unsigned char *buffer, size_t buff_sz)
Deserialize EDHOC message 2 from CBOR data.
edhoc_error_t edhoc_process_ead_item(const edhoc_ead_data_t *ead_data)
Process and validate EAD (External Authorization Data) items.
bool edhoc_deserialize_err(edhoc_msg_error_t *msg, const uint8_t *data, size_t data_size)
Deserialize EDHOC error message from CBOR data.
int8_t edhoc_get_key_id_cred_x(cbor_reader_state_t *reader, uint8_t *id_cred_x, size_t id_cred_x_buffer_size, cose_key_t *key)
Parse ID_CRED_X from CBOR data and extract authentication key.
#define EDHOC_SUITES_MAX_COUNT
The max number of suites.
Structure of the internal state of a CBOR reader.
Structure of the internal state of a CBOR writer.