00001
00023 #ifndef MBEDTLS_X509_CSR_H
00024 #define MBEDTLS_X509_CSR_H
00025
00026 #if !defined(MBEDTLS_CONFIG_FILE)
00027 #include "config.h"
00028 #else
00029 #include MBEDTLS_CONFIG_FILE
00030 #endif
00031
00032 #include "x509.h"
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00050 typedef struct mbedtls_x509_csr
00051 {
00052 mbedtls_x509_buf raw;
00053 mbedtls_x509_buf cri;
00055 int version;
00057 mbedtls_x509_buf subject_raw;
00058 mbedtls_x509_name subject;
00060 mbedtls_pk_context pk;
00062 mbedtls_x509_buf sig_oid;
00063 mbedtls_x509_buf sig;
00064 mbedtls_md_type_t sig_md;
00065 mbedtls_pk_type_t sig_pk;
00066 void *sig_opts;
00067 }
00068 mbedtls_x509_csr;
00069
00073 typedef struct mbedtls_x509write_csr
00074 {
00075 mbedtls_pk_context *key;
00076 mbedtls_asn1_named_data *subject;
00077 mbedtls_md_type_t md_alg;
00078 mbedtls_asn1_named_data *extensions;
00079 }
00080 mbedtls_x509write_csr;
00081
00082 #if defined(MBEDTLS_X509_CSR_PARSE_C)
00083
00094 int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr,
00095 const unsigned char *buf, size_t buflen );
00096
00109 int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen );
00110
00111 #if defined(MBEDTLS_FS_IO)
00112
00122 int mbedtls_x509_csr_parse_file( mbedtls_x509_csr *csr, const char *path );
00123 #endif
00124
00137 int mbedtls_x509_csr_info( char *buf, size_t size, const char *prefix,
00138 const mbedtls_x509_csr *csr );
00139
00145 void mbedtls_x509_csr_init( mbedtls_x509_csr *csr );
00146
00152 void mbedtls_x509_csr_free( mbedtls_x509_csr *csr );
00153 #endif
00154
00155
00156
00157
00158 #if defined(MBEDTLS_X509_CSR_WRITE_C)
00159
00164 void mbedtls_x509write_csr_init( mbedtls_x509write_csr *ctx );
00165
00178 int mbedtls_x509write_csr_set_subject_name( mbedtls_x509write_csr *ctx,
00179 const char *subject_name );
00180
00188 void mbedtls_x509write_csr_set_key( mbedtls_x509write_csr *ctx, mbedtls_pk_context *key );
00189
00197 void mbedtls_x509write_csr_set_md_alg( mbedtls_x509write_csr *ctx, mbedtls_md_type_t md_alg );
00198
00208 int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned char key_usage );
00209
00219 int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx,
00220 unsigned char ns_cert_type );
00221
00234 int mbedtls_x509write_csr_set_extension( mbedtls_x509write_csr *ctx,
00235 const char *oid, size_t oid_len,
00236 const unsigned char *val, size_t val_len );
00237
00243 void mbedtls_x509write_csr_free( mbedtls_x509write_csr *ctx );
00244
00266 int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00267 int (*f_rng)(void *, unsigned char *, size_t),
00268 void *p_rng );
00269
00270 #if defined(MBEDTLS_PEM_WRITE_C)
00271
00288 int mbedtls_x509write_csr_pem( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00289 int (*f_rng)(void *, unsigned char *, size_t),
00290 void *p_rng );
00291 #endif
00292 #endif
00293
00294 #ifdef __cplusplus
00295 }
00296 #endif
00297
00298 #endif