26 #if !defined(POLARSSL_CONFIG_FILE)
29 #include POLARSSL_CONFIG_FILE
32 #if defined(POLARSSL_X509_CREATE_C)
38 #if defined(_MSC_VER) && !defined strncasecmp && !defined(EFIX64) && \
40 #define strncasecmp _strnicmp
47 } x509_attr_descriptor_t;
49 #define ADD_STRLEN( s ) s, sizeof( s ) - 1
51 static const x509_attr_descriptor_t x509_attrs[] =
54 { ADD_STRLEN(
"commonName" ),
OID_AT_CN },
84 static const char *x509_at_oid_from_name(
const char *name,
size_t name_len )
86 const x509_attr_descriptor_t *cur;
88 for( cur = x509_attrs; cur->name != NULL; cur++ )
89 if( cur->name_len == name_len &&
90 strncasecmp( cur->name, name, name_len ) == 0 )
99 const char *s = name, *c = s;
100 const char *end = s + strlen( s );
101 const char *oid = NULL;
109 if( in_tag && *c ==
'=' )
111 if( ( oid = x509_at_oid_from_name( s, c - s ) ) == NULL )
121 if( !in_tag && ( *c ==
',' || c == end ) )
130 while( c < end && *(c + 1) ==
' ' )
148 int critical,
const unsigned char *val,
size_t val_len )
153 NULL, val_len + 1 ) ) == NULL )
158 cur->
val.
p[0] = critical;
159 memcpy( cur->
val.
p + 1, val, val_len );
176 static int x509_write_name(
unsigned char **p,
unsigned char *start,
177 const char *oid,
size_t oid_len,
178 const unsigned char *name,
size_t name_len )
237 const char *oid,
size_t oid_len,
238 unsigned char *sig,
size_t size )
243 if( *p - start < (
int) size + 1 )
248 memcpy( *p, sig, len );
264 static int x509_write_extension(
unsigned char **p,
unsigned char *start,
275 if( ext->
val.
p[0] != 0 )
309 while( cur_ext != NULL )
311 ASN1_CHK_ADD( len, x509_write_extension( p, start, cur_ext ) );
312 cur_ext = cur_ext->
next;