diff mbox

[v2] crypto: cunit test suite for rng

Message ID 1417514568-1356-1-git-send-email-alexandru.badicioiu@linaro.org
State Accepted
Commit 504b93ba7b3af4cad148e0ae378d08183fe652f8
Headers show

Commit Message

Alexandru Badicioiu Dec. 2, 2014, 10:02 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/crypto/test_vectors_len.h    |   21 ++++++++++++++++++
 test/validation/odp_crypto.c                 |    2 +
 6 files changed, 78 insertions(+), 16 deletions(-)
 create mode 100644 test/validation/crypto/odp_crypto_test_rng.c
 create mode 100644 test/validation/crypto/odp_crypto_test_rng.h
 create mode 100644 test/validation/crypto/test_vectors_len.h

Comments

Mike Holmes Dec. 2, 2014, 9:44 p.m. UTC | #1
On 2 December 2014 at 05:02, <alexandru.badicioiu@linaro.org> wrote:

> From: Alexandru Badicioiu <alexandru.badicioiu@linaro.org>
>
> Signed-off-by: Alexandru Badicioiu <alexandru.badicioiu@linaro.org>
>

Reviewed-by: Mike Holmes <mike.holmes@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/crypto/test_vectors_len.h    |   21 ++++++++++++++++++
>  test/validation/odp_crypto.c                 |    2 +
>  6 files changed, 78 insertions(+), 16 deletions(-)
>  create mode 100644 test/validation/crypto/odp_crypto_test_rng.c
>  create mode 100644 test/validation/crypto/odp_crypto_test_rng.h
>  create mode 100644 test/validation/crypto/test_vectors_len.h
>
> 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..2898cb1
> --- /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_len.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..369fc16 100644
> --- a/test/validation/crypto/test_vectors.h
> +++ b/test/validation/crypto/test_vectors.h
> @@ -4,15 +4,10 @@
>   * SPDX-License-Identifier:    BSD-3-Clause
>   */
>
> -
> +#include "test_vectors_len.h"
>  /* TDES-CBC reference vectors, according to
>   * "http://csrc.nist.gov/groups/STM/cavp/documents/des/DESMMT.pdf"
>   */
> -
> -#define TDES_CBC_KEY_LEN       24      /* key length(in bytes) for
> tdes-cbc */
> -#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] = {
>         {0x62, 0x7f, 0x46, 0x0e, 0x08, 0x10, 0x4a, 0x10, 0x43, 0xcd, 0x26,
> 0x5d,
>          0x58, 0x40, 0xea, 0xf1, 0x31, 0x3e, 0xdf, 0x97, 0xdf, 0x2a, 0x8a,
> 0x8c,
> @@ -31,27 +26,22 @@ static uint8_t
> tdes_cbc_reference_iv[][TDES_CBC_IV_LEN] = {
>  /** length in bytes */
>  static uint32_t tdes_cbc_reference_length[] = { 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] = {
>         {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] = {
>         {0xb2, 0x2b, 0x8d, 0x66, 0xde, 0x97, 0x06, 0x92},
>
>         {0x7b, 0x1f, 0x7c, 0x7e, 0x3b, 0x1c, 0x94, 0x8e, 0xbd, 0x04, 0xa7,
> 0x5f,
>          0xfb, 0xa7, 0xd2, 0xf5}
>  };
>
> -
> -/* HMAC-MD5 test vectors  - RFC2104 */
> -#define HMAC_MD5_KEY_LEN       16
> -#define HMAC_MD5_MAX_DATA_LEN  128
> -#define HMAC_MD5_DIGEST_LEN    16
> -#define HMAC_MD5_96_CHECK_LEN  12
> -
>  static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
>         { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
>           0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b } ,
> @@ -65,7 +55,8 @@ static uint8_t
> hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
>
>  static uint32_t hmac_md5_reference_length[] = { 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] = {
>         /* "Hi There" */
>         { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65},
>
> diff --git a/test/validation/crypto/test_vectors_len.h
> b/test/validation/crypto/test_vectors_len.h
> new file mode 100644
> index 0000000..8c83ba1
> --- /dev/null
> +++ b/test/validation/crypto/test_vectors_len.h
> @@ -0,0 +1,21 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +#ifndef TEST_VECTORS_LEN_
> +#define TEST_VECTORS_LEN_
> +
> +/* TDES-CBC */
> +#define TDES_CBC_KEY_LEN        24
> +#define TDES_CBC_IV_LEN         8
> +#define TDES_CBC_MAX_DATA_LEN   16
> +
> +
> +/* HMAC-MD5 */
> +#define HMAC_MD5_KEY_LEN        16
> +#define HMAC_MD5_MAX_DATA_LEN   128
> +#define HMAC_MD5_DIGEST_LEN     16
> +#define HMAC_MD5_96_CHECK_LEN   12
> +
> +#endif
> 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,
>  };
>
> --
> 1.7.3.4
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
Maxim Uvarov Dec. 3, 2014, 12:47 p.m. UTC | #2
Merged, thanks!

Maxim.

On 12/03/2014 12:44 AM, Mike Holmes wrote:
>
>
> On 2 December 2014 at 05:02, <alexandru.badicioiu@linaro.org 
> <mailto:alexandru.badicioiu@linaro.org>> wrote:
>
>     From: Alexandru Badicioiu <alexandru.badicioiu@linaro.org
>     <mailto:alexandru.badicioiu@linaro.org>>
>
>     Signed-off-by: Alexandru Badicioiu <alexandru.badicioiu@linaro.org
>     <mailto:alexandru.badicioiu@linaro.org>>
>
>
> Reviewed-by: Mike Holmes <mike.holmes@linaro.org 
> <mailto:mike.holmes@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/crypto/test_vectors_len.h    |   21
>     ++++++++++++++++++
>      test/validation/odp_crypto.c                 |    2 +
>      6 files changed, 78 insertions(+), 16 deletions(-)
>      create mode 100644 test/validation/crypto/odp_crypto_test_rng.c
>      create mode 100644 test/validation/crypto/odp_crypto_test_rng.h
>      create mode 100644 test/validation/crypto/test_vectors_len.h
>
>     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..2898cb1
>     --- /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_len.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..369fc16 100644
>     --- a/test/validation/crypto/test_vectors.h
>     +++ b/test/validation/crypto/test_vectors.h
>     @@ -4,15 +4,10 @@
>       * SPDX-License-Identifier:    BSD-3-Clause
>       */
>
>     -
>     +#include "test_vectors_len.h"
>      /* TDES-CBC reference vectors, according to
>       * "http://csrc.nist.gov/groups/STM/cavp/documents/des/DESMMT.pdf"
>       */
>     -
>     -#define TDES_CBC_KEY_LEN       24      /* key length(in bytes)
>     for tdes-cbc */
>     -#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] = {
>             {0x62, 0x7f, 0x46, 0x0e, 0x08, 0x10, 0x4a, 0x10, 0x43,
>     0xcd, 0x26, 0x5d,
>              0x58, 0x40, 0xea, 0xf1, 0x31, 0x3e, 0xdf, 0x97, 0xdf,
>     0x2a, 0x8a, 0x8c,
>     @@ -31,27 +26,22 @@ static uint8_t
>     tdes_cbc_reference_iv[][TDES_CBC_IV_LEN] = {
>      /** length in bytes */
>      static uint32_t tdes_cbc_reference_length[] = { 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] = {
>             {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] = {
>             {0xb2, 0x2b, 0x8d, 0x66, 0xde, 0x97, 0x06, 0x92},
>
>             {0x7b, 0x1f, 0x7c, 0x7e, 0x3b, 0x1c, 0x94, 0x8e, 0xbd,
>     0x04, 0xa7, 0x5f,
>              0xfb, 0xa7, 0xd2, 0xf5}
>      };
>
>     -
>     -/* HMAC-MD5 test vectors  - RFC2104 */
>     -#define HMAC_MD5_KEY_LEN       16
>     -#define HMAC_MD5_MAX_DATA_LEN  128
>     -#define HMAC_MD5_DIGEST_LEN    16
>     -#define HMAC_MD5_96_CHECK_LEN  12
>     -
>      static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
>             { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
>               0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b } ,
>     @@ -65,7 +55,8 @@ static uint8_t
>     hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
>
>      static uint32_t hmac_md5_reference_length[] = { 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] = {
>             /* "Hi There" */
>             { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65},
>
>     diff --git a/test/validation/crypto/test_vectors_len.h
>     b/test/validation/crypto/test_vectors_len.h
>     new file mode 100644
>     index 0000000..8c83ba1
>     --- /dev/null
>     +++ b/test/validation/crypto/test_vectors_len.h
>     @@ -0,0 +1,21 @@
>     +/* Copyright (c) 2014, Linaro Limited
>     + * All rights reserved.
>     + *
>     + * SPDX-License-Identifier:     BSD-3-Clause
>     + */
>     +#ifndef TEST_VECTORS_LEN_
>     +#define TEST_VECTORS_LEN_
>     +
>     +/* TDES-CBC */
>     +#define TDES_CBC_KEY_LEN        24
>     +#define TDES_CBC_IV_LEN         8
>     +#define TDES_CBC_MAX_DATA_LEN   16
>     +
>     +
>     +/* HMAC-MD5 */
>     +#define HMAC_MD5_KEY_LEN        16
>     +#define HMAC_MD5_MAX_DATA_LEN   128
>     +#define HMAC_MD5_DIGEST_LEN     16
>     +#define HMAC_MD5_96_CHECK_LEN   12
>     +
>     +#endif
>     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,
>      };
>
>     --
>     1.7.3.4
>
>
>     _______________________________________________
>     lng-odp mailing list
>     lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
>     http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
>
>
> -- 
> *Mike Holmes*
> Linaro  Sr Technical Manager
> LNG - ODP
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
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..2898cb1
--- /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_len.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..369fc16 100644
--- a/test/validation/crypto/test_vectors.h
+++ b/test/validation/crypto/test_vectors.h
@@ -4,15 +4,10 @@ 
  * SPDX-License-Identifier:	BSD-3-Clause
  */
 
-
+#include "test_vectors_len.h"
 /* TDES-CBC reference vectors, according to
  * "http://csrc.nist.gov/groups/STM/cavp/documents/des/DESMMT.pdf"
  */
-
-#define TDES_CBC_KEY_LEN	24	/* key length(in bytes) for tdes-cbc */
-#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] = {
 	{0x62, 0x7f, 0x46, 0x0e, 0x08, 0x10, 0x4a, 0x10, 0x43, 0xcd, 0x26, 0x5d,
 	 0x58, 0x40, 0xea, 0xf1, 0x31, 0x3e, 0xdf, 0x97, 0xdf, 0x2a, 0x8a, 0x8c,
@@ -31,27 +26,22 @@  static uint8_t tdes_cbc_reference_iv[][TDES_CBC_IV_LEN] = {
 /** length in bytes */
 static uint32_t tdes_cbc_reference_length[] = { 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] = {
 	{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] = {
 	{0xb2, 0x2b, 0x8d, 0x66, 0xde, 0x97, 0x06, 0x92},
 
 	{0x7b, 0x1f, 0x7c, 0x7e, 0x3b, 0x1c, 0x94, 0x8e, 0xbd, 0x04, 0xa7, 0x5f,
 	 0xfb, 0xa7, 0xd2, 0xf5}
 };
 
-
-/* HMAC-MD5 test vectors  - RFC2104 */
-#define HMAC_MD5_KEY_LEN	16
-#define HMAC_MD5_MAX_DATA_LEN	128
-#define HMAC_MD5_DIGEST_LEN	16
-#define HMAC_MD5_96_CHECK_LEN	12
-
 static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
 	{ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
 	  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b } ,
@@ -65,7 +55,8 @@  static uint8_t hmac_md5_reference_key[][HMAC_MD5_KEY_LEN] = {
 
 static uint32_t hmac_md5_reference_length[] = { 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] = {
 	/* "Hi There" */
 	{ 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65},
 
diff --git a/test/validation/crypto/test_vectors_len.h b/test/validation/crypto/test_vectors_len.h
new file mode 100644
index 0000000..8c83ba1
--- /dev/null
+++ b/test/validation/crypto/test_vectors_len.h
@@ -0,0 +1,21 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+#ifndef TEST_VECTORS_LEN_
+#define TEST_VECTORS_LEN_
+
+/* TDES-CBC */
+#define TDES_CBC_KEY_LEN        24
+#define TDES_CBC_IV_LEN         8
+#define TDES_CBC_MAX_DATA_LEN   16
+
+
+/* HMAC-MD5 */
+#define HMAC_MD5_KEY_LEN        16
+#define HMAC_MD5_MAX_DATA_LEN   128
+#define HMAC_MD5_DIGEST_LEN     16
+#define HMAC_MD5_96_CHECK_LEN   12
+
+#endif
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,
 };