46#define LOG_MODULE "res-edhoc"
47#define LOG_LEVEL LOG_LEVEL_EDHOC
53static size_t msg_rx_len;
55static void res_edhoc_post_handler(coap_message_t *request,
56 coap_message_t *response,
58 uint16_t preferred_size,
61RESOURCE(
res_edhoc,
"title=\"EDHOC resource\"", NULL,
62 res_edhoc_post_handler, NULL, NULL);
67res_edhoc_post_handler(coap_message_t *request,
68 coap_message_t *response,
70 uint16_t preferred_size,
78 LOG_DBG(
"handler (%d)\n", (
int)msg_rx_len);
79 LOG_DBG_BYTES(msg_rx, msg_rx_len);
83 LOG_DBG(
"RX msg (%d)\n", (
int)msg_rx_len);
84 LOG_DBG_BYTES(msg_rx, msg_rx_len);
88 response->payload = (uint8_t *)
edhoc_ctx->buffers.msg_tx;
89 response->payload_len =
edhoc_ctx->buffers.tx_sz;
90 coap_set_header_block1(response, request->block1_num, 0,
91 request->block1_size);
93 if(response->payload_len > block_size) {
94 coap_set_option(response, COAP_OPTION_BLOCK2);
95 coap_set_header_block2(response, 0, 1, block_size);
98 coap_set_status_code(response, CHANGED_2_04);
99 memcpy(buffer,
edhoc_ctx->buffers.msg_tx + *offset, block_size);
100 if(
edhoc_ctx->buffers.tx_sz - *offset < preferred_size) {
101 preferred_size =
edhoc_ctx->buffers.tx_sz - *offset;
104 *offset += preferred_size;
106 coap_set_payload(response, buffer, preferred_size);
CoAP engine implementation.
An implementation of the Constrained Application Protocol (RFC 7252).
EDHOC server API [RFC9528] with CoAP Block-Wise Transfer [RFC7959].
edhoc_context_t * edhoc_ctx
EDHOC context struct used in the EDHOC protocol.
int coap_block1_handler(coap_message_t *request, coap_message_t *response, uint8_t *target, size_t *len, size_t max_len)
Block 1 support within a CoAP resource.
void edhoc_server_process(coap_message_t *req, coap_message_t *res, edhoc_server_t *ser, uint8_t *msg, size_t len)
Run the EDHOC Responder role process.
#define EDHOC_MAX_PAYLOAD_LEN
The max length of the EDHOC message.
struct edhoc_server edhoc_server_t
EDHOC Server Struct.
coap_resource_t res_edhoc
CoAP resource.
Header file for the logging system.