Lines Matching refs:cbb

27 cbb_init(CBB *cbb, uint8_t *buf, size_t cap)  in cbb_init()  argument
39 cbb->base = base; in cbb_init()
40 cbb->is_top_level = 1; in cbb_init()
46 CBB_init(CBB *cbb, size_t initial_capacity) in CBB_init() argument
50 memset(cbb, 0, sizeof(*cbb)); in CBB_init()
58 if (!cbb_init(cbb, buf, initial_capacity)) { in CBB_init()
67 CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) in CBB_init_fixed() argument
69 memset(cbb, 0, sizeof(*cbb)); in CBB_init_fixed()
71 if (!cbb_init(cbb, buf, len)) in CBB_init_fixed()
74 cbb->base->can_resize = 0; in CBB_init_fixed()
80 CBB_cleanup(CBB *cbb) in CBB_cleanup() argument
82 if (cbb->base) { in CBB_cleanup()
83 if (cbb->base->can_resize) in CBB_cleanup()
84 freezero(cbb->base->buf, cbb->base->cap); in CBB_cleanup()
85 free(cbb->base); in CBB_cleanup()
87 cbb->base = NULL; in CBB_cleanup()
88 cbb->child = NULL; in CBB_cleanup()
130 cbb_add_u(CBB *cbb, uint32_t v, size_t len_len) in cbb_add_u() argument
141 if (!CBB_flush(cbb) || !cbb_buffer_add(cbb->base, &buf, len_len)) in cbb_add_u()
152 CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len) in CBB_finish() argument
154 if (!cbb->is_top_level) in CBB_finish()
157 if (!CBB_flush(cbb)) in CBB_finish()
160 if (cbb->base->can_resize && (out_data == NULL || out_len == NULL)) in CBB_finish()
171 *out_data = cbb->base->buf; in CBB_finish()
174 *out_len = cbb->base->len; in CBB_finish()
176 cbb->base->buf = NULL; in CBB_finish()
177 CBB_cleanup(cbb); in CBB_finish()
187 CBB_flush(CBB *cbb) in CBB_flush() argument
191 if (cbb->base == NULL) in CBB_flush()
194 if (cbb->child == NULL || cbb->pending_len_len == 0) in CBB_flush()
197 child_start = cbb->offset + cbb->pending_len_len; in CBB_flush()
199 if (!CBB_flush(cbb->child) || child_start < cbb->offset || in CBB_flush()
200 cbb->base->len < child_start) in CBB_flush()
203 len = cbb->base->len - child_start; in CBB_flush()
205 if (cbb->pending_is_asn1) { in CBB_flush()
218 if (cbb->pending_len_len != 1) in CBB_flush()
250 if (!cbb_buffer_add(cbb->base, NULL, extra_bytes)) in CBB_flush()
253 memmove(cbb->base->buf + child_start + extra_bytes, in CBB_flush()
254 cbb->base->buf + child_start, len); in CBB_flush()
256 cbb->base->buf[cbb->offset++] = initial_length_byte; in CBB_flush()
257 cbb->pending_len_len = len_len - 1; in CBB_flush()
260 for (i = cbb->pending_len_len - 1; i < cbb->pending_len_len; i--) { in CBB_flush()
261 cbb->base->buf[cbb->offset + i] = len; in CBB_flush()
267 cbb->child->base = NULL; in CBB_flush()
268 cbb->child = NULL; in CBB_flush()
269 cbb->pending_len_len = 0; in CBB_flush()
270 cbb->pending_is_asn1 = 0; in CBB_flush()
271 cbb->offset = 0; in CBB_flush()
277 CBB_discard_child(CBB *cbb) in CBB_discard_child() argument
279 if (cbb->child == NULL) in CBB_discard_child()
282 cbb->base->len = cbb->offset; in CBB_discard_child()
284 cbb->child->base = NULL; in CBB_discard_child()
285 cbb->child = NULL; in CBB_discard_child()
286 cbb->pending_len_len = 0; in CBB_discard_child()
287 cbb->pending_is_asn1 = 0; in CBB_discard_child()
288 cbb->offset = 0; in CBB_discard_child()
292 cbb_add_length_prefixed(CBB *cbb, CBB *out_contents, size_t len_len) in cbb_add_length_prefixed() argument
296 if (!CBB_flush(cbb)) in cbb_add_length_prefixed()
299 cbb->offset = cbb->base->len; in cbb_add_length_prefixed()
300 if (!cbb_buffer_add(cbb->base, &prefix_bytes, len_len)) in cbb_add_length_prefixed()
305 out_contents->base = cbb->base; in cbb_add_length_prefixed()
306 cbb->child = out_contents; in cbb_add_length_prefixed()
307 cbb->pending_len_len = len_len; in cbb_add_length_prefixed()
308 cbb->pending_is_asn1 = 0; in cbb_add_length_prefixed()
314 CBB_add_u8_length_prefixed(CBB *cbb, CBB *out_contents) in CBB_add_u8_length_prefixed() argument
316 return cbb_add_length_prefixed(cbb, out_contents, 1); in CBB_add_u8_length_prefixed()
320 CBB_add_u16_length_prefixed(CBB *cbb, CBB *out_contents) in CBB_add_u16_length_prefixed() argument
322 return cbb_add_length_prefixed(cbb, out_contents, 2); in CBB_add_u16_length_prefixed()
326 CBB_add_u24_length_prefixed(CBB *cbb, CBB *out_contents) in CBB_add_u24_length_prefixed() argument
328 return cbb_add_length_prefixed(cbb, out_contents, 3); in CBB_add_u24_length_prefixed()
332 CBB_add_u32_length_prefixed(CBB *cbb, CBB *out_contents) in CBB_add_u32_length_prefixed() argument
334 return cbb_add_length_prefixed(cbb, out_contents, 4); in CBB_add_u32_length_prefixed()
338 CBB_add_asn1(CBB *cbb, CBB *out_contents, unsigned int tag) in CBB_add_asn1() argument
348 if (!CBB_flush(cbb) || !CBB_add_u8(cbb, tag)) in CBB_add_asn1()
355 cbb->offset = cbb->base->len; in CBB_add_asn1()
356 if (!CBB_add_u8(cbb, 0)) in CBB_add_asn1()
360 out_contents->base = cbb->base; in CBB_add_asn1()
361 cbb->child = out_contents; in CBB_add_asn1()
362 cbb->pending_len_len = 1; in CBB_add_asn1()
363 cbb->pending_is_asn1 = 1; in CBB_add_asn1()
369 CBB_add_bytes(CBB *cbb, const uint8_t *data, size_t len) in CBB_add_bytes() argument
373 if (!CBB_flush(cbb) || !cbb_buffer_add(cbb->base, &dest, len)) in CBB_add_bytes()
381 CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len) in CBB_add_space() argument
383 if (!CBB_flush(cbb) || !cbb_buffer_add(cbb->base, out_data, len)) in CBB_add_space()
391 CBB_add_u8(CBB *cbb, size_t value) in CBB_add_u8() argument
396 return cbb_add_u(cbb, (uint32_t)value, 1); in CBB_add_u8()
400 CBB_add_u16(CBB *cbb, size_t value) in CBB_add_u16() argument
405 return cbb_add_u(cbb, (uint32_t)value, 2); in CBB_add_u16()
409 CBB_add_u24(CBB *cbb, size_t value) in CBB_add_u24() argument
414 return cbb_add_u(cbb, (uint32_t)value, 3); in CBB_add_u24()
418 CBB_add_u32(CBB *cbb, size_t value) in CBB_add_u32() argument
423 return cbb_add_u(cbb, (uint32_t)value, 4); in CBB_add_u32()
427 CBB_add_u64(CBB *cbb, uint64_t value) in CBB_add_u64() argument
434 if (!CBB_add_u32(cbb, a)) in CBB_add_u64()
436 return CBB_add_u32(cbb, b); in CBB_add_u64()
440 CBB_add_asn1_uint64(CBB *cbb, uint64_t value) in CBB_add_asn1_uint64() argument
446 if (!CBB_add_asn1(cbb, &child, CBS_ASN1_INTEGER)) in CBB_add_asn1_uint64()
489 return CBB_flush(cbb); in CBB_add_asn1_uint64()