Go to the documentation of this file.
23 #include "../internal.h"
54 if (initial_capacity > 0 &&
buf == NULL) {
103 if (newlen < base->
len) {
108 if (newlen >
base->cap) {
109 size_t newcap =
base->cap * 2;
112 if (!
base->can_resize) {
116 if (newcap < base->
cap || newcap < newlen) {
120 if (newbuf == NULL) {
160 for (
size_t i = len_len - 1;
i < len_len;
i--) {
182 if (cbb->
base->
can_resize && (out_data == NULL || out_len == NULL)) {
187 if (out_data != NULL) {
190 if (out_len != NULL) {
202 size_t child_start,
i,
len;
218 child_start < cbb->
child->offset ||
219 cbb->
base->
len < child_start) {
234 if (
len > 0xfffffffe) {
237 }
else if (
len > 0xffffff) {
239 initial_length_byte = 0x80 | 4;
240 }
else if (
len > 0xffff) {
242 initial_length_byte = 0x80 | 3;
243 }
else if (
len > 0xff) {
245 initial_length_byte = 0x80 | 2;
246 }
else if (
len > 0x7f) {
248 initial_length_byte = 0x80 | 1;
257 size_t extra_bytes = len_len - 1;
288 assert(cbb->
child == NULL);
293 assert(cbb->
child == NULL);
316 cbb->
child = out_contents;
340 unsigned len_len = 0;
349 for (
unsigned i = len_len - 1;
i < len_len;
i--) {
370 if (tag_number >= 0x1f) {
376 }
else if (!
CBB_add_u8(cbb, tag_bits | tag_number)) {
388 cbb->
child = out_contents;
434 if (cbb->
child != NULL ||
435 newlen < cbb->
base->len ||
495 if (cbb->
child == NULL) {
513 for (
size_t i = 0;
i < 8;
i++) {
606 if (u < '0' || u >
'9' ||
608 (seen_digit && *
out == 0) ||
659 const CBS *
a = a_ptr, *
b = b_ptr;
661 size_t min_len = a_len < b_len ? a_len : b_len;
666 if (a_len == b_len) {
671 return a_len < b_len ? -1 : 1;
680 size_t num_children = 0;
689 if (num_children < 2) {
692 if (num_children > ((
size_t)-1) /
sizeof(
CBS)) {
706 for (
size_t i = 0;
i < num_children;
i++) {
715 for (
size_t i = 0;
i < num_children;
i++) {
720 assert(
CBB_len(cbb) == buf_len);
int CBB_add_u8(CBB *cbb, uint8_t value)
int CBB_add_asn1_octet_string(CBB *cbb, const uint8_t *data, size_t data_len)
static int compare_set_of_element(const void *a_ptr, const void *b_ptr)
static int OPENSSL_memcmp(const void *s1, const void *s2, size_t n)
int CBB_add_asn1_oid_from_text(CBB *cbb, const char *text, size_t len)
static int cbb_init(CBB *cbb, uint8_t *buf, size_t cap)
static uint16_t CRYPTO_bswap2(uint16_t x)
static int cbb_buffer_reserve(struct cbb_buffer_st *base, uint8_t **out, size_t len)
const uint8_t * CBB_data(const CBB *cbb)
static int copy(grpc_slice_buffer *input, grpc_slice_buffer *output)
#define CBS_ASN1_OCTETSTRING
int CBB_add_bytes(CBB *cbb, const uint8_t *data, size_t len)
int CBB_add_u64le(CBB *cbb, uint64_t value)
static uint64_t CRYPTO_bswap8(uint64_t x)
int CBB_init(CBB *cbb, size_t initial_capacity)
int CBB_add_asn1(CBB *cbb, CBB *out_contents, unsigned tag)
OPENSSL_EXPORT pem_password_cb void * u
static int cbb_buffer_add(struct cbb_buffer_st *base, uint8_t **out, size_t len)
int CBB_add_u16le(CBB *cbb, uint16_t value)
int CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len)
static int cbb_buffer_add_u(struct cbb_buffer_st *base, uint64_t v, size_t len_len)
static void * OPENSSL_memset(void *dst, int c, size_t n)
#define CBS_ASN1_TAG_SHIFT
int CBB_add_u32le(CBB *cbb, uint32_t value)
int CBB_add_u16(CBB *cbb, uint16_t value)
int CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len)
#define CBS_get_any_asn1_element
static uint32_t CRYPTO_bswap4(uint32_t x)
static void * tag(intptr_t t)
int CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len)
unsigned __int64 uint64_t
static void * OPENSSL_memcpy(void *dst, const void *src, size_t n)
static int cbb_add_length_prefixed(CBB *cbb, CBB *out_contents, uint8_t len_len)
void qsort(void *a, size_t n, size_t es, int(*cmp)(const void *, const void *))
int CBB_add_u8_length_prefixed(CBB *cbb, CBB *out_contents)
int CBB_add_u64(CBB *cbb, uint64_t value)
struct cbb_buffer_st * base
int CBB_add_u16_length_prefixed(CBB *cbb, CBB *out_contents)
void CBB_discard_child(CBB *cbb)
size_t CBB_len(const CBB *cbb)
int CBB_did_write(CBB *cbb, size_t len)
UniquePtr< SSL_SESSION > ret
int CBB_add_u24(CBB *cbb, uint32_t value)
int CBB_add_asn1_uint64(CBB *cbb, uint64_t value)
static void * OPENSSL_memmove(void *dst, const void *src, size_t n)
int CBB_add_asn1_int64(CBB *cbb, int64_t value)
static int add_base128_integer(CBB *cbb, uint64_t v)
int CBB_add_u32(CBB *cbb, uint32_t value)
static int parse_dotted_decimal(CBS *cbs, uint64_t *out)
#define CBS_ASN1_TAG_NUMBER_MASK
int CBB_flush_asn1_set_of(CBB *cbb)
int CBB_add_zeros(CBB *cbb, size_t len)
void CBB_cleanup(CBB *cbb)
std::map< std::string, Node * > children
int CBB_add_u24_length_prefixed(CBB *cbb, CBB *out_contents)
int CBB_add_asn1_bool(CBB *cbb, int value)
int CBB_reserve(CBB *cbb, uint8_t **out_data, size_t len)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:43