49#if COAP_OSCORE_SUPPORT
54util_write_byte(uint8_t **buffer,
size_t *buf_size, uint8_t value) {
55 assert(*buf_size >= 1);
65 util_write_byte(buffer, buf_size, 0xF6);
71 util_write_byte(buffer, buf_size, 0xF5);
77 util_write_byte(buffer, buf_size, 0xF4);
86 uint8_t *pt = *buffer;
88 assert(*buf_size >= text_len);
89 if (*buf_size < text_len)
91 (*buf_size) -= text_len;
93 memcpy(*buffer, text, text_len);
94 (*buffer) += text_len;
100 uint8_t *pt = *buffer;
109 const uint8_t *bytes,
111 uint8_t *pt = *buffer;
113 assert(*buf_size >= bytes_len);
114 if (*buf_size < bytes_len)
116 (*buf_size) -= bytes_len;
119 memcpy(*buffer, bytes, bytes_len);
120 (*buffer) += bytes_len;
121 return nb + bytes_len;
126 uint8_t *pt = *buffer;
144 uint8_t *pt = *buffer;
152 uint8_t *pt = *buffer;
161 uint8_t *pt = *buffer;
168put_b_f(uint8_t **buffer, uint64_t value, uint8_t nr) {
169 uint8_t *pt = *buffer - 1;
171 for (
int q = nr; q > -1; q--) {
172 (*pt--) = (uint8_t)(vv & 0xff);
180 assert(*buf_size >= 1);
184 (**buffer) = (uint8_t)value;
187 }
else if ((value > 0x17) && (value < 0x100)) {
189 assert(*buf_size >= 2);
194 *buffer = (*buffer) + 2;
195 put_b_f(buffer, value, 0);
197 }
else if ((value > 0xff) && (value < 0x10000)) {
199 assert(*buf_size >= 3);
204 *buffer = (*buffer) + 3;
205 put_b_f(buffer, value, 1);
207 }
else if ((value > 0xffff) && (value < 0x100000000)) {
209 assert(*buf_size >= 5);
214 *buffer = (*buffer) + 5;
215 put_b_f(buffer, value, 3);
219 assert(*buf_size >= 9);
224 *buffer = (*buffer) + 9;
225 put_b_f(buffer, value, 7);
231get_byte(
const uint8_t **buffer,
size_t *buf_len) {
239get_byte_inc(
const uint8_t **buffer,
size_t *buf_len) {
243 return ((*buffer)++)[0];
248 uint8_t element = get_byte(buffer, buf_len);
261 uint8_t control = get_byte_inc(buffer, buf_len) & 0x1f;
264 if (control < 0x18) {
265 size = (uint64_t)control;
267 control = control & 0x3;
268 int num = 1 << control;
271 for (
int i = 0; i < num; i++) {
272 getal = get_byte_inc(buffer, buf_len);
273 size = (size << 8) + getal;
281 const uint8_t *buf = data;
284 coap_log_err(
"oscore_cbor_elem_contained returns 1 \n");
329 *value = get_byte_inc(data, buf_len) & 0x1f;
338 for (
size_t i = 0; i < size; i++) {
339 *str++ = (char)get_byte_inc(buffer, buf_len);
346 for (
size_t i = 0; i < size; i++) {
347 *arr++ = get_byte_inc(buffer, buf_len);
365 *result = (uint8_t *)rs;
383oscore_cbor_skip_value(
const uint8_t **data,
size_t *buf_len) {
385 uint8_t control = get_byte(data, buf_len) & 0x1f;
389 if (control < 0x18) {
392 control = control & 0x3;
393 num = 1 + (1 << control);
398 assert((*buf_len) >= num);
409 assert((*buf_len) >= (size - num));
410 if (*buf_len < size - num)
412 *buf_len -= (size - num);
413 (*data) = (*data) + size - num;
418 for (uint16_t qq = 0; qq < nb; qq++)
419 size += oscore_cbor_skip_value(data, buf_len);
424 for (uint16_t qq = 0; qq < nb; qq++) {
425 size += oscore_cbor_skip_value(data, buf_len);
426 size += oscore_cbor_skip_value(data, buf_len);
430 assert((*buf_len) >= 1);
450 const uint8_t *st_data = *data;
451 size_t size = oscore_cbor_skip_value(data, buf_len);
453 for (uint16_t qq = 0; qq < size; qq++)
454 (*result)[qq] = st_data[qq];
465#pragma GCC diagnostic ignored "-Wunused-function"
Library specific build wrapper for coap_internal.h.
void * coap_malloc_type(coap_memory_tag_t type, size_t size)
Allocates a chunk of size bytes and returns a pointer to the newly allocated memory.
#define coap_log_err(...)
size_t oscore_cbor_put_text(uint8_t **buffer, size_t *buf_size, const char *text, size_t text_len)
size_t oscore_cbor_get_element_size(const uint8_t **buffer, size_t *buf_size)
#define CBOR_NEGATIVE_INTEGER
int64_t oscore_cbor_get_negative_integer(const uint8_t **buffer, size_t *buf_size)
#define CBOR_SIMPLE_VALUE
size_t oscore_cbor_put_number(uint8_t **buffer, size_t *buf_size, int64_t value)
size_t oscore_cbor_put_simple_value(uint8_t **buffer, size_t *buf_size, uint8_t value)
uint8_t oscore_cbor_get_string_array(const uint8_t **data, size_t *buf_size, uint8_t **result, size_t *len)
#define CBOR_UNSIGNED_INTEGER
uint8_t oscore_cbor_strip_value(const uint8_t **data, size_t *buf_size, uint8_t **result, size_t *len)
size_t oscore_cbor_put_nil(uint8_t **buffer, size_t *buf_size)
void oscore_cbor_get_string(const uint8_t **buffer, size_t *buf_size, char *str, size_t size)
uint8_t oscore_cbor_get_simple_value(const uint8_t **data, size_t *buf_size, uint8_t *value)
size_t oscore_cbor_put_false(uint8_t **buffer, size_t *buf_size)
uint8_t oscore_cbor_get_next_element(const uint8_t **buffer, size_t *buf_size)
size_t oscore_cbor_put_negative(uint8_t **buffer, size_t *buf_size, int64_t value)
size_t oscore_cbor_put_true(uint8_t **buffer, size_t *buf_size)
size_t oscore_cbor_put_unsigned(uint8_t **buffer, size_t *buf_size, uint64_t value)
size_t oscore_cbor_put_bytes(uint8_t **buffer, size_t *buf_size, const uint8_t *bytes, size_t bytes_len)
void oscore_cbor_get_array(const uint8_t **buffer, size_t *buf_size, uint8_t *arr, size_t size)
uint64_t oscore_cbor_get_unsigned_integer(const uint8_t **buffer, size_t *buf_size)
uint8_t oscore_cbor_elem_contained(const uint8_t *data, size_t *buf_size, uint8_t *end)
uint8_t oscore_cbor_get_number(const uint8_t **data, size_t *buf_size, int64_t *value)
size_t oscore_cbor_put_array(uint8_t **buffer, size_t *buf_size, size_t elements)
size_t oscore_cbor_put_map(uint8_t **buffer, size_t *buf_size, size_t elements)
size_t oscore_cbor_put_tag(uint8_t **buffer, size_t *buf_size, uint64_t value)