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