Branch data Line data Source code
1 : : /*
2 : : * Copyright (c) 2022 Eriptic Technologies.
3 : : *
4 : : * SPDX-License-Identifier: Apache-2.0 or MIT
5 : : */
6 : :
7 : : #include "zcbor_common.h"
8 : : #include "cbor/edhoc_encode_bstr_type.h"
9 : : #include "cbor/edhoc_decode_bstr_type.h"
10 : :
11 : : #include "common/oscore_edhoc_error.h"
12 : : #include "common/print_util.h"
13 : : #include "common/memcpy_s.h"
14 : : #include "common/byte_array.h"
15 : :
16 : 57 : enum err encode_bstr(const struct byte_array *in, struct byte_array *out)
17 : : {
18 : : size_t payload_len_out;
19 : : struct zcbor_string tmp;
20 : 57 : tmp.value = in->ptr;
21 : 57 : tmp.len = in->len;
22 [ - + ]: 57 : TRY_EXPECT(cbor_encode_bstr_type_b_str(out->ptr, out->len, &tmp,
23 : : &payload_len_out),
24 : : 0);
25 : 57 : out->len = (uint32_t)payload_len_out;
26 : 57 : return ok;
27 : : }
28 : :
29 : 6 : enum err decode_bstr(const struct byte_array *in, struct byte_array *out)
30 : : {
31 : : struct zcbor_string str;
32 : 6 : size_t decode_len = 0;
33 : :
34 [ - + ]: 6 : TRY_EXPECT(cbor_decode_bstr_type_b_str(in->ptr, in->len, &str,
35 : : &decode_len),
36 : : 0);
37 : :
38 [ - + ]: 6 : TRY(_memcpy_s(out->ptr, out->len, str.value, (uint32_t)str.len));
39 : 6 : out->len = (uint32_t)str.len;
40 : :
41 : 6 : return ok;
42 : : }
|