From 29c06e988320ee5ca0af666c5833993c7ab5bf64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sat, 2 Jul 2005 19:02:51 +0200
Subject: [PATCH] (test_cipher_ctr): New function.

Rev: src/nettle/testsuite/testutils.c:1.27
Rev: src/nettle/testsuite/testutils.h:1.22
---
 testsuite/testutils.c | 38 ++++++++++++++++++++++++++++++++++++++
 testsuite/testutils.h |  9 +++++++++
 2 files changed, 47 insertions(+)

diff --git a/testsuite/testutils.c b/testsuite/testutils.c
index 7ea750ad..801cf882 100644
--- a/testsuite/testutils.c
+++ b/testsuite/testutils.c
@@ -3,6 +3,7 @@
 #include "testutils.h"
 
 #include "cbc.h"
+#include "ctr.h"
 #include "knuth-lfib.h"
 
 #include <ctype.h>
@@ -224,6 +225,43 @@ test_cipher_cbc(const struct nettle_cipher *cipher,
   free(iv);
 }
 
+void
+test_cipher_ctr(const struct nettle_cipher *cipher,
+		unsigned key_length,
+		const uint8_t *key,
+		unsigned length,
+		const uint8_t *cleartext,
+		const uint8_t *ciphertext,
+		const uint8_t *ictr)
+{
+  void *ctx = xalloc(cipher->context_size);
+  uint8_t *data = xalloc(length);
+  uint8_t *ctr = xalloc(cipher->block_size);
+  
+  cipher->set_encrypt_key(ctx, key_length, key);
+  memcpy(ctr, ictr, cipher->block_size);
+
+  ctr_crypt(ctx, cipher->encrypt,
+	    cipher->block_size, ctr,
+	    length, data, cleartext);
+
+  if (!MEMEQ(length, data, ciphertext))
+    FAIL();
+
+  memcpy(ctr, ictr, cipher->block_size);
+
+  ctr_crypt(ctx, cipher->encrypt,
+	    cipher->block_size, ctr,
+	    length, data, data);
+
+  if (!MEMEQ(length, data, cleartext))
+    FAIL();
+
+  free(ctx);
+  free(data);
+  free(ctr);
+}
+
 void
 test_cipher_stream(const struct nettle_cipher *cipher,
 		   unsigned key_length,
diff --git a/testsuite/testutils.h b/testsuite/testutils.h
index a9df1cba..46eb5c23 100644
--- a/testsuite/testutils.h
+++ b/testsuite/testutils.h
@@ -63,6 +63,15 @@ test_cipher_cbc(const struct nettle_cipher *cipher,
 		const uint8_t *ciphertext,
 		const uint8_t *iv);
 
+void
+test_cipher_ctr(const struct nettle_cipher *cipher,
+		unsigned key_length,
+		const uint8_t *key,
+		unsigned length,
+		const uint8_t *cleartext,
+		const uint8_t *ciphertext,
+		const uint8_t *iv);
+
 void
 test_cipher_stream(const struct nettle_cipher *cipher,
 		   unsigned key_length,
-- 
GitLab