00001
00027 #ifndef POLARSSL_X509_CSR_H
00028 #define POLARSSL_X509_CSR_H
00029
00030 #include "config.h"
00031
00032 #include "x509.h"
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00050 typedef struct _x509_csr
00051 {
00052 x509_buf raw;
00053 x509_buf cri;
00055 int version;
00056
00057 x509_buf subject_raw;
00058 x509_name subject;
00060 pk_context pk;
00062 x509_buf sig_oid;
00063 x509_buf sig;
00064 md_type_t sig_md;
00065 pk_type_t sig_pk ;
00066 }
00067 x509_csr;
00068
00072 typedef struct _x509write_csr
00073 {
00074 pk_context *key;
00075 asn1_named_data *subject;
00076 md_type_t md_alg;
00077 asn1_named_data *extensions;
00078 }
00079 x509write_csr;
00080
00081 #if defined(POLARSSL_X509_CSR_PARSE_C)
00082
00091 int x509_csr_parse( x509_csr *csr, const unsigned char *buf, size_t buflen );
00092
00093 #if defined(POLARSSL_FS_IO)
00094
00102 int x509_csr_parse_file( x509_csr *csr, const char *path );
00103 #endif
00104
00117 int x509_csr_info( char *buf, size_t size, const char *prefix,
00118 const x509_csr *csr );
00119
00125 void x509_csr_init( x509_csr *csr );
00126
00132 void x509_csr_free( x509_csr *csr );
00133 #endif
00134
00135
00136
00137
00138 #if defined(POLARSSL_X509_CSR_WRITE_C)
00139
00144 void x509write_csr_init( x509write_csr *ctx );
00145
00158 int x509write_csr_set_subject_name( x509write_csr *ctx,
00159 const char *subject_name );
00160
00168 void x509write_csr_set_key( x509write_csr *ctx, pk_context *key );
00169
00177 void x509write_csr_set_md_alg( x509write_csr *ctx, md_type_t md_alg );
00178
00188 int x509write_csr_set_key_usage( x509write_csr *ctx, unsigned char key_usage );
00189
00199 int x509write_csr_set_ns_cert_type( x509write_csr *ctx,
00200 unsigned char ns_cert_type );
00201
00213 int x509write_csr_set_extension( x509write_csr *ctx,
00214 const char *oid, size_t oid_len,
00215 const unsigned char *val, size_t val_len );
00216
00222 void x509write_csr_free( x509write_csr *ctx );
00223
00245 int x509write_csr_der( x509write_csr *ctx, unsigned char *buf, size_t size,
00246 int (*f_rng)(void *, unsigned char *, size_t),
00247 void *p_rng );
00248
00249 #if defined(POLARSSL_PEM_WRITE_C)
00250
00267 int x509write_csr_pem( x509write_csr *ctx, unsigned char *buf, size_t size,
00268 int (*f_rng)(void *, unsigned char *, size_t),
00269 void *p_rng );
00270 #endif
00271 #endif
00272
00273 #ifdef __cplusplus
00274 }
00275 #endif
00276
00277 #endif