1 /**
2  * \file x509.h
3  *
4  * \brief Internal part of the public "x509.h".
5  */
6 /*
7  *  Copyright The Mbed TLS Contributors
8  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
9  */
10 #ifndef MBEDTLS_X509_INTERNAL_H
11 #define MBEDTLS_X509_INTERNAL_H
12 
13 #include "tf_psa_crypto_common.h"
14 #include "mbedtls/build_info.h"
15 #include "mbedtls/private_access.h"
16 
17 #include "mbedtls/x509.h"
18 #include "mbedtls/asn1.h"
19 #include "pk_internal.h"
20 
21 #if defined(MBEDTLS_RSA_C)
22 #include "mbedtls/rsa.h"
23 #endif
24 
25 int mbedtls_x509_get_name(unsigned char **p, const unsigned char *end,
26                           mbedtls_x509_name *cur);
27 int mbedtls_x509_get_alg_null(unsigned char **p, const unsigned char *end,
28                               mbedtls_x509_buf *alg);
29 int mbedtls_x509_get_alg(unsigned char **p, const unsigned char *end,
30                          mbedtls_x509_buf *alg, mbedtls_x509_buf *params);
31 #if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
32 int mbedtls_x509_get_rsassa_pss_params(const mbedtls_x509_buf *params,
33                                        mbedtls_md_type_t *md_alg, mbedtls_md_type_t *mgf_md,
34                                        int *salt_len);
35 #endif
36 int mbedtls_x509_get_sig(unsigned char **p, const unsigned char *end, mbedtls_x509_buf *sig);
37 int mbedtls_x509_get_sig_alg(const mbedtls_x509_buf *sig_oid, const mbedtls_x509_buf *sig_params,
38                              mbedtls_md_type_t *md_alg, mbedtls_pk_sigalg_t *pk_alg);
39 int mbedtls_x509_get_time(unsigned char **p, const unsigned char *end,
40                           mbedtls_x509_time *t);
41 int mbedtls_x509_get_serial(unsigned char **p, const unsigned char *end,
42                             mbedtls_x509_buf *serial);
43 int mbedtls_x509_get_ext(unsigned char **p, const unsigned char *end,
44                          mbedtls_x509_buf *ext, int tag);
45 #if !defined(MBEDTLS_X509_REMOVE_INFO)
46 int mbedtls_x509_sig_alg_gets(char *buf, size_t size, const mbedtls_x509_buf *sig_oid,
47                               mbedtls_pk_sigalg_t pk_alg, mbedtls_md_type_t md_alg);
48 #endif
49 int mbedtls_x509_key_size_helper(char *buf, size_t buf_size, const char *name);
50 int mbedtls_x509_set_extension(mbedtls_asn1_named_data **head, const char *oid, size_t oid_len,
51                                int critical, const unsigned char *val,
52                                size_t val_len);
53 int mbedtls_x509_write_extensions(unsigned char **p, unsigned char *start,
54                                   mbedtls_asn1_named_data *first);
55 int mbedtls_x509_write_names(unsigned char **p, unsigned char *start,
56                              mbedtls_asn1_named_data *first);
57 int mbedtls_x509_write_sig(unsigned char **p, unsigned char *start,
58                            const char *oid, size_t oid_len,
59                            unsigned char *sig, size_t size,
60                            mbedtls_pk_sigalg_t pk_alg);
61 int mbedtls_x509_get_ns_cert_type(unsigned char **p,
62                                   const unsigned char *end,
63                                   unsigned char *ns_cert_type);
64 int mbedtls_x509_get_key_usage(unsigned char **p,
65                                const unsigned char *end,
66                                unsigned int *key_usage);
67 int mbedtls_x509_get_subject_alt_name(unsigned char **p,
68                                       const unsigned char *end,
69                                       mbedtls_x509_sequence *subject_alt_name);
70 int mbedtls_x509_get_subject_alt_name_ext(unsigned char **p,
71                                           const unsigned char *end,
72                                           mbedtls_x509_sequence *subject_alt_name);
73 int mbedtls_x509_info_subject_alt_name(char **buf, size_t *size,
74                                        const mbedtls_x509_sequence
75                                        *subject_alt_name,
76                                        const char *prefix);
77 int mbedtls_x509_info_cert_type(char **buf, size_t *size,
78                                 unsigned char ns_cert_type);
79 int mbedtls_x509_info_key_usage(char **buf, size_t *size,
80                                 unsigned int key_usage);
81 
82 int mbedtls_x509_write_set_san_common(mbedtls_asn1_named_data **extensions,
83                                       const mbedtls_x509_san_list *san_list);
84 
85 #endif /* MBEDTLS_X509_INTERNAL_H */
86