diff --git a/testsuite/testutils.c b/testsuite/testutils.c
index 9e5dda13db63ab882e48a9e86d708da664bd2f32..e18d025c43559ec5b41b908d13f22bb3ad3a9042 100644
--- a/testsuite/testutils.c
+++ b/testsuite/testutils.c
@@ -228,11 +228,12 @@ test_armor(const struct nettle_armor *armor,
            const uint8_t *data,
            const uint8_t *ascii)
 {
+  void *ctx = alloca(armor->context_size);
   uint8_t *buffer = alloca(1 + strlen(ascii));
   uint8_t *check = alloca(1 + data_length);
 
-  memset(buffer, 0, 1 + strlen(ascii));
-  memset(check, 0, 1 + data_length);
+  memset(buffer, 0x33, 1 + strlen(ascii));
+  memset(check, 0x55, 1 + data_length);
 
   if (strlen(ascii) != armor->encode(buffer, data_length, data))
     FAIL();
@@ -240,16 +241,17 @@ test_armor(const struct nettle_armor *armor,
   if (!MEMEQ(strlen(ascii), buffer, ascii))
     FAIL();
 
-  if (buffer[strlen(ascii)])
+  if (0x33 != buffer[strlen(ascii)])
     FAIL();  
 
-  if (data_length != armor->decode(check, strlen(ascii), buffer))
+  armor->decode_init(ctx);
+  if (data_length != armor->decode_update(ctx, check, strlen(ascii), buffer))
     FAIL();
 
   if (!MEMEQ(data_length, check, data))
     FAIL();
 
-  if (check[data_length])
+  if (0x55 != check[data_length])
     FAIL();
 }