26 #if !defined(POLARSSL_CONFIG_FILE)
29 #include POLARSSL_CONFIG_FILE
32 #if defined(POLARSSL_ASN1_WRITE_C)
36 #if defined(POLARSSL_PLATFORM_C)
40 #define polarssl_malloc malloc
41 #define polarssl_free free
44 int asn1_write_len(
unsigned char **p,
unsigned char *start,
size_t len )
51 *--(*p) = (
unsigned char) len;
60 *--(*p) = (
unsigned char) len;
71 *--(*p) = ( len / 256 ) % 256;
77 int asn1_write_tag(
unsigned char **p,
unsigned char *start,
unsigned char tag )
88 const unsigned char *buf,
size_t size )
92 if( *p - start < (
int) size )
97 memcpy( *p, buf, len );
102 #if defined(POLARSSL_BIGNUM_C)
112 if( *p - start < (
int) len )
121 if( X->
s ==1 && **p & 0x80 )
154 const char *
oid,
size_t oid_len )
160 (
const unsigned char *) oid, oid_len ) );
168 const char *oid,
size_t oid_len,
188 int asn1_write_bool(
unsigned char **p,
unsigned char *start,
int boolean )
196 *--(*p) = (boolean) ? 1 : 0;
220 if( val > 0 && **p & 0x80 )
236 const char *text,
size_t text_len )
242 (
const unsigned char *) text, text_len ) );
251 const char *text,
size_t text_len )
257 (
const unsigned char *) text, text_len ) );
266 const unsigned char *buf,
size_t bits )
269 size_t len = 0, size;
271 size = ( bits / 8 ) + ( ( bits % 8 ) ? 1 : 0 );
275 if( *p - start < (
int) size + 1 )
280 memcpy( *p, buf, size );
284 *--(*p) = (
unsigned char) (size * 8 - bits);
293 const unsigned char *buf,
size_t size )
307 const char *oid,
size_t oid_len,
308 const unsigned char *val,
324 if( cur->
oid.
p == NULL )
332 if( cur->
val.
p == NULL )
339 memcpy( cur->
oid.
p, oid, oid_len );
344 else if( cur->
val.
len < val_len )
353 if( cur->
val.
p == NULL )
362 memcpy( cur->
val.
p, val, val_len );