34 #if defined(POLARSSL_X509_CRT_WRITE_C)
41 #if defined(POLARSSL_PEM_WRITE_C)
121 const char *oid,
size_t oid_len,
123 const unsigned char *val,
size_t val_len )
126 critical, val, val_len );
130 int is_ca,
int max_pathlen )
133 unsigned char buf[9];
134 unsigned char *c = buf +
sizeof(buf);
137 memset( buf, 0,
sizeof(buf) );
139 if( is_ca && max_pathlen > 127 )
144 if( max_pathlen >= 0 )
156 0, buf +
sizeof(buf) - len, len );
163 unsigned char *c = buf +
sizeof(buf);
166 memset( buf, 0,
sizeof(buf));
169 sha1( buf +
sizeof(buf) - len, len, buf +
sizeof(buf) - 20 );
170 c = buf +
sizeof(buf) - 20;
178 0, buf +
sizeof(buf) - len, len );
185 unsigned char *c = buf +
sizeof(buf);
188 memset( buf, 0,
sizeof(buf));
191 sha1( buf +
sizeof(buf) - len, len, buf +
sizeof(buf) - 20 );
192 c = buf +
sizeof(buf) - 20;
203 0, buf +
sizeof(buf) - len, len );
208 unsigned char buf[4];
227 unsigned char ns_cert_type )
229 unsigned char buf[4];
247 static int x509_write_time(
unsigned char **p,
unsigned char *start,
248 const char *time,
size_t size )
256 if( time[0] ==
'2' && time[1] ==
'0' && time [2] <
'5' )
259 (
const unsigned char *) time + 2,
267 (
const unsigned char *) time,
277 int (*f_rng)(
void *,
unsigned char *,
size_t),
282 size_t sig_oid_len = 0;
283 unsigned char *c, *c2;
284 unsigned char hash[64];
286 unsigned char tmp_buf[2048];
287 size_t sub_len = 0, pub_len = 0, sig_and_oid_len = 0, sig_len;
294 c = tmp_buf +
sizeof( tmp_buf );
302 &sig_oid, &sig_oid_len ) ) != 0 )
320 tmp_buf, c - tmp_buf ) );
355 sig_oid, strlen( sig_oid ), 0 ) );
380 f_rng, p_rng ) ) != 0 )
390 sig_oid, sig_oid_len, sig, sig_len ) );
393 memcpy( c2, c, len );
395 len += sig_and_oid_len;
402 #define PEM_BEGIN_CRT "-----BEGIN CERTIFICATE-----\n"
403 #define PEM_END_CRT "-----END CERTIFICATE-----\n"
405 #if defined(POLARSSL_PEM_WRITE_C)
407 int (*f_rng)(
void *,
unsigned char *,
size_t),
411 unsigned char output_buf[4096];
415 f_rng, p_rng ) ) < 0 )
420 if( ( ret = pem_write_buffer( PEM_BEGIN_CRT, PEM_END_CRT,
421 output_buf +
sizeof(output_buf) - ret,
422 ret, buf, size, &olen ) ) != 0 )