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
00209 int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned char key_usage );
00210
00220 int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx,
00221 unsigned char ns_cert_type );
00222
00235 int mbedtls_x509write_csr_set_extension( mbedtls_x509write_csr *ctx,
00236 const char *oid, size_t oid_len,
00237 const unsigned char *val, size_t val_len );
00238
00244 void mbedtls_x509write_csr_free( mbedtls_x509write_csr *ctx );
00245
00267 int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00268 int (*f_rng)(void *, unsigned char *, size_t),
00269 void *p_rng );
00270
00271 #if defined(MBEDTLS_PEM_WRITE_C)
00272
00289 int mbedtls_x509write_csr_pem( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size,
00290 int (*f_rng)(void *, unsigned char *, size_t),
00291 void *p_rng );
00292 #endif
00293 #endif
00294
00295 #ifdef __cplusplus
00296 }
00297 #endif
00298
00299 #endif