00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef MBEDTLS_X509_CSR_H
00025 #define MBEDTLS_X509_CSR_H
00026
00027 #if !defined(MBEDTLS_CONFIG_FILE)
00028 #include "config.h"
00029 #else
00030 #include MBEDTLS_CONFIG_FILE
00031 #endif
00032
00033 #include "x509.h"
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00051 typedef struct mbedtls_x509_csr
00052 {
00053 mbedtls_x509_buf raw;
00054 mbedtls_x509_buf cri;
00056 int version;
00058 mbedtls_x509_buf subject_raw;
00059 mbedtls_x509_name subject;
00061 mbedtls_pk_context pk;
00063 mbedtls_x509_buf sig_oid;
00064 mbedtls_x509_buf sig;
00065 mbedtls_md_type_t sig_md;
00066 mbedtls_pk_type_t sig_pk;
00067 void *sig_opts;
00068 }
00069 mbedtls_x509_csr;
00070
00074 typedef struct mbedtls_x509write_csr
00075 {
00076 mbedtls_pk_context *key;
00077 mbedtls_asn1_named_data *subject;
00078 mbedtls_md_type_t md_alg;
00079 mbedtls_asn1_named_data *extensions;
00080 }
00081 mbedtls_x509write_csr;
00082
00083 #if defined(MBEDTLS_X509_CSR_PARSE_C)
00084
00095 int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr,
00096 const unsigned char *buf, size_t buflen );
00097
00110 int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen );
00111
00112 #if defined(MBEDTLS_FS_IO)
00113
00123 int mbedtls_x509_csr_parse_file( mbedtls_x509_csr *csr, const char *path );
00124 #endif
00125
00138 int mbedtls_x509_csr_info( char *buf, size_t size, const char *prefix,
00139 const mbedtls_x509_csr *csr );
00140
00146 void mbedtls_x509_csr_init( mbedtls_x509_csr *csr );
00147
00153 void mbedtls_x509_csr_free( mbedtls_x509_csr *csr );
00154 #endif
00155
00156
00157
00158
00159 #if defined(MBEDTLS_X509_CSR_WRITE_C)
00160
00165 void mbedtls_x509write_csr_init( mbedtls_x509write_csr *ctx );
00166
00179 int mbedtls_x509write_csr_set_subject_name( mbedtls_x509write_csr *ctx,
00180 const char *subject_name );
00181
00189 void mbedtls_x509write_csr_set_key( mbedtls_x509write_csr *ctx, mbedtls_pk_context *key );
00190
00198 void mbedtls_x509write_csr_set_md_alg( mbedtls_x509write_csr *ctx, mbedtls_md_type_t md_alg );
00199
00217 int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned char key_usage );
00218
00228 int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx,
00229 unsigned char ns_cert_type );
00230
00243 int mbedtls_x509write_csr_set_extension( mbedtls_x509write_csr *ctx,
00244 const char *oid, size_t oid_len,
00245 const unsigned char *val, size_t val_len );
00246
00252 void mbedtls_x509write_csr_free( mbedtls_x509write_csr *ctx );
00253
00275 int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00276 int (*f_rng)(void *, unsigned char *, size_t),
00277 void *p_rng );
00278
00279 #if defined(MBEDTLS_PEM_WRITE_C)
00280
00297 int mbedtls_x509write_csr_pem( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00298 int (*f_rng)(void *, unsigned char *, size_t),
00299 void *p_rng );
00300 #endif
00301 #endif
00302
00303 #ifdef __cplusplus
00304 }
00305 #endif
00306
00307 #endif