Lines Matching +full:- +full:p
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
34 * MBEDTLS_ASN1_UTF8_STRING for UTF-8. */
37 #define ADD_STRLEN(s) s, sizeof(s) - 1
105 for (cur = x509_attrs; cur->name != NULL; cur++) { in x509_attr_descr_from_name()
106 if (cur->name_len == name_len && in x509_attr_descr_from_name()
107 strncmp(cur->name, name, name_len) == 0) { in x509_attr_descr_from_name()
112 if (cur->name == NULL) { in x509_attr_descr_from_name()
121 return ('0' <= c && c <= '9') ? (c - '0') : in hex_to_int()
122 ('a' <= c && c <= 'f') ? (c - 'a' + 10) : in hex_to_int()
123 ('A' <= c && c <= 'F') ? (c - 'A' + 10) : -1; in hex_to_int()
131 if (n1 != -1 && n2 != -1) { in hexpair_to_int()
134 return -1; in hexpair_to_int()
153 if (c + 1 < end && (n = hexpair_to_int(c)) != -1) { in parse_attribute_value_string()
168 if (d - data == MBEDTLS_X509_MAX_DN_NAME_SIZE) { in parse_attribute_value_string()
172 *data_len = (size_t) (d - data); in parse_attribute_value_string()
176 /** Parse a hexstring containing a DER-encoded string.
178 * \param s A string of \p len bytes hexadecimal digits.
179 * \param len Number of bytes to read from \p s.
180 * \param data Output buffer of size \p data_size.
181 * On success, it contains the payload that's DER-encoded
185 * \param data_size Length of the \p data buffer.
189 * \param tag The ASN.1 tag that the payload in \p data is encoded in.
192 * \retval #MBEDTLS_ERR_X509_INVALID_NAME if \p s does not contain
195 * or if the payload does not fit in \p data,
198 * of if \p *tag is an ASN.1 string tag and the payload
223 /* Avoid empty-buffer shenanigans. A valid DER encoding is never in parse_attribute_value_hex_der_encoded()
246 unsigned char *p = der + 1; in parse_attribute_value_hex_der_encoded() local
247 if (mbedtls_asn1_get_len(&p, der + der_length, data_len) != 0) { in parse_attribute_value_hex_der_encoded()
250 /* Now p points to the first byte of the payload inside der, in parse_attribute_value_hex_der_encoded()
260 if (p[i] == 0) { in parse_attribute_value_hex_der_encoded()
270 memcpy(data, p, *data_len); in parse_attribute_value_hex_der_encoded()
287 mbedtls_asn1_buf oid = { .p = NULL, .len = 0, .tag = MBEDTLS_ASN1_NULL }; in mbedtls_x509_string_to_names()
304 if ((attr_descr = x509_attr_descr_from_name(s, (size_t) (c - s))) == NULL) { in mbedtls_x509_string_to_names()
305 if ((mbedtls_oid_from_numeric_string(&oid, s, (size_t) (c - s))) != 0) { in mbedtls_x509_string_to_names()
311 oid.len = strlen(attr_descr->oid); in mbedtls_x509_string_to_names()
312 oid.p = mbedtls_calloc(1, oid.len); in mbedtls_x509_string_to_names()
313 memcpy(oid.p, attr_descr->oid, oid.len); in mbedtls_x509_string_to_names()
321 if (!in_attr_type && ((*c == ',' && *(c-1) != '\\') || c == end)) { in mbedtls_x509_string_to_names()
323 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
327 * else branch), hence c - s - 1 >= 0. */ in mbedtls_x509_string_to_names()
329 s + 1, (size_t) (c - s) - 1, in mbedtls_x509_string_to_names()
332 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
337 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
341 parse_attribute_value_string(s, (int) (c - s), data, in mbedtls_x509_string_to_names()
343 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
346 tag = attr_descr->default_tag; in mbedtls_x509_string_to_names()
351 mbedtls_asn1_store_named_data(head, (char *) oid.p, oid.len, in mbedtls_x509_string_to_names()
354 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
355 oid.p = NULL; in mbedtls_x509_string_to_names()
361 cur->val.tag = tag; in mbedtls_x509_string_to_names()
375 if (oid.p != NULL) { in mbedtls_x509_string_to_names()
376 mbedtls_free(oid.p); in mbedtls_x509_string_to_names()
389 if (val_len > (SIZE_MAX - 1)) { in mbedtls_x509_set_extension()
398 cur->val.p[0] = critical; in mbedtls_x509_set_extension()
399 memcpy(cur->val.p + 1, val, val_len); in mbedtls_x509_set_extension()
416 static int x509_write_name(unsigned char **p, in x509_write_name() argument
422 const char *oid = (const char *) cur_name->oid.p; in x509_write_name()
423 size_t oid_len = cur_name->oid.len; in x509_write_name()
424 const unsigned char *name = cur_name->val.p; in x509_write_name()
425 size_t name_len = cur_name->val.len; in x509_write_name()
428 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tagged_string(p, start, in x509_write_name()
429 cur_name->val.tag, in x509_write_name()
434 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_oid(p, start, oid, in x509_write_name()
437 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len)); in x509_write_name()
438 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, in x509_write_name()
442 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len)); in x509_write_name()
443 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, in x509_write_name()
450 int mbedtls_x509_write_names(unsigned char **p, unsigned char *start, in mbedtls_x509_write_names() argument
458 MBEDTLS_ASN1_CHK_ADD(len, x509_write_name(p, start, cur)); in mbedtls_x509_write_names()
459 cur = cur->next; in mbedtls_x509_write_names()
462 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len)); in mbedtls_x509_write_names()
463 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_CONSTRUCTED | in mbedtls_x509_write_names()
469 int mbedtls_x509_write_sig(unsigned char **p, unsigned char *start, in mbedtls_x509_write_sig() argument
478 if (*p < start || (size_t) (*p - start) < size) { in mbedtls_x509_write_sig()
483 (*p) -= len; in mbedtls_x509_write_sig()
484 memcpy(*p, sig, len); in mbedtls_x509_write_sig()
486 if (*p - start < 1) { in mbedtls_x509_write_sig()
490 *--(*p) = 0; in mbedtls_x509_write_sig()
493 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len)); in mbedtls_x509_write_sig()
494 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_BIT_STRING)); in mbedtls_x509_write_sig()
501 * algorithms, see https://www.rfc-editor.org/rfc/rfc5480#page-17 and in mbedtls_x509_write_sig()
502 * https://www.rfc-editor.org/rfc/rfc5758#section-3. in mbedtls_x509_write_sig()
509 mbedtls_asn1_write_algorithm_identifier_ext(p, start, oid, oid_len, in mbedtls_x509_write_sig()
515 static int x509_write_extension(unsigned char **p, unsigned char *start, in x509_write_extension() argument
521 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start, ext->val.p + 1, in x509_write_extension()
522 ext->val.len - 1)); in x509_write_extension()
523 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, ext->val.len - 1)); in x509_write_extension()
524 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_OCTET_STRING)); in x509_write_extension()
526 if (ext->val.p[0] != 0) { in x509_write_extension()
527 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_bool(p, start, 1)); in x509_write_extension()
530 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start, ext->oid.p, in x509_write_extension()
531 ext->oid.len)); in x509_write_extension()
532 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, ext->oid.len)); in x509_write_extension()
533 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_OID)); in x509_write_extension()
535 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len)); in x509_write_extension()
536 MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_CONSTRUCTED | in x509_write_extension()
547 * -- contains the DER encoding of an ASN.1 value
548 * -- corresponding to the extension type identified
549 * -- by extnID
552 int mbedtls_x509_write_extensions(unsigned char **p, unsigned char *start, in mbedtls_x509_write_extensions() argument
560 MBEDTLS_ASN1_CHK_ADD(len, x509_write_extension(p, start, cur_ext)); in mbedtls_x509_write_extensions()
561 cur_ext = cur_ext->next; in mbedtls_x509_write_extensions()