2 #include "mbedtls/asn1write.h"
9 * depends_on:MBEDTLS_ASN1_WRITE_C
14 void mbedtls_asn1_write_octet_string( data_t * str, data_t * asn1,
15 int buf_len, int result )
18 unsigned char buf[150];
22 memset( buf, GUARD_VAL, sizeof( buf ) );
25 p = buf + GUARD_LEN + buf_len;
27 ret = mbedtls_asn1_write_octet_string( &p, buf + GUARD_LEN, str->x, str->len );
29 /* Check for buffer overwrite on both sides */
30 for( i = 0; i < GUARD_LEN; i++ )
32 TEST_ASSERT( buf[i] == GUARD_VAL );
33 TEST_ASSERT( buf[GUARD_LEN + buf_len + i] == GUARD_VAL );
38 TEST_ASSERT( (size_t) ret == asn1->len );
39 TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len );
41 TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 );
47 void mbedtls_asn1_write_ia5_string( char * str, data_t * asn1,
48 int buf_len, int result )
51 unsigned char buf[150];
56 memset( buf, GUARD_VAL, sizeof( buf ) );
58 str_len = strlen( str );
60 p = buf + GUARD_LEN + buf_len;
62 ret = mbedtls_asn1_write_ia5_string( &p, buf + GUARD_LEN, str, str_len );
64 /* Check for buffer overwrite on both sides */
65 for( i = 0; i < GUARD_LEN; i++ )
67 TEST_ASSERT( buf[i] == GUARD_VAL );
68 TEST_ASSERT( buf[GUARD_LEN + buf_len + i] == GUARD_VAL );
73 TEST_ASSERT( (size_t) ret == asn1->len );
74 TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len );
76 TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 );
81 /* BEGIN_CASE depends_on:MBEDTLS_ASN1PARSE_C */
82 void mbedtls_asn1_write_len( int len, data_t * asn1, int buf_len,
86 unsigned char buf[150];
91 memset( buf, GUARD_VAL, sizeof( buf ) );
93 p = buf + GUARD_LEN + buf_len;
95 ret = mbedtls_asn1_write_len( &p, buf + GUARD_LEN, (size_t) len );
97 TEST_ASSERT( ret == result );
99 /* Check for buffer overwrite on both sides */
100 for( i = 0; i < GUARD_LEN; i++ )
102 TEST_ASSERT( buf[i] == GUARD_VAL );
103 TEST_ASSERT( buf[GUARD_LEN + buf_len + i] == GUARD_VAL );
108 TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len );
110 TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 );
112 /* Read back with mbedtls_asn1_get_len() to check */
113 ret = mbedtls_asn1_get_len( &p, buf + GUARD_LEN + buf_len, &read_len );
117 TEST_ASSERT( ret == 0 );
121 /* Return will be MBEDTLS_ERR_ASN1_OUT_OF_DATA because the rest of
122 * the buffer is missing
124 TEST_ASSERT( ret == MBEDTLS_ERR_ASN1_OUT_OF_DATA );
126 TEST_ASSERT( read_len == (size_t) len );
127 TEST_ASSERT( p == buf + GUARD_LEN + buf_len );
133 void test_asn1_write_bitstrings( data_t *bitstring, int bits,
134 data_t *expected_asn1, int result,
139 unsigned char buf[150];
142 memset( buf, GUARD_VAL, sizeof( buf ) );
144 p = buf + GUARD_LEN + expected_asn1->len;
148 ret = mbedtls_asn1_write_bitstring( &p,
150 (unsigned char *)bitstring->x,
155 ret = mbedtls_asn1_write_named_bitstring( &p,
157 (unsigned char *)bitstring->x,
160 TEST_ASSERT( ret == result );
162 /* Check for buffer overwrite on both sides */
163 for( i = 0; i < GUARD_LEN; i++ )
165 TEST_ASSERT( buf[i] == GUARD_VAL );
166 TEST_ASSERT( buf[GUARD_LEN + expected_asn1->len + i] == GUARD_VAL );
171 TEST_ASSERT( memcmp( p, expected_asn1->x, expected_asn1->len ) == 0 );