00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef MBEDTLS_ASN1_WRITE_H
00050 #define MBEDTLS_ASN1_WRITE_H
00051
00052 #if !defined(MBEDTLS_CONFIG_FILE)
00053 #include "config.h"
00054 #else
00055 #include MBEDTLS_CONFIG_FILE
00056 #endif
00057
00058 #include "asn1.h"
00059
00060 #define MBEDTLS_ASN1_CHK_ADD(g, f) do { if( ( ret = f ) < 0 ) return( ret ); else \
00061 g += ret; } while( 0 )
00062
00063 #ifdef __cplusplus
00064 extern "C" {
00065 #endif
00066
00077 int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len );
00078
00089 int mbedtls_asn1_write_tag( unsigned char **p, unsigned char *start,
00090 unsigned char tag );
00091
00103 int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start,
00104 const unsigned char *buf, size_t size );
00105
00106 #if defined(MBEDTLS_BIGNUM_C)
00107
00117 int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X );
00118 #endif
00119
00129 int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start );
00130
00142 int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start,
00143 const char *oid, size_t oid_len );
00144
00158 int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start,
00159 const char *oid, size_t oid_len,
00160 size_t par_len );
00161
00172 int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean );
00173
00184 int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val );
00185
00198 int mbedtls_asn1_write_printable_string( unsigned char **p, unsigned char *start,
00199 const char *text, size_t text_len );
00200
00213 int mbedtls_asn1_write_ia5_string( unsigned char **p, unsigned char *start,
00214 const char *text, size_t text_len );
00215
00230 int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
00231 const unsigned char *buf, size_t bits );
00232
00246 int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start,
00247 const unsigned char *buf, size_t size );
00248
00265 mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data **list,
00266 const char *oid, size_t oid_len,
00267 const unsigned char *val,
00268 size_t val_len );
00269
00270 #ifdef __cplusplus
00271 }
00272 #endif
00273
00274 #endif