Lines Matching +full:- +full:p
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
8 * The ITU-T X.509 standard defines a certificate format for PKI.
14 * http://www.itu.int/ITU-T/studygroups/com17/languages/X.680-0207.pdf
15 * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf
43 static int x509_csr_get_version(unsigned char **p, in x509_csr_get_version() argument
49 if ((ret = mbedtls_asn1_get_int(p, end, ver)) != 0) { in x509_csr_get_version()
65 unsigned char **p, const unsigned char *end, in x509_csr_parse_extensions() argument
73 while (*p < end) { in x509_csr_parse_extensions()
79 if ((ret = mbedtls_asn1_get_tag(p, end, &len, in x509_csr_parse_extensions()
84 end_ext_data = *p + len; in x509_csr_parse_extensions()
87 if ((ret = mbedtls_asn1_get_tag(p, end_ext_data, &extn_oid.len, in x509_csr_parse_extensions()
93 extn_oid.p = *p; in x509_csr_parse_extensions()
94 *p += extn_oid.len; in x509_csr_parse_extensions()
97 if ((ret = mbedtls_asn1_get_bool(p, end_ext_data, &is_critical)) != 0 && in x509_csr_parse_extensions()
103 if ((ret = mbedtls_asn1_get_tag(p, end_ext_data, &len, in x509_csr_parse_extensions()
108 end_ext_octet = *p + len; in x509_csr_parse_extensions()
123 ret = cb(p_ctx, csr, &extn_oid, is_critical, *p, end_ext_octet); in x509_csr_parse_extensions()
127 *p = end_ext_octet; in x509_csr_parse_extensions()
132 *p = end_ext_octet; in x509_csr_parse_extensions()
143 if ((csr->ext_types & ext_type) != 0) { in x509_csr_parse_extensions()
148 csr->ext_types |= ext_type; in x509_csr_parse_extensions()
153 if ((ret = mbedtls_x509_get_key_usage(p, end_ext_data, in x509_csr_parse_extensions()
154 &csr->key_usage)) != 0) { in x509_csr_parse_extensions()
161 if ((ret = mbedtls_x509_get_subject_alt_name(p, end_ext_data, in x509_csr_parse_extensions()
162 &csr->subject_alt_names)) != 0) { in x509_csr_parse_extensions()
169 if ((ret = mbedtls_x509_get_ns_cert_type(p, end_ext_data, in x509_csr_parse_extensions()
170 &csr->ns_cert_type)) != 0) { in x509_csr_parse_extensions()
176 * If this is a non-critical extension, which the oid layer in x509_csr_parse_extensions()
183 *p = end_ext_octet; in x509_csr_parse_extensions()
188 if (*p != end) { in x509_csr_parse_extensions()
207 unsigned char **p = (unsigned char **) &start; in x509_csr_parse_attributes() local
209 while (*p < end) { in x509_csr_parse_attributes()
212 if ((ret = mbedtls_asn1_get_tag(p, end, &len, in x509_csr_parse_attributes()
216 end_attr_data = *p + len; in x509_csr_parse_attributes()
219 if ((ret = mbedtls_asn1_get_tag(p, end_attr_data, &attr_oid.len, in x509_csr_parse_attributes()
225 attr_oid.p = *p; in x509_csr_parse_attributes()
226 *p += attr_oid.len; in x509_csr_parse_attributes()
228 /* Check that this is an extension-request attribute */ in x509_csr_parse_attributes()
230 if ((ret = mbedtls_asn1_get_tag(p, end, &len, in x509_csr_parse_attributes()
235 if ((ret = mbedtls_asn1_get_tag(p, end, &len, in x509_csr_parse_attributes()
241 if ((ret = x509_csr_parse_extensions(csr, p, *p + len, cb, p_ctx)) != 0) { in x509_csr_parse_attributes()
245 if (*p != end_attr_data) { in x509_csr_parse_attributes()
251 *p = end_attr_data; in x509_csr_parse_attributes()
254 if (*p != end) { in x509_csr_parse_attributes()
272 unsigned char *p, *end; in mbedtls_x509_csr_parse_der_internal() local
289 p = mbedtls_calloc(1, len = buflen); in mbedtls_x509_csr_parse_der_internal()
291 if (p == NULL) { in mbedtls_x509_csr_parse_der_internal()
295 memcpy(p, buf, buflen); in mbedtls_x509_csr_parse_der_internal()
297 csr->raw.p = p; in mbedtls_x509_csr_parse_der_internal()
298 csr->raw.len = len; in mbedtls_x509_csr_parse_der_internal()
299 end = p + len; in mbedtls_x509_csr_parse_der_internal()
308 if ((ret = mbedtls_asn1_get_tag(&p, end, &len, in mbedtls_x509_csr_parse_der_internal()
314 if (len != (size_t) (end - p)) { in mbedtls_x509_csr_parse_der_internal()
323 csr->cri.p = p; in mbedtls_x509_csr_parse_der_internal()
325 if ((ret = mbedtls_asn1_get_tag(&p, end, &len, in mbedtls_x509_csr_parse_der_internal()
331 end = p + len; in mbedtls_x509_csr_parse_der_internal()
332 csr->cri.len = (size_t) (end - csr->cri.p); in mbedtls_x509_csr_parse_der_internal()
337 if ((ret = x509_csr_get_version(&p, end, &csr->version)) != 0) { in mbedtls_x509_csr_parse_der_internal()
342 if (csr->version != 0) { in mbedtls_x509_csr_parse_der_internal()
347 csr->version++; in mbedtls_x509_csr_parse_der_internal()
352 csr->subject_raw.p = p; in mbedtls_x509_csr_parse_der_internal()
354 if ((ret = mbedtls_asn1_get_tag(&p, end, &len, in mbedtls_x509_csr_parse_der_internal()
360 if ((ret = mbedtls_x509_get_name(&p, p + len, &csr->subject)) != 0) { in mbedtls_x509_csr_parse_der_internal()
365 csr->subject_raw.len = (size_t) (p - csr->subject_raw.p); in mbedtls_x509_csr_parse_der_internal()
370 if ((ret = mbedtls_pk_parse_subpubkey(&p, end, &csr->pk)) != 0) { in mbedtls_x509_csr_parse_der_internal()
378 * The list of possible attributes is open-ended, though RFC 2985 in mbedtls_x509_csr_parse_der_internal()
382 * the requester's expectations - this cannot cause a violation of our in mbedtls_x509_csr_parse_der_internal()
385 if ((ret = mbedtls_asn1_get_tag(&p, end, &len, in mbedtls_x509_csr_parse_der_internal()
392 if ((ret = x509_csr_parse_attributes(csr, p, p + len, cb, p_ctx)) != 0) { in mbedtls_x509_csr_parse_der_internal()
397 p += len; in mbedtls_x509_csr_parse_der_internal()
399 end = csr->raw.p + csr->raw.len; in mbedtls_x509_csr_parse_der_internal()
405 if ((ret = mbedtls_x509_get_alg(&p, end, &csr->sig_oid, &sig_params)) != 0) { in mbedtls_x509_csr_parse_der_internal()
410 if ((ret = mbedtls_x509_get_sig_alg(&csr->sig_oid, &sig_params, in mbedtls_x509_csr_parse_der_internal()
411 &csr->sig_md, &csr->sig_pk, in mbedtls_x509_csr_parse_der_internal()
412 &csr->sig_opts)) != 0) { in mbedtls_x509_csr_parse_der_internal()
417 if ((ret = mbedtls_x509_get_sig(&p, end, &csr->sig)) != 0) { in mbedtls_x509_csr_parse_der_internal()
422 if (p != end) { in mbedtls_x509_csr_parse_der_internal()
470 /* Avoid calling mbedtls_pem_read_buffer() on non-null-terminated string */ in mbedtls_x509_csr_parse()
471 if (buf[buflen - 1] == '\0') { in mbedtls_x509_csr_parse()
474 "-----BEGIN CERTIFICATE REQUEST-----", in mbedtls_x509_csr_parse()
475 "-----END CERTIFICATE REQUEST-----", in mbedtls_x509_csr_parse()
479 "-----BEGIN NEW CERTIFICATE REQUEST-----", in mbedtls_x509_csr_parse()
480 "-----END NEW CERTIFICATE REQUEST-----", in mbedtls_x509_csr_parse()
533 char *p; in mbedtls_x509_csr_info() local
536 p = buf; in mbedtls_x509_csr_info()
539 ret = mbedtls_snprintf(p, n, "%sCSR version : %d", in mbedtls_x509_csr_info()
540 prefix, csr->version); in mbedtls_x509_csr_info()
543 ret = mbedtls_snprintf(p, n, "\n%ssubject name : ", prefix); in mbedtls_x509_csr_info()
545 ret = mbedtls_x509_dn_gets(p, n, &csr->subject); in mbedtls_x509_csr_info()
548 ret = mbedtls_snprintf(p, n, "\n%ssigned using : ", prefix); in mbedtls_x509_csr_info()
551 ret = mbedtls_x509_sig_alg_gets(p, n, &csr->sig_oid, csr->sig_pk, csr->sig_md, in mbedtls_x509_csr_info()
552 csr->sig_opts); in mbedtls_x509_csr_info()
556 mbedtls_pk_get_name(&csr->pk))) != 0) { in mbedtls_x509_csr_info()
560 ret = mbedtls_snprintf(p, n, "\n%s%-" BC "s: %d bits\n", prefix, key_size_str, in mbedtls_x509_csr_info()
561 (int) mbedtls_pk_get_bitlen(&csr->pk)); in mbedtls_x509_csr_info()
568 if (csr->ext_types & MBEDTLS_X509_EXT_SUBJECT_ALT_NAME) { in mbedtls_x509_csr_info()
569 ret = mbedtls_snprintf(p, n, "\n%ssubject alt name :", prefix); in mbedtls_x509_csr_info()
572 if ((ret = mbedtls_x509_info_subject_alt_name(&p, &n, in mbedtls_x509_csr_info()
573 &csr->subject_alt_names, in mbedtls_x509_csr_info()
579 if (csr->ext_types & MBEDTLS_X509_EXT_NS_CERT_TYPE) { in mbedtls_x509_csr_info()
580 ret = mbedtls_snprintf(p, n, "\n%scert. type : ", prefix); in mbedtls_x509_csr_info()
583 if ((ret = mbedtls_x509_info_cert_type(&p, &n, csr->ns_cert_type)) != 0) { in mbedtls_x509_csr_info()
588 if (csr->ext_types & MBEDTLS_X509_EXT_KEY_USAGE) { in mbedtls_x509_csr_info()
589 ret = mbedtls_snprintf(p, n, "\n%skey usage : ", prefix); in mbedtls_x509_csr_info()
592 if ((ret = mbedtls_x509_info_key_usage(&p, &n, csr->key_usage)) != 0) { in mbedtls_x509_csr_info()
597 if (csr->ext_types != 0) { in mbedtls_x509_csr_info()
598 ret = mbedtls_snprintf(p, n, "\n"); in mbedtls_x509_csr_info()
602 return (int) (size - n); in mbedtls_x509_csr_info()
623 mbedtls_pk_free(&csr->pk); in mbedtls_x509_csr_free()
626 mbedtls_free(csr->sig_opts); in mbedtls_x509_csr_free()
629 mbedtls_asn1_free_named_data_list_shallow(csr->subject.next); in mbedtls_x509_csr_free()
630 mbedtls_asn1_sequence_free(csr->subject_alt_names.next); in mbedtls_x509_csr_free()
632 if (csr->raw.p != NULL) { in mbedtls_x509_csr_free()
633 mbedtls_zeroize_and_free(csr->raw.p, csr->raw.len); in mbedtls_x509_csr_free()