Skip to content

Commit 9710b2d

Browse files
asn1write: test NULL, OID and AlgorithmIdentifier
1 parent 8fc8e34 commit 9710b2d

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

tests/suites/test_suite_asn1write.data

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
ASN.1 Write NULL
2+
mbedtls_asn1_write_null:"0500"
3+
14
ASN.1 Write BOOLEAN FALSE
25
mbedtls_asn1_write_bool:0:"010100"
36

@@ -139,6 +142,42 @@ mbedtls_asn1_write_string:MBEDTLS_ASN1_IA5_STRING | MBEDTLS_ASN1_CONTEXT_SPECIFI
139142
ASN.1 Write tagged string: length=128
140143
mbedtls_asn1_write_string:MBEDTLS_ASN1_IA5_STRING | MBEDTLS_ASN1_CONTEXT_SPECIFIC:"0199a66790856f7199641f55cadabb660aaed6aa0d9ef8cef4417118c6e8c6e15becbaa21c63faf48726e92357a38b3079a0b9d60be7457ec6552f900dd032577167c91e829927343c3a769b362db4de0ad2ffb8f13cc2eeca9e52dc557118baa88b857477595622bc301a1ae2150030d652c4a482cf88d0ded85d6731ff2d38":"9681800199a66790856f7199641f55cadabb660aaed6aa0d9ef8cef4417118c6e8c6e15becbaa21c63faf48726e92357a38b3079a0b9d60be7457ec6552f900dd032577167c91e829927343c3a769b362db4de0ad2ffb8f13cc2eeca9e52dc557118baa88b857477595622bc301a1ae2150030d652c4a482cf88d0ded85d6731ff2d38"
141144

145+
ASN.1 Write OID: length=0
146+
mbedtls_asn1_write_string:MBEDTLS_ASN1_OID:"":"0600"
147+
148+
ASN.1 Write OID: length=1
149+
mbedtls_asn1_write_string:MBEDTLS_ASN1_OID:"41":"060141"
150+
151+
ASN.1 Write AlgorithmIdentifier, null parameters
152+
mbedtls_asn1_write_algorithm_identifier:"4f4944":8:"300d06034f4944"
153+
154+
ASN.1 Write AlgorithmIdentifier, parameters (8 bytes)
155+
mbedtls_asn1_write_algorithm_identifier:"4f4944":8:"300d06034f4944"
156+
157+
ASN.1 Write AlgorithmIdentifier, total length=0x7f
158+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0x7a:"307f06034f4944"
159+
160+
ASN.1 Write AlgorithmIdentifier, total length=0x80
161+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0x7b:"30818006034f4944"
162+
163+
ASN.1 Write AlgorithmIdentifier, total length=0xff
164+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfa:"3081ff06034f4944"
165+
166+
ASN.1 Write AlgorithmIdentifier, total length=0x100
167+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfb:"3082010006034f4944"
168+
169+
ASN.1 Write AlgorithmIdentifier, total length=0xffff
170+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfffa:"3082ffff06034f4944"
171+
172+
ASN.1 Write AlgorithmIdentifier, total length=0x10000
173+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfffb:"308301000006034f4944"
174+
175+
ASN.1 Write AlgorithmIdentifier, total length=0xffffff
176+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfffffa:"3083ffffff06034f4944"
177+
178+
ASN.1 Write AlgorithmIdentifier, total length=0x1000000
179+
mbedtls_asn1_write_algorithm_identifier:"4f4944":0xfffffb:"30840100000006034f4944"
180+
142181
ASN.1 Write / Read Length #0 (Len = 0, short form)
143182
mbedtls_asn1_write_len:0:"00":1:1
144183

tests/suites/test_suite_asn1write.function

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ exit:
5757
* END_DEPENDENCIES
5858
*/
5959

60+
/* BEGIN_CASE */
61+
void mbedtls_asn1_write_null( data_t *expected )
62+
{
63+
generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
64+
int ret;
65+
66+
for( data.size = 0; data.size < expected->len + 1; data.size++ )
67+
{
68+
if( ! generic_write_start_step( &data ) )
69+
goto exit;
70+
ret = mbedtls_asn1_write_null( &data.p, data.start );
71+
if( ! generic_write_finish_step( &data, expected, ret ) )
72+
goto exit;
73+
}
74+
75+
exit:
76+
mbedtls_free( data.output );
77+
}
78+
/* END_CASE */
79+
6080
/* BEGIN_CASE */
6181
void mbedtls_asn1_write_bool( int val, data_t *expected )
6282
{
@@ -140,6 +160,11 @@ void mbedtls_asn1_write_string( int tag, data_t *content, data_t *expected )
140160
ret = mbedtls_asn1_write_octet_string(
141161
&data.p, data.start, content->x, content->len );
142162
break;
163+
case MBEDTLS_ASN1_OID:
164+
ret = mbedtls_asn1_write_oid(
165+
&data.p, data.start,
166+
(const char *) content->x, content->len );
167+
break;
143168
case MBEDTLS_ASN1_UTF8_STRING:
144169
ret = mbedtls_asn1_write_utf8_string(
145170
&data.p, data.start,
@@ -171,6 +196,36 @@ exit:
171196
}
172197
/* END_CASE */
173198

199+
/* BEGIN_CASE */
200+
void mbedtls_asn1_write_algorithm_identifier( data_t *oid,
201+
int par_len,
202+
data_t *expected )
203+
{
204+
generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
205+
int ret;
206+
207+
for( data.size = 0; data.size < expected->len + 1; data.size++ )
208+
{
209+
if( ! generic_write_start_step( &data ) )
210+
goto exit;
211+
ret = mbedtls_asn1_write_algorithm_identifier(
212+
&data.p, data.start,
213+
(const char *) oid->x, oid->len, par_len );
214+
/* If params_len != 0, mbedtls_asn1_write_algorithm_identifier()
215+
* assumes that the parameters are already present in the buffer
216+
* and returns a length that accounts for this, but our test
217+
* data omits the parameters. */
218+
if( ret >= 0 )
219+
ret -= par_len;
220+
if( ! generic_write_finish_step( &data, expected, ret ) )
221+
goto exit;
222+
}
223+
224+
exit:
225+
mbedtls_free( data.output );
226+
}
227+
/* END_CASE */
228+
174229
/* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C */
175230
void mbedtls_asn1_write_len( int len, data_t * asn1, int buf_len,
176231
int result )

0 commit comments

Comments
 (0)