diff mbox

[v1] crypto: cunit test suite for rng

Message ID 1417080016-13487-1-git-send-email-alexandru.badicioiu@linaro.org
State New
Headers show

Commit Message

Alexandru Badicioiu Nov. 27, 2014, 9:20 a.m. UTC
From: Alexandru Badicioiu <alexandru.badicioiu@linaro.org>

Signed-off-by: Alexandru Badicioiu <alexandru.badicioiu@linaro.org>
---
 test/validation/Makefile.am                  |    1 +
 test/validation/crypto/odp_crypto_test_rng.c |   30 ++++++++++++++++++++++++++
 test/validation/crypto/odp_crypto_test_rng.h |   17 ++++++++++++++
 test/validation/crypto/test_vectors.h        |   23 +++++++++++--------
 test/validation/odp_crypto.c                 |    2 +
 5 files changed, 63 insertions(+), 10 deletions(-)
 create mode 100644 test/validation/crypto/odp_crypto_test_rng.c
 create mode 100644 test/validation/crypto/odp_crypto_test_rng.h

Comments

Maxim Uvarov Nov. 28, 2014, 11:25 p.m. UTC | #1
On 11/27/2014 12:20 PM, alexandru.badicioiu@linaro.org wrote:
> -static uint8_t tdes_cbc_reference_key[][TDES_CBC_KEY_LEN] = {
> +static uint8_t tdes_cbc_reference_key[][TDES_CBC_KEY_LEN] TEST_UNUSED = {
>   	{0x62, 0x7f, 0x46, 0x0e, 0x08, 0x10, 0x4a, 0x10, 0x43, 0xcd, 0x26, 0x5d,
>   	 0x58, 0x40, 0xea, 0xf1, 0x31, 0x3e, 0xdf, 0x97, 0xdf, 0x2a, 0x8a, 0x8c,
>   	 },

__unused__ here to make it compile for rnd test which do not use it. And 
also compile
for other tests which do use this def. That looks not really well. At 
least it's confusing
or it used or not.

a) can all unused go to separate header file, which is not included in rnd?
b) if not. How about adding ifdef for such things?

Maxim.
diff mbox

Patch

diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
index 0b831d0..52dbd50 100644
--- a/test/validation/Makefile.am
+++ b/test/validation/Makefile.am
@@ -17,4 +17,5 @@  dist_odp_init_SOURCES = odp_init.c
 dist_odp_queue_SOURCES = odp_queue.c
 dist_odp_crypto_SOURCES = crypto/odp_crypto_test_async_inp.c \
 			  crypto/odp_crypto_test_sync_inp.c \
+			  crypto/odp_crypto_test_rng.c \
 			  odp_crypto.c
diff --git a/test/validation/crypto/odp_crypto_test_rng.c b/test/validation/crypto/odp_crypto_test_rng.c
new file mode 100644
index 0000000..3037877
--- /dev/null
+++ b/test/validation/crypto/odp_crypto_test_rng.c
@@ -0,0 +1,30 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+#include <odp.h>
+#include "CUnit/Basic.h"
+#include "CUnit/TestDB.h"
+#include "test_vectors.h"
+
+/*
+ * This test verifies that HW random number generator is able
+ * to produce an IV for TDES_CBC cipher algorithm.
+ * */
+#define RNG_GET_SIZE	"RNG_GET_SIZE"
+static void rng_get_size(void)
+{
+	int ret;
+	size_t len = TDES_CBC_IV_LEN;
+	uint8_t buf[TDES_CBC_IV_LEN];
+
+	ret = odp_hw_random_get(buf, &len, false);
+	CU_ASSERT(!ret);
+	CU_ASSERT(len == TDES_CBC_IV_LEN);
+}
+
+CU_TestInfo test_rng[] = {
+	{ RNG_GET_SIZE, rng_get_size },
+	CU_TEST_INFO_NULL,
+};
diff --git a/test/validation/crypto/odp_crypto_test_rng.h b/test/validation/crypto/odp_crypto_test_rng.h
new file mode 100644
index 0000000..16909b3
--- /dev/null
+++ b/test/validation/crypto/odp_crypto_test_rng.h
@@ -0,0 +1,17 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+#ifndef ODP_CRYPTO_TEST_RNG_
+#define ODP_CRYPTO_TEST_RNG_
+
+#include "CUnit/TestDB.h"
+
+/* Suite name */
+#define ODP_CRYPTO_RNG    "ODP_CRYPTO_RNG"
+
+/* Suite test array */
+extern CU_TestInfo test_rng[];
+
+#endif
diff --git a/test/validation/crypto/test_vectors.h b/test/validation/crypto/test_vectors.h
index c151952..5719d1f 100644
--- a/test/validation/crypto/test_vectors.h
+++ b/test/validation/crypto/test_vectors.h
@@ -4,7 +4,7 @@ 
  * SPDX-License-Identifier:	BSD-3-Clause
  */
 
-
+#define TEST_UNUSED	__attribute__((unused))
 /* TDES-CBC reference vectors, according to
  * "http://csrc.nist.gov/groups/STM/cavp/documents/des/DESMMT.pdf"
  */
@@ -13,7 +13,7 @@ 
 #define TDES_CBC_IV_LEN		8	/* IV length(in bytes) for tdes-cbc */
 #define TDES_CBC_MAX_DATA_LEN	16	/* max. plain text length(in bytes) */
 
-static uint8_t tdes_cbc_reference_key[][TDES_CBC_KEY_LEN] = {
+static uint8_t tdes_cbc_reference_key[][TDES_CBC_KEY_LEN] TEST_UNUSED = {
 	{0x62, 0x7f, 0x46, 0x0e, 0x08, 0x10, 0x4a, 0x10, 0x43, 0xcd, 0x26, 0x5d,
 	 0x58, 0x40, 0xea, 0xf1, 0x31, 0x3e, 0xdf, 0x97, 0xdf, 0x2a, 0x8a, 0x8c,
 	 },
@@ -22,23 +22,25 @@  static uint8_t tdes_cbc_reference_key[][TDES_CBC_KEY_LEN] = {
 	 0x31, 0xcb, 0xb3, 0x85, 0x5e, 0x7f, 0xd3, 0x6d, 0xc8, 0x70, 0xbf, 0xae}
 };
 
-static uint8_t tdes_cbc_reference_iv[][TDES_CBC_IV_LEN] = {
+static uint8_t tdes_cbc_reference_iv[][TDES_CBC_IV_LEN] TEST_UNUSED = {
 	{0x8e, 0x29, 0xf7, 0x5e, 0xa7, 0x7e, 0x54, 0x75},
 
 	{0x3d, 0x1d, 0xe3, 0xcc, 0x13, 0x2e, 0x3b, 0x65}
 };
 
 /** length in bytes */
-static uint32_t tdes_cbc_reference_length[] = { 8, 16 };
+static uint32_t tdes_cbc_reference_length[] TEST_UNUSED = { 8, 16 };
 
-static uint8_t tdes_cbc_reference_plaintext[][TDES_CBC_MAX_DATA_LEN] = {
+static uint8_t
+tdes_cbc_reference_plaintext[][TDES_CBC_MAX_DATA_LEN] TEST_UNUSED = {
 	{0x32, 0x6a, 0x49, 0x4c, 0xd3, 0x3f, 0xe7, 0x56},
 
 	{0x84, 0x40, 0x1f, 0x78, 0xfe, 0x6c, 0x10, 0x87, 0x6d, 0x8e, 0xa2, 0x30,
 	 0x94, 0xea, 0x53, 0x09}
 };
 
-static uint8_t tdes_cbc_reference_ciphertext[][TDES_CBC_MAX_DATA_LEN] = {
+static uint8_t
+tdes_cbc_reference_ciphertext[][TDES_CBC_MAX_DATA_LEN] TEST_UNUSED = {
 	{0xb2, 0x2b, 0x8d, 0x66, 0xde, 0x97, 0x06, 0x92},
 
 	{0x7b, 0x1f, 0x7c, 0x7e, 0x3b, 0x1c, 0x94, 0x8e, 0xbd, 0x04, 0xa7, 0x5f,
@@ -52,7 +54,7 @@  static uint8_t tdes_cbc_reference_ciphertext[][TDES_CBC_MAX_DATA_LEN] = {
 #define HMAC_MD5_DIGEST_LEN	16
 #define HMAC_MD5_96_CHECK_LEN	12
 
-static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
+static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] TEST_UNUSED = {
 	{ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
 	  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b } ,
 
@@ -63,9 +65,10 @@  static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
 	  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa }
 };
 
-static uint32_t hmac_md5_reference_length[] = { 8, 28, 50 };
+static uint32_t hmac_md5_reference_length[] TEST_UNUSED = { 8, 28, 50 };
 
-static uint8_t hmac_md5_reference_plaintext[][HMAC_MD5_MAX_DATA_LEN] = {
+static uint8_t
+hmac_md5_reference_plaintext[][HMAC_MD5_MAX_DATA_LEN] TEST_UNUSED = {
 	/* "Hi There" */
 	{ 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65},
 
@@ -82,7 +85,7 @@  static uint8_t hmac_md5_reference_plaintext[][HMAC_MD5_MAX_DATA_LEN] = {
 	  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd }
 };
 
-static uint8_t hmac_md5_reference_digest[][HMAC_MD5_DIGEST_LEN] = {
+static uint8_t hmac_md5_reference_digest[][HMAC_MD5_DIGEST_LEN] TEST_UNUSED = {
 	{ 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c,
 	  0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d },
 
diff --git a/test/validation/odp_crypto.c b/test/validation/odp_crypto.c
index 9342aca..81343a9 100644
--- a/test/validation/odp_crypto.c
+++ b/test/validation/odp_crypto.c
@@ -9,6 +9,7 @@ 
 #include "CUnit/TestDB.h"
 #include "odp_crypto_test_async_inp.h"
 #include "odp_crypto_test_sync_inp.h"
+#include "odp_crypto_test_rng.h"
 
 #define SHM_PKT_POOL_SIZE	(512*2048*2)
 #define SHM_PKT_POOL_BUF_SIZE	(1024 * 32)
@@ -26,6 +27,7 @@  static int init_suite(void)
 CU_SuiteInfo suites[] = {
 	{ODP_CRYPTO_SYNC_INP, init_suite, NULL, NULL, NULL, test_array_sync },
 	{ODP_CRYPTO_ASYNC_INP, init_suite, NULL, NULL, NULL, test_array_async },
+	{ODP_CRYPTO_RNG, init_suite, NULL, NULL, NULL, test_rng },
 	CU_SUITE_INFO_NULL,
 };