mbed TLS v2.14.1

x509_crt.h
Go to the documentation of this file.
1
6 /*
7 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
8 * SPDX-License-Identifier: Apache-2.0
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); you may
11 * not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 *
22 * This file is part of mbed TLS (https://tls.mbed.org)
23 */
24 #ifndef MBEDTLS_X509_CRT_H
25 #define MBEDTLS_X509_CRT_H
26
27 #if !defined(MBEDTLS_CONFIG_FILE)
28 #include "config.h"
29 #else
30 #include MBEDTLS_CONFIG_FILE
31 #endif
32
33 #include "x509.h"
34 #include "x509_crl.h"
35
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
53 typedef struct mbedtls_x509_crt
54 {
55 mbedtls_x509_buf raw;
56 mbedtls_x509_buf tbs;
58 int version;
59 mbedtls_x509_buf serial;
60 mbedtls_x509_buf sig_oid;
62 mbedtls_x509_buf issuer_raw;
63 mbedtls_x509_buf subject_raw;
65 mbedtls_x509_name issuer;
66 mbedtls_x509_name subject;
68 mbedtls_x509_time valid_from;
69 mbedtls_x509_time valid_to;
71 mbedtls_pk_context pk;
73 mbedtls_x509_buf issuer_id;
74 mbedtls_x509_buf subject_id;
75 mbedtls_x509_buf v3_ext;
76 mbedtls_x509_sequence subject_alt_names;
78 int ext_types;
79 int ca_istrue;
80 int max_pathlen;
82 unsigned int key_usage;
84 mbedtls_x509_sequence ext_key_usage;
86 unsigned char ns_cert_type;
88 mbedtls_x509_buf sig;
89 mbedtls_md_type_t sig_md;
90 mbedtls_pk_type_t sig_pk;
91 void *sig_opts;
93 struct mbedtls_x509_crt *next;
94 }
95 mbedtls_x509_crt;
96
101 #define MBEDTLS_X509_ID_FLAG( id ) ( 1 << ( id - 1 ) )
102
108 typedef struct mbedtls_x509_crt_profile
109 {
110 uint32_t allowed_mds;
111 uint32_t allowed_pks;
112 uint32_t allowed_curves;
113 uint32_t rsa_min_bitlen;
114 }
115 mbedtls_x509_crt_profile;
116
117 #define MBEDTLS_X509_CRT_VERSION_1 0
118 #define MBEDTLS_X509_CRT_VERSION_2 1
119 #define MBEDTLS_X509_CRT_VERSION_3 2
120
121 #define MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN 32
122 #define MBEDTLS_X509_RFC5280_UTC_TIME_LEN 15
123
124 #if !defined( MBEDTLS_X509_MAX_FILE_PATH_LEN )
125 #define MBEDTLS_X509_MAX_FILE_PATH_LEN 512
126 #endif
127
131 typedef struct mbedtls_x509write_cert
132 {
133 int version;
134 mbedtls_mpi serial;
135 mbedtls_pk_context *subject_key;
136 mbedtls_pk_context *issuer_key;
137 mbedtls_asn1_named_data *subject;
138 mbedtls_asn1_named_data *issuer;
139 mbedtls_md_type_t md_alg;
140 char not_before[MBEDTLS_X509_RFC5280_UTC_TIME_LEN + 1];
141 char not_after[MBEDTLS_X509_RFC5280_UTC_TIME_LEN + 1];
142 mbedtls_asn1_named_data *extensions;
143 }
144 mbedtls_x509write_cert;
145
149 typedef struct {
150 mbedtls_x509_crt *crt;
151 uint32_t flags;
152 } mbedtls_x509_crt_verify_chain_item;
153
157 #define MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 )
158
162 typedef struct
163 {
164 mbedtls_x509_crt_verify_chain_item items[MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE];
165 unsigned len;
166 } mbedtls_x509_crt_verify_chain;
167
168 #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
169
173 typedef struct
174 {
175 /* for check_signature() */
176 mbedtls_pk_restart_ctx pk;
177
178 /* for find_parent_in() */
179 mbedtls_x509_crt *parent; /* non-null iff parent_in in progress */
180 mbedtls_x509_crt *fallback_parent;
181 int fallback_signature_is_good;
182
183 /* for find_parent() */
184 int parent_is_trusted; /* -1 if find_parent is not in progress */
185
186 /* for verify_chain() */
187 enum {
188 x509_crt_rs_none,
189 x509_crt_rs_find_parent,
190 } in_progress; /* none if no operation is in progress */
191 int self_cnt;
192 mbedtls_x509_crt_verify_chain ver_chain;
193
194 } mbedtls_x509_crt_restart_ctx;
195
196 #else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */
197
198 /* Now we can declare functions that take a pointer to that */
199 typedef void mbedtls_x509_crt_restart_ctx;
200
201 #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */
202
203 #if defined(MBEDTLS_X509_CRT_PARSE_C)
204
208 extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default;
209
214 extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next;
215
219 extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb;
220
231 int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *buf,
232 size_t buflen );
233
249 int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen );
250
251 #if defined(MBEDTLS_FS_IO)
252
265 int mbedtls_x509_crt_parse_file( mbedtls_x509_crt *chain, const char *path );
266
280 int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path );
281 #endif /* MBEDTLS_FS_IO */
282
295 int mbedtls_x509_crt_info( char *buf, size_t size, const char *prefix,
296 const mbedtls_x509_crt *crt );
297
310 int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix,
311 uint32_t flags );
312
371 int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt,
372 mbedtls_x509_crt *trust_ca,
373 mbedtls_x509_crl *ca_crl,
374 const char *cn, uint32_t *flags,
375 int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *),
376 void *p_vrfy );
377
405 int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt,
406 mbedtls_x509_crt *trust_ca,
407 mbedtls_x509_crl *ca_crl,
408 const mbedtls_x509_crt_profile *profile,
409 const char *cn, uint32_t *flags,
410 int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *),
411 void *p_vrfy );
412
435 int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt,
436 mbedtls_x509_crt *trust_ca,
437 mbedtls_x509_crl *ca_crl,
438 const mbedtls_x509_crt_profile *profile,
439 const char *cn, uint32_t *flags,
440 int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *),
441 void *p_vrfy,
442 mbedtls_x509_crt_restart_ctx *rs_ctx );
443
444 #if defined(MBEDTLS_X509_CHECK_KEY_USAGE)
445
466 int mbedtls_x509_crt_check_key_usage( const mbedtls_x509_crt *crt,
467 unsigned int usage );
468 #endif /* MBEDTLS_X509_CHECK_KEY_USAGE) */
469
470 #if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE)
471
484 int mbedtls_x509_crt_check_extended_key_usage( const mbedtls_x509_crt *crt,
485 const char *usage_oid,
486 size_t usage_len );
487 #endif /* MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */
488
489 #if defined(MBEDTLS_X509_CRL_PARSE_C)
490
499 int mbedtls_x509_crt_is_revoked( const mbedtls_x509_crt *crt, const mbedtls_x509_crl *crl );
500 #endif /* MBEDTLS_X509_CRL_PARSE_C */
501
507 void mbedtls_x509_crt_init( mbedtls_x509_crt *crt );
508
514 void mbedtls_x509_crt_free( mbedtls_x509_crt *crt );
515
516 #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
517
520 void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx );
521
525 void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx );
526 #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */
527 #endif /* MBEDTLS_X509_CRT_PARSE_C */
528
529 /* \} name */
530 /* \} addtogroup x509_module */
531
532 #if defined(MBEDTLS_X509_CRT_WRITE_C)
533
538 void mbedtls_x509write_crt_init( mbedtls_x509write_cert *ctx );
539
548 void mbedtls_x509write_crt_set_version( mbedtls_x509write_cert *ctx, int version );
549
558 int mbedtls_x509write_crt_set_serial( mbedtls_x509write_cert *ctx, const mbedtls_mpi *serial );
559
574 int mbedtls_x509write_crt_set_validity( mbedtls_x509write_cert *ctx, const char *not_before,
575 const char *not_after );
576
589 int mbedtls_x509write_crt_set_issuer_name( mbedtls_x509write_cert *ctx,
590 const char *issuer_name );
591
604 int mbedtls_x509write_crt_set_subject_name( mbedtls_x509write_cert *ctx,
605 const char *subject_name );
606
613 void mbedtls_x509write_crt_set_subject_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key );
614
621 void mbedtls_x509write_crt_set_issuer_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key );
622
630 void mbedtls_x509write_crt_set_md_alg( mbedtls_x509write_cert *ctx, mbedtls_md_type_t md_alg );
631
645 int mbedtls_x509write_crt_set_extension( mbedtls_x509write_cert *ctx,
646 const char *oid, size_t oid_len,
647 int critical,
648 const unsigned char *val, size_t val_len );
649
661 int mbedtls_x509write_crt_set_basic_constraints( mbedtls_x509write_cert *ctx,
662 int is_ca, int max_pathlen );
663
664 #if defined(MBEDTLS_SHA1_C)
665
674 int mbedtls_x509write_crt_set_subject_key_identifier( mbedtls_x509write_cert *ctx );
675
685 int mbedtls_x509write_crt_set_authority_key_identifier( mbedtls_x509write_cert *ctx );
686 #endif /* MBEDTLS_SHA1_C */
687
697 int mbedtls_x509write_crt_set_key_usage( mbedtls_x509write_cert *ctx,
698 unsigned int key_usage );
699
709 int mbedtls_x509write_crt_set_ns_cert_type( mbedtls_x509write_cert *ctx,
710 unsigned char ns_cert_type );
711
717 void mbedtls_x509write_crt_free( mbedtls_x509write_cert *ctx );
718
739 int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size,
740 int (*f_rng)(void *, unsigned char *, size_t),
741 void *p_rng );
742
743 #if defined(MBEDTLS_PEM_WRITE_C)
744
760 int mbedtls_x509write_crt_pem( mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size,
761 int (*f_rng)(void *, unsigned char *, size_t),
762 void *p_rng );
763 #endif /* MBEDTLS_PEM_WRITE_C */
764 #endif /* MBEDTLS_X509_CRT_WRITE_C */
765
766 #ifdef __cplusplus
767 }
768 #endif
769
770 #endif /* mbedtls_x509_crt.h */
mbedtls_x509write_crt_set_authority_key_identifier
int mbedtls_x509write_crt_set_authority_key_identifier(mbedtls_x509write_cert *ctx)
Set the authorityKeyIdentifier extension for a CRT Requires that mbedtls_x509write_crt_set_issuer_key...
mbedtls_x509_crt_verify
int mbedtls_x509_crt_verify(mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, const char *cn, uint32_t *flags, int(*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy)
Verify the certificate signature.
mbedtls_pk_context
Public key container.
Definition: pk.h:130
mbedtls_x509write_crt_der
int mbedtls_x509write_crt_der(mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Write a built up certificate to a X509 DER structure Note: data is written at the end of the buffer! ...
mbedtls_x509_crt_verify_with_profile
int mbedtls_x509_crt_verify_with_profile(mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, const mbedtls_x509_crt_profile *profile, const char *cn, uint32_t *flags, int(*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy)
Verify the certificate signature according to profile.
mbedtls_x509_crt::subject_alt_names
mbedtls_x509_sequence subject_alt_names
Definition: x509_crt.h:76
mbedtls_x509_crt::ext_types
int ext_types
Definition: x509_crt.h:78
mbedtls_x509_crt_verify_restartable
int mbedtls_x509_crt_verify_restartable(mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, const mbedtls_x509_crt_profile *profile, const char *cn, uint32_t *flags, int(*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy, mbedtls_x509_crt_restart_ctx *rs_ctx)
Restartable version of mbedtls_crt_verify_with_profile()
mbedtls_x509_crt_profile::allowed_curves
uint32_t allowed_curves
Definition: x509_crt.h:112
mbedtls_x509_crl
Definition: x509_crl.h:70
mbedtls_x509_crt_verify_chain_item::crt
mbedtls_x509_crt * crt
Definition: x509_crt.h:150
mbedtls_x509_crt_parse_der
int mbedtls_x509_crt_parse_der(mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen)
Parse a single DER formatted certificate and add it to the chained list.
mbedtls_x509write_crt_set_extension
int mbedtls_x509write_crt_set_extension(mbedtls_x509write_cert *ctx, const char *oid, size_t oid_len, int critical, const unsigned char *val, size_t val_len)
Generic function to add to or replace an extension in the CRT.
mbedtls_x509write_crt_set_ns_cert_type
int mbedtls_x509write_crt_set_ns_cert_type(mbedtls_x509write_cert *ctx, unsigned char ns_cert_type)
Set the Netscape Cert Type flags (e.g. MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT | MBEDTLS_X509_NS_CERT_TY...
mbedtls_pk_type_t
mbedtls_pk_type_t
Public key types.
Definition: pk.h:78
mbedtls_x509_crt_is_revoked
int mbedtls_x509_crt_is_revoked(const mbedtls_x509_crt *crt, const mbedtls_x509_crl *crl)
Verify the certificate revocation status.
config.h
Configuration options (set of defines)
mbedtls_x509write_cert::not_after
char not_after[MBEDTLS_X509_RFC5280_UTC_TIME_LEN+1]
Definition: x509_crt.h:141
mbedtls_x509write_crt_pem
int mbedtls_x509write_crt_pem(mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Write a built up certificate to a X509 PEM string.
mbedtls_x509_crt::next
struct mbedtls_x509_crt * next
Definition: x509_crt.h:93
mbedtls_asn1_sequence
Definition: asn1.h:156
mbedtls_x509_crt_profile_default
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default
mbedtls_x509_crt_check_key_usage
int mbedtls_x509_crt_check_key_usage(const mbedtls_x509_crt *crt, unsigned int usage)
Check usage of certificate against keyUsage extension.
mbedtls_x509_crt::issuer
mbedtls_x509_name issuer
Definition: x509_crt.h:65
mbedtls_x509write_crt_set_subject_key
void mbedtls_x509write_crt_set_subject_key(mbedtls_x509write_cert *ctx, mbedtls_pk_context *key)
Set the subject public key for the certificate.
mbedtls_x509_crt_verify_chain
Definition: x509_crt.h:162
mbedtls_x509write_crt_set_key_usage
int mbedtls_x509write_crt_set_key_usage(mbedtls_x509write_cert *ctx, unsigned int key_usage)
Set the Key Usage Extension flags (e.g. MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_KEY_CERT_...
mbedtls_x509write_crt_init
void mbedtls_x509write_crt_init(mbedtls_x509write_cert *ctx)
Initialize a CRT writing context.
mbedtls_x509_crt::subject_id
mbedtls_x509_buf subject_id
Definition: x509_crt.h:74
mbedtls_x509write_cert
struct mbedtls_x509write_cert mbedtls_x509write_cert
mbedtls_x509write_crt_set_md_alg
void mbedtls_x509write_crt_set_md_alg(mbedtls_x509write_cert *ctx, mbedtls_md_type_t md_alg)
Set the MD algorithm to use for the signature (e.g. MBEDTLS_MD_SHA1)
mbedtls_x509_crt::tbs
mbedtls_x509_buf tbs
Definition: x509_crt.h:56
mbedtls_asn1_named_data
Definition: asn1.h:166
mbedtls_x509_crt::subject_raw
mbedtls_x509_buf subject_raw
Definition: x509_crt.h:63
mbedtls_x509_crt_free
void mbedtls_x509_crt_free(mbedtls_x509_crt *crt)
Unallocate all certificate data.
mbedtls_x509_crt::sig_oid
mbedtls_x509_buf sig_oid
Definition: x509_crt.h:60
mbedtls_pk_restart_ctx
void mbedtls_pk_restart_ctx
Definition: pk.h:147
mbedtls_x509_crt::issuer_raw
mbedtls_x509_buf issuer_raw
Definition: x509_crt.h:62
mbedtls_x509_crt_verify_chain_item::flags
uint32_t flags
Definition: x509_crt.h:151
mbedtls_x509_crt_profile_suiteb
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb
mbedtls_x509write_crt_set_basic_constraints
int mbedtls_x509write_crt_set_basic_constraints(mbedtls_x509write_cert *ctx, int is_ca, int max_pathlen)
Set the basicConstraints extension for a CRT.
mbedtls_x509_crt::subject
mbedtls_x509_name subject
Definition: x509_crt.h:66
mbedtls_x509_crt::valid_to
mbedtls_x509_time valid_to
Definition: x509_crt.h:69
mbedtls_x509_crt_parse
int mbedtls_x509_crt_parse(mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen)
Parse one or more certificates and add them to the chained list. Parses permissively. If some certificates can be parsed, the result is the number of failed certificates it encountered. If none complete correctly, the first error is returned.
mbedtls_x509_crt_profile
struct mbedtls_x509_crt_profile mbedtls_x509_crt_profile
mbedtls_x509_crt::ns_cert_type
unsigned char ns_cert_type
Definition: x509_crt.h:86
mbedtls_asn1_buf
Definition: asn1.h:134
mbedtls_x509_time
Definition: x509.h:208
mbedtls_x509_crt_parse_path
int mbedtls_x509_crt_parse_path(mbedtls_x509_crt *chain, const char *path)
Load one or more certificate files from a path and add them to the chained list. Parses permissively...
mbedtls_x509write_cert
Definition: x509_crt.h:131
mbedtls_x509write_cert::version
int version
Definition: x509_crt.h:133
mbedtls_x509write_crt_set_subject_key_identifier
int mbedtls_x509write_crt_set_subject_key_identifier(mbedtls_x509write_cert *ctx)
Set the subjectKeyIdentifier extension for a CRT Requires that mbedtls_x509write_crt_set_subject_key(...
mbedtls_x509write_crt_set_subject_name
int mbedtls_x509write_crt_set_subject_name(mbedtls_x509write_cert *ctx, const char *subject_name)
Set the subject name for a Certificate Subject names should contain a comma-separated list of OID typ...
mbedtls_x509_crt::serial
mbedtls_x509_buf serial
Definition: x509_crt.h:59
mbedtls_x509_crt_restart_ctx
void mbedtls_x509_crt_restart_ctx
Definition: x509_crt.h:199
mbedtls_x509write_crt_set_version
void mbedtls_x509write_crt_set_version(mbedtls_x509write_cert *ctx, int version)
Set the verion for a Certificate Default: MBEDTLS_X509_CRT_VERSION_3.
mbedtls_x509_crt_profile::rsa_min_bitlen
uint32_t rsa_min_bitlen
Definition: x509_crt.h:113
mbedtls_x509_crt::valid_from
mbedtls_x509_time valid_from
Definition: x509_crt.h:68
mbedtls_x509_crt::raw
mbedtls_x509_buf raw
Definition: x509_crt.h:55
mbedtls_x509_crt_check_extended_key_usage
int mbedtls_x509_crt_check_extended_key_usage(const mbedtls_x509_crt *crt, const char *usage_oid, size_t usage_len)
Check usage of certificate against extendedKeyUsage.
mbedtls_x509write_crt_set_validity
int mbedtls_x509write_crt_set_validity(mbedtls_x509write_cert *ctx, const char *not_before, const char *not_after)
Set the validity period for a Certificate Timestamps should be in string format for UTC timezone i...
MBEDTLS_X509_RFC5280_UTC_TIME_LEN
#define MBEDTLS_X509_RFC5280_UTC_TIME_LEN
Definition: x509_crt.h:122
MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE
#define MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE
Definition: x509_crt.h:157
mbedtls_x509write_crt_set_issuer_key
void mbedtls_x509write_crt_set_issuer_key(mbedtls_x509write_cert *ctx, mbedtls_pk_context *key)
Set the issuer key used for signing the certificate.
mbedtls_x509_crt_profile_next
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next
mbedtls_x509write_cert::subject_key
mbedtls_pk_context * subject_key
Definition: x509_crt.h:135
mbedtls_x509_crt::sig_pk
mbedtls_pk_type_t sig_pk
Definition: x509_crt.h:90
x509.h
X.509 generic defines and structures.
mbedtls_x509_crt_info
int mbedtls_x509_crt_info(char *buf, size_t size, const char *prefix, const mbedtls_x509_crt *crt)
Returns an informational string about the certificate.
mbedtls_x509write_crt_set_issuer_name
int mbedtls_x509write_crt_set_issuer_name(mbedtls_x509write_cert *ctx, const char *issuer_name)
Set the issuer name for a Certificate Issuer names should contain a comma-separated list of OID types...
mbedtls_x509write_cert::subject
mbedtls_asn1_named_data * subject
Definition: x509_crt.h:137
mbedtls_x509_crt_parse_file
int mbedtls_x509_crt_parse_file(mbedtls_x509_crt *chain, const char *path)
Load one or more certificates and add them to the chained list. Parses permissively. If some certificates can be parsed, the result is the number of failed certificates it encountered. If none complete correctly, the first error is returned.
mbedtls_x509write_cert::issuer_key
mbedtls_pk_context * issuer_key
Definition: x509_crt.h:136
mbedtls_x509_crt::sig_opts
void * sig_opts
Definition: x509_crt.h:91
mbedtls_x509write_cert::not_before
char not_before[MBEDTLS_X509_RFC5280_UTC_TIME_LEN+1]
Definition: x509_crt.h:140
mbedtls_x509write_cert::md_alg
mbedtls_md_type_t md_alg
Definition: x509_crt.h:139
mbedtls_x509_crt::issuer_id
mbedtls_x509_buf issuer_id
Definition: x509_crt.h:73
mbedtls_x509_crt_verify_chain_item
Definition: x509_crt.h:149
mbedtls_x509write_crt_set_serial
int mbedtls_x509write_crt_set_serial(mbedtls_x509write_cert *ctx, const mbedtls_mpi *serial)
Set the serial number for a Certificate.
mbedtls_mpi
MPI structure.
Definition: bignum.h:180
x509_crl.h
X.509 certificate revocation list parsing.
mbedtls_x509write_crt_free
void mbedtls_x509write_crt_free(mbedtls_x509write_cert *ctx)
Free the contents of a CRT write context.
mbedtls_x509_crt
Definition: x509_crt.h:53
mbedtls_x509_crt
struct mbedtls_x509_crt mbedtls_x509_crt
mbedtls_x509_crt::ext_key_usage
mbedtls_x509_sequence ext_key_usage
Definition: x509_crt.h:84
mbedtls_x509_crt::max_pathlen
int max_pathlen
Definition: x509_crt.h:80
mbedtls_x509_crt_verify_chain::len
unsigned len
Definition: x509_crt.h:165
mbedtls_x509_crt_profile
Definition: x509_crt.h:108
mbedtls_x509_crt_init
void mbedtls_x509_crt_init(mbedtls_x509_crt *crt)
Initialize a certificate (chain)
mbedtls_x509write_cert::extensions
mbedtls_asn1_named_data * extensions
Definition: x509_crt.h:142
mbedtls_x509_crt::key_usage
unsigned int key_usage
Definition: x509_crt.h:82
mbedtls_x509_crt_profile::allowed_pks
uint32_t allowed_pks
Definition: x509_crt.h:111
mbedtls_x509_crt_profile::allowed_mds
uint32_t allowed_mds
Definition: x509_crt.h:110
mbedtls_x509_crt::pk
mbedtls_pk_context pk
Definition: x509_crt.h:71
mbedtls_x509_crt::sig
mbedtls_x509_buf sig
Definition: x509_crt.h:88
mbedtls_md_type_t
mbedtls_md_type_t
Supported message digests.
Definition: md.h:58
mbedtls_x509_crt_verify_info
int mbedtls_x509_crt_verify_info(char *buf, size_t size, const char *prefix, uint32_t flags)
Returns an informational string about the verification status of a certificate.
mbedtls_x509write_cert::issuer
mbedtls_asn1_named_data * issuer
Definition: x509_crt.h:138
mbedtls_x509write_cert::serial
mbedtls_mpi serial
Definition: x509_crt.h:134
mbedtls_x509_crt::v3_ext
mbedtls_x509_buf v3_ext
Definition: x509_crt.h:75
mbedtls_x509_crt::ca_istrue
int ca_istrue
Definition: x509_crt.h:79
mbedtls_x509_crt::version
int version
Definition: x509_crt.h:58
mbedtls_x509_crt::sig_md
mbedtls_md_type_t sig_md
Definition: x509_crt.h:89