blob: 49b073aa99bd67ab4761a2ecfb3ea274850782f6 [file] [log] [blame]
Manuel Pégourié-Gonnard36178ff2014-05-29 14:26:03 +02001/* BEGIN_HEADER */
Rich Evansce2f2372015-02-06 13:57:42 +00002#include "polarssl/asn1write.h"
Manuel Pégourié-Gonnard36178ff2014-05-29 14:26:03 +02003
4#define GUARD_LEN 4
5#define GUARD_VAL 0x2a
6/* END_HEADER */
7
8/* BEGIN_DEPENDENCIES
9 * depends_on:POLARSSL_ASN1_WRITE_C
10 * END_DEPENDENCIES
11 */
12
13/* BEGIN_CASE */
14void asn1_write_octet_string( char *hex_str, char *hex_asn1,
15 int buf_len, int result )
16{
17 int ret;
18 unsigned char buf[150];
19 unsigned char str[150] = { 0 };
20 unsigned char asn1[150] = { 0 };
21 size_t str_len, asn1_len, i;
22 unsigned char *p;
23
24 memset( buf, GUARD_VAL, sizeof( buf ) );
25
26 str_len = unhexify( str, hex_str );
27 asn1_len = unhexify( asn1, hex_asn1 );
28
29 p = buf + GUARD_LEN + buf_len;
30
31 ret = asn1_write_octet_string( &p, buf + GUARD_LEN, str, str_len );
32
33 /* Check for buffer overwrite on both sides */
34 for( i = 0; i < GUARD_LEN; i++ )
35 {
36 TEST_ASSERT( buf[i] == GUARD_VAL );
37 TEST_ASSERT( buf[GUARD_LEN + buf_len + i] == GUARD_VAL );
38 }
39
40 if( result >= 0 )
41 {
42 TEST_ASSERT( (size_t) ret == asn1_len );
43 TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len );
44
45 TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 );
46 }
47}
48/* END_CASE */
Manuel Pégourié-Gonnardc22bb492014-05-29 17:16:45 +020049
50/* BEGIN_CASE */
51void asn1_write_ia5_string( char *str, char *hex_asn1,
52 int buf_len, int result )
53{
54 int ret;
55 unsigned char buf[150];
56 unsigned char asn1[150] = { 0 };
57 size_t str_len, asn1_len, i;
58 unsigned char *p;
59
60 memset( buf, GUARD_VAL, sizeof( buf ) );
61
62 str_len = strlen( str );
63 asn1_len = unhexify( asn1, hex_asn1 );
64
65 p = buf + GUARD_LEN + buf_len;
66
67 ret = asn1_write_ia5_string( &p, buf + GUARD_LEN, str, str_len );
68
69 /* Check for buffer overwrite on both sides */
70 for( i = 0; i < GUARD_LEN; i++ )
71 {
72 TEST_ASSERT( buf[i] == GUARD_VAL );
73 TEST_ASSERT( buf[GUARD_LEN + buf_len + i] == GUARD_VAL );
74 }
75
76 if( result >= 0 )
77 {
78 TEST_ASSERT( (size_t) ret == asn1_len );
79 TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len );
80
81 TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 );
82 }
83}
84/* END_CASE */