![]() |
Contiki-NG
|
Functions for reading and writing CBOR. More...
Files | |
| file | os/lib/cbor.c |
| CBOR implementation. | |
| file | os/lib/cbor.h |
| CBOR API. | |
Data Structures | |
| struct | cbor_nesting_record_t |
| Structure of a nesting record. More... | |
| struct | cbor_writer_state_t |
| Structure of the internal state of a CBOR writer. More... | |
| struct | cbor_reader_state_t |
| Structure of the internal state of a CBOR reader. More... | |
Macros | |
| #define | CBOR_MAX_NESTING (8) |
| Defines how many arrays and maps can be open simultaneously while writing. | |
Typedefs | |
| typedef enum cbor_major_type_t | cbor_major_type_t |
| Enumeration of major types. | |
| typedef enum cbor_simple_value_t | cbor_simple_value_t |
| Enumeration of simple values. | |
| typedef enum cbor_size_t | cbor_size_t |
| Enumeration of size information in various major types. | |
| typedef struct cbor_nesting_record_t | cbor_nesting_record_t |
| Structure of a nesting record. | |
| typedef struct cbor_writer_state_t | cbor_writer_state_t |
| Structure of the internal state of a CBOR writer. | |
| typedef struct cbor_reader_state_t | cbor_reader_state_t |
| Structure of the internal state of a CBOR reader. | |
Enumerations | |
| enum | cbor_major_type_t |
| Enumeration of major types. | |
| enum | cbor_simple_value_t |
| Enumeration of simple values. | |
| enum | cbor_size_t { CBOR_SIZE_NONE = -1 , CBOR_SIZE_1 = 0x18 , CBOR_SIZE_2 = 0x19 , CBOR_SIZE_4 = 0x1A , CBOR_SIZE_8 = 0x1B } |
| Enumeration of size information in various major types. More... | |
Functions | |
| void | cbor_init_writer (cbor_writer_state_t *state, uint8_t *buffer, size_t buffer_size) |
| Prepares for writing CBOR output. | |
| size_t | cbor_end_writer (cbor_writer_state_t *state) |
| Finishes writing CBOR output. | |
| void | cbor_break_writer (cbor_writer_state_t *state) |
| Marks the CBOR output as erroneous. | |
| void | cbor_write_object (cbor_writer_state_t *state, const void *object, size_t object_size) |
| Appends an arbitrary CBOR object. | |
| void | cbor_write_unsigned (cbor_writer_state_t *state, uint64_t value) |
| Appends an unsigned integer. | |
| void | cbor_write_signed (cbor_writer_state_t *state, int64_t value) |
| Appends a signed integer. | |
| void | cbor_write_data (cbor_writer_state_t *state, const uint8_t *data, size_t data_size) |
| Appends a byte string. | |
| void | cbor_write_text (cbor_writer_state_t *state, const char *text, size_t text_size) |
| Appends a text string. | |
| void | cbor_write_null (cbor_writer_state_t *state) |
Appends the simple value null. | |
| void | cbor_write_undefined (cbor_writer_state_t *state) |
Appends the simple value undefined. | |
| void | cbor_write_bool (cbor_writer_state_t *state, bool boolean) |
| Appends a boolean simple value. | |
| void | cbor_open_data (cbor_writer_state_t *state) |
| Encloses subsequent CBOR objects in a byte string. | |
| void | cbor_close_data (cbor_writer_state_t *state) |
| Stops enclosing subsequent CBOR objects in the innermost byte string. | |
| void | cbor_open_array (cbor_writer_state_t *state) |
| Adds subsequent CBOR objects to an array. | |
| void | cbor_close_array (cbor_writer_state_t *state) |
| Stops adding subsequent CBOR objects to the innermost array. | |
| void | cbor_open_map (cbor_writer_state_t *state) |
| Adds subsequent entries to a map. | |
| void | cbor_close_map (cbor_writer_state_t *state) |
| Stops adding subsequent entries to the innermost map. | |
| void | cbor_init_reader (cbor_reader_state_t *state, const uint8_t *cbor, size_t cbor_size) |
| Prepares for reading CBOR input. | |
| cbor_major_type_t | cbor_peek_next (cbor_reader_state_t *state) |
| Inspects the next major type. | |
| bool | cbor_end_reader (cbor_reader_state_t *state) |
| Ensures that no bytes remain unread. | |
| cbor_size_t | cbor_read_unsigned (cbor_reader_state_t *state, uint64_t *value) |
| Reads an unsigned integer. | |
| cbor_size_t | cbor_read_signed (cbor_reader_state_t *state, int64_t *value) |
| Reads a signed integer. | |
| const uint8_t * | cbor_read_data (cbor_reader_state_t *state, size_t *data_size) |
| Reads a byte string. | |
| const char * | cbor_read_text (cbor_reader_state_t *state, size_t *text_size) |
| Reads a text string. | |
| cbor_simple_value_t | cbor_read_simple (cbor_reader_state_t *state) |
| Reads a simple value. | |
| size_t | cbor_read_array (cbor_reader_state_t *state) |
| Reads the number of elements of an array. | |
| size_t | cbor_read_map (cbor_reader_state_t *state) |
| Reads the number of entries of a map. | |
| const uint8_t * | cbor_get_position (cbor_reader_state_t *state) |
| Gets the current position in the CBOR buffer. | |
| size_t | cbor_get_remaining (cbor_reader_state_t *state) |
| Gets the remaining bytes in the CBOR buffer. | |
| bool | cbor_skip_next (cbor_reader_state_t *state) |
| Skips the next CBOR object in the buffer. | |
Functions for reading and writing CBOR.
| enum cbor_size_t |
| void cbor_break_writer | ( | cbor_writer_state_t * | state | ) |
Marks the CBOR output as erroneous.
| state | State of the CBOR writer. |
Definition at line 62 of file cbor.c.
Referenced by cbor_close_array(), cbor_close_data(), and cbor_close_map().
| void cbor_close_array | ( | cbor_writer_state_t * | state | ) |
Stops adding subsequent CBOR objects to the innermost array.
| state | State of the CBOR writer. |
Definition at line 266 of file cbor.c.
References cbor_break_writer(), and CBOR_MAX_NESTING.
| void cbor_close_data | ( | cbor_writer_state_t * | state | ) |
Stops enclosing subsequent CBOR objects in the innermost byte string.
| state | State of the CBOR writer. |
Definition at line 249 of file cbor.c.
References cbor_break_writer(), and CBOR_MAX_NESTING.
Referenced by edhoc_generate_message_2().
| void cbor_close_map | ( | cbor_writer_state_t * | state | ) |
Stops adding subsequent entries to the innermost map.
| state | State of the CBOR writer. |
Definition at line 282 of file cbor.c.
References cbor_break_writer(), and CBOR_MAX_NESTING.
Referenced by edhoc_generate_cred_x(), and edhoc_generate_id_cred_x().
| bool cbor_end_reader | ( | cbor_reader_state_t * | state | ) |
| size_t cbor_end_writer | ( | cbor_writer_state_t * | state | ) |
Finishes writing CBOR output.
| state | State of the CBOR writer. |
0 on error. Definition at line 54 of file cbor.c.
References CBOR_MAX_NESTING.
Referenced by edhoc_authenticate_msg(), edhoc_calc_mac(), edhoc_generate_cred_x(), edhoc_generate_id_cred_x(), edhoc_generate_message_2(), edhoc_generate_message_3(), edhoc_generate_transcript_hash_2(), edhoc_generate_transcript_hash_3(), edhoc_generate_transcript_hash_4(), edhoc_serialize_err(), and edhoc_serialize_msg_1().
| const uint8_t * cbor_get_position | ( | cbor_reader_state_t * | state | ) |
Gets the current position in the CBOR buffer.
| state | State of the CBOR reader. |
NULL on error. Definition at line 469 of file cbor.c.
Referenced by edhoc_authenticate_msg(), edhoc_get_key_id_cred_x(), and edhoc_read_byte_identifier().
| size_t cbor_get_remaining | ( | cbor_reader_state_t * | state | ) |
Gets the remaining bytes in the CBOR buffer.
| state | State of the CBOR reader. |
Definition at line 475 of file cbor.c.
Referenced by edhoc_authenticate_msg(), edhoc_deserialize_err(), and edhoc_deserialize_msg_1().
| void cbor_init_reader | ( | cbor_reader_state_t * | state, |
| const uint8_t * | cbor, | ||
| size_t | cbor_size ) |
Prepares for reading CBOR input.
| state | State of the CBOR reader. |
| cbor | Buffer that holds the CBOR input. |
| cbor_size | Size of cbor in bytes. |
Definition at line 293 of file cbor.c.
Referenced by edhoc_authenticate_msg(), edhoc_deserialize_err(), edhoc_deserialize_msg_1(), edhoc_deserialize_msg_2(), edhoc_deserialize_msg_3(), and edhoc_handler_msg_2().
| void cbor_init_writer | ( | cbor_writer_state_t * | state, |
| uint8_t * | buffer, | ||
| size_t | buffer_size ) |
Prepares for writing CBOR output.
| state | State of the CBOR writer. |
| buffer | Buffer for holding CBOR output. |
| buffer_size | Size of buffer in bytes. |
Definition at line 44 of file cbor.c.
References CBOR_MAX_NESTING.
Referenced by edhoc_authenticate_msg(), edhoc_calc_mac(), edhoc_generate_cred_x(), edhoc_generate_id_cred_x(), edhoc_generate_message_2(), edhoc_generate_message_3(), edhoc_generate_transcript_hash_2(), edhoc_generate_transcript_hash_3(), edhoc_generate_transcript_hash_4(), edhoc_serialize_err(), and edhoc_serialize_msg_1().
| void cbor_open_array | ( | cbor_writer_state_t * | state | ) |
| void cbor_open_data | ( | cbor_writer_state_t * | state | ) |
Encloses subsequent CBOR objects in a byte string.
| state | State of the CBOR writer. |
Definition at line 243 of file cbor.c.
Referenced by edhoc_generate_message_2().
| void cbor_open_map | ( | cbor_writer_state_t * | state | ) |
Adds subsequent entries to a map.
| state | State of the CBOR writer. |
Definition at line 276 of file cbor.c.
Referenced by edhoc_generate_cred_x(), and edhoc_generate_id_cred_x().
| cbor_major_type_t cbor_peek_next | ( | cbor_reader_state_t * | state | ) |
Inspects the next major type.
| state | State of the CBOR reader. |
CBOR_MAJOR_TYPE_NONE). Definition at line 301 of file cbor.c.
Referenced by cbor_read_array(), cbor_read_data(), cbor_read_map(), cbor_read_signed(), cbor_read_text(), cbor_read_unsigned(), cbor_skip_next(), and edhoc_read_byte_identifier().
| size_t cbor_read_array | ( | cbor_reader_state_t * | state | ) |
Reads the number of elements of an array.
| state | State of the CBOR reader. |
SIZE_MAX on error. Definition at line 451 of file cbor.c.
References cbor_peek_next().
| const uint8_t * cbor_read_data | ( | cbor_reader_state_t * | state, |
| size_t * | data_size ) |
Reads a byte string.
| state | State of the CBOR reader. |
| data_size | Size of the byte string in bytes. |
NULL on error. Definition at line 411 of file cbor.c.
References cbor_peek_next().
Referenced by edhoc_deserialize_msg_1(), edhoc_deserialize_msg_2(), edhoc_deserialize_msg_3(), edhoc_get_ad(), edhoc_get_sign(), and edhoc_read_byte_identifier().
| size_t cbor_read_map | ( | cbor_reader_state_t * | state | ) |
Reads the number of entries of a map.
| state | State of the CBOR reader. |
SIZE_MAX on error. Definition at line 460 of file cbor.c.
References cbor_peek_next().
| cbor_size_t cbor_read_signed | ( | cbor_reader_state_t * | state, |
| int64_t * | value ) |
Reads a signed integer.
| state | State of the CBOR reader. |
| value | Buffer to store the signed integer. |
CBOR_SIZE_NONE on error. Definition at line 373 of file cbor.c.
References cbor_peek_next(), CBOR_SIZE_NONE, and value().
Referenced by edhoc_deserialize_err(), edhoc_deserialize_msg_1(), and edhoc_read_byte_identifier().
| cbor_simple_value_t cbor_read_simple | ( | cbor_reader_state_t * | state | ) |
Reads a simple value.
| state | State of the CBOR reader. |
CBOR_SIMPLE_VALUE_NONE on error. Definition at line 429 of file cbor.c.
Referenced by edhoc_deserialize_err().
| const char * cbor_read_text | ( | cbor_reader_state_t * | state, |
| size_t * | text_size ) |
Reads a text string.
| state | State of the CBOR reader. |
| text_size | Number of characters in the text string. |
NULL on error. Definition at line 420 of file cbor.c.
References cbor_peek_next().
Referenced by edhoc_deserialize_err().
| cbor_size_t cbor_read_unsigned | ( | cbor_reader_state_t * | state, |
| uint64_t * | value ) |
Reads an unsigned integer.
| state | State of the CBOR reader. |
| value | Buffer to store the unsigned integer. |
CBOR_SIZE_NONE on error. Definition at line 364 of file cbor.c.
References cbor_peek_next(), CBOR_SIZE_NONE, and value().
Referenced by edhoc_deserialize_msg_1().
| bool cbor_skip_next | ( | cbor_reader_state_t * | state | ) |
Skips the next CBOR object in the buffer.
This function advances the reader state past the next complete CBOR object, regardless of its type. It can handle all CBOR major types including:
| state | State of the CBOR reader. |
true if an object was successfully skipped, or false on error. Definition at line 481 of file cbor.c.
References cbor_peek_next(), CBOR_SIZE_NONE, and value().
Referenced by edhoc_deserialize_err().
| void cbor_write_bool | ( | cbor_writer_state_t * | state, |
| bool | boolean ) |
Appends a boolean simple value.
| state | State of the CBOR writer. |
| boolean | The boolean simple value to append. |
Definition at line 217 of file cbor.c.
Referenced by edhoc_serialize_err().
| void cbor_write_data | ( | cbor_writer_state_t * | state, |
| const uint8_t * | data, | ||
| size_t | data_size ) |
Appends a byte string.
| state | State of the CBOR writer. |
| data | The byte string. |
| data_size | Size of data in bytes. |
Definition at line 187 of file cbor.c.
Referenced by edhoc_authenticate_msg(), edhoc_calc_mac(), edhoc_generate_cred_x(), edhoc_generate_id_cred_x(), edhoc_generate_message_2(), edhoc_generate_message_3(), edhoc_generate_transcript_hash_2(), edhoc_generate_transcript_hash_3(), edhoc_generate_transcript_hash_4(), edhoc_serialize_msg_1(), and edhoc_write_byte_identifier().
| void cbor_write_null | ( | cbor_writer_state_t * | state | ) |
| void cbor_write_object | ( | cbor_writer_state_t * | state, |
| const void * | object, | ||
| size_t | object_size ) |
Appends an arbitrary CBOR object.
| state | State of the CBOR writer. |
| object | Location of the CBOR object. |
| object_size | Size of object in bytes. |
Definition at line 106 of file cbor.c.
Referenced by edhoc_authenticate_msg(), edhoc_calc_mac(), edhoc_generate_message_2(), edhoc_generate_message_3(), edhoc_generate_transcript_hash_3(), edhoc_generate_transcript_hash_4(), and edhoc_write_byte_identifier().
| void cbor_write_signed | ( | cbor_writer_state_t * | state, |
| int64_t | value ) |
Appends a signed integer.
| state | State of the CBOR writer. |
| value | Signed integer. |
Definition at line 176 of file cbor.c.
References cbor_write_unsigned(), and value().
Referenced by edhoc_generate_cred_x().
| void cbor_write_text | ( | cbor_writer_state_t * | state, |
| const char * | text, | ||
| size_t | text_size ) |
Appends a text string.
| state | State of the CBOR writer. |
| text | The text string. |
| text_size | Number of characters in text. |
Definition at line 196 of file cbor.c.
Referenced by edhoc_generate_cred_x(), and edhoc_serialize_err().
| void cbor_write_undefined | ( | cbor_writer_state_t * | state | ) |
| void cbor_write_unsigned | ( | cbor_writer_state_t * | state, |
| uint64_t | value ) |
Appends an unsigned integer.
| state | State of the CBOR writer. |
| value | Unsigned integer. |
Definition at line 169 of file cbor.c.
References value().
Referenced by cbor_write_signed(), edhoc_generate_cred_x(), edhoc_generate_id_cred_x(), edhoc_serialize_err(), and edhoc_serialize_msg_1().