asn1write: test NULL, OID and AlgorithmIdentifier
diff --git a/tests/suites/test_suite_asn1write.function b/tests/suites/test_suite_asn1write.function
index 4b1319d..3cbe072 100644
--- a/tests/suites/test_suite_asn1write.function
+++ b/tests/suites/test_suite_asn1write.function
@@ -58,6 +58,26 @@
*/
/* BEGIN_CASE */
+void mbedtls_asn1_write_null( data_t *expected )
+{
+ generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
+ int ret;
+
+ for( data.size = 0; data.size < expected->len + 1; data.size++ )
+ {
+ if( ! generic_write_start_step( &data ) )
+ goto exit;
+ ret = mbedtls_asn1_write_null( &data.p, data.start );
+ if( ! generic_write_finish_step( &data, expected, ret ) )
+ goto exit;
+ }
+
+exit:
+ mbedtls_free( data.output );
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
void mbedtls_asn1_write_bool( int val, data_t *expected )
{
generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
@@ -140,6 +160,11 @@
ret = mbedtls_asn1_write_octet_string(
&data.p, data.start, content->x, content->len );
break;
+ case MBEDTLS_ASN1_OID:
+ ret = mbedtls_asn1_write_oid(
+ &data.p, data.start,
+ (const char *) content->x, content->len );
+ break;
case MBEDTLS_ASN1_UTF8_STRING:
ret = mbedtls_asn1_write_utf8_string(
&data.p, data.start,
@@ -171,6 +196,36 @@
}
/* END_CASE */
+/* BEGIN_CASE */
+void mbedtls_asn1_write_algorithm_identifier( data_t *oid,
+ int par_len,
+ data_t *expected )
+{
+ generic_write_data_t data = { NULL, NULL, NULL, NULL, 0 };
+ int ret;
+
+ for( data.size = 0; data.size < expected->len + 1; data.size++ )
+ {
+ if( ! generic_write_start_step( &data ) )
+ goto exit;
+ ret = mbedtls_asn1_write_algorithm_identifier(
+ &data.p, data.start,
+ (const char *) oid->x, oid->len, par_len );
+ /* If params_len != 0, mbedtls_asn1_write_algorithm_identifier()
+ * assumes that the parameters are already present in the buffer
+ * and returns a length that accounts for this, but our test
+ * data omits the parameters. */
+ if( ret >= 0 )
+ ret -= par_len;
+ if( ! generic_write_finish_step( &data, expected, ret ) )
+ goto exit;
+ }
+
+exit:
+ mbedtls_free( data.output );
+}
+/* END_CASE */
+
/* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C */
void mbedtls_asn1_write_len( int len, data_t * asn1, int buf_len,
int result )