diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function
index 48ac975..137b92a 100644
--- a/tests/suites/test_suite_chacha20.function
+++ b/tests/suites/test_suite_chacha20.function
@@ -12,31 +12,33 @@
                      char *hex_nonce_string,
                      int counter,
                      char *hex_src_string,
-                     char *hex_dst_string )
+                     char *hex_expected_output_string )
 {
     unsigned char key_str[32]; /* size set by the standard */
     unsigned char nonce_str[12]; /* size set by the standard */
     unsigned char src_str[375]; /* max size of binary input */
-    unsigned char dst_str[751]; /* hex expansion of the above */
-    unsigned char output[751];
+    unsigned char expected_output_str[375];
+    unsigned char output[375];
+    unsigned char output_string[751]; /* ASCII string representation of output */
     size_t key_len;
     size_t nonce_len;
     size_t src_len;
-    size_t dst_len;
+    size_t expected_output_len;
     mbedtls_chacha20_context ctx;
 
-    memset( key_str,    0x00, sizeof( key_str ) );
-    memset( nonce_str,  0x00, sizeof( nonce_str ) );
-    memset( src_str,    0x00, sizeof( src_str ) );
-    memset( dst_str,    0x00, sizeof( dst_str ) );
-    memset( output,     0x00, sizeof( output ) );
+    memset( key_str,       0x00, sizeof( key_str ) );
+    memset( nonce_str,     0x00, sizeof( nonce_str ) );
+    memset( src_str,       0x00, sizeof( src_str ) );
+    memset( output,        0x00, sizeof( output ) );
+    memset( output_string, 0x00, sizeof( output_string ) );
 
     key_len   = mbedtls_test_unhexify( key_str, hex_key_string );
     nonce_len = mbedtls_test_unhexify( nonce_str, hex_nonce_string );
     src_len   = mbedtls_test_unhexify( src_str, hex_src_string );
-    dst_len   = mbedtls_test_unhexify( dst_str, hex_dst_string );
+    expected_output_len = mbedtls_test_unhexify( expected_output_str,
+                                                 hex_expected_output_string );
 
-    TEST_ASSERT( src_len   == dst_len );
+    TEST_ASSERT( src_len   == expected_output_len );
     TEST_ASSERT( key_len   == 32U );
     TEST_ASSERT( nonce_len == 12U );
 
@@ -45,8 +47,8 @@
      */
     TEST_ASSERT( mbedtls_chacha20_crypt( key_str, nonce_str, counter, src_len, src_str, output ) == 0 );
 
-    mbedtls_test_hexify( dst_str, output, src_len );
-    TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 );
+    mbedtls_test_hexify( output_string, output, src_len );
+    TEST_ASSERT( strcmp( (char*) output_string, hex_expected_output_string ) == 0 );
 
     /*
      * Test the streaming API
@@ -60,8 +62,9 @@
     memset( output, 0x00, sizeof( output ) );
     TEST_ASSERT( mbedtls_chacha20_update( &ctx, src_len, src_str, output ) == 0 );
 
-    mbedtls_test_hexify( dst_str, output, src_len );
-    TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 );
+    mbedtls_test_hexify( output_string, output, src_len );
+    TEST_ASSERT( strcmp( (char*) output_string,
+                         hex_expected_output_string ) == 0 );
 
     /*
      * Test the streaming API again, piecewise
@@ -75,8 +78,9 @@
     TEST_ASSERT( mbedtls_chacha20_update( &ctx, 1, src_str, output ) == 0 );
     TEST_ASSERT( mbedtls_chacha20_update( &ctx, src_len - 1, src_str + 1, output + 1 ) == 0 );
 
-    mbedtls_test_hexify( dst_str, output, src_len );
-    TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 );
+    mbedtls_test_hexify( output_string, output, src_len );
+    TEST_ASSERT( strcmp( (char*) output_string,
+                         hex_expected_output_string ) == 0 );
 
     mbedtls_chacha20_free( &ctx );
 }
