From a4edc787e4d18b9bc5a6c0a5980b02b81e5cf217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20Stro=CC=88mbergson?= Date: Mon, 2 Feb 2015 21:23:06 +0100 Subject: Completed first test program for sha256 core. --- sw/test-sha256/test-sha256.c | 222 ++++++++----------------------------------- 1 file changed, 39 insertions(+), 183 deletions(-) diff --git a/sw/test-sha256/test-sha256.c b/sw/test-sha256/test-sha256.c index 70415d8..25845d0 100644 --- a/sw/test-sha256/test-sha256.c +++ b/sw/test-sha256/test-sha256.c @@ -1,206 +1,62 @@ -//------------------------------------------------------------------------------ -// setup-eim.c -//------------------------------------------------------------------------------ - +//====================================================================== +// +// test-sha256.c +// ------------- +// test program for Cryptech Novena framwwork with EIM interface +// using the sha256 core. +// +//====================================================================== //------------------------------------------------------------------------------ // Headers //------------------------------------------------------------------------------ #include +#include #include #include "novena-eim.h" //------------------------------------------------------------------------------ -// Demo Adder +// Defines //------------------------------------------------------------------------------ -#define DEMO_ADDER_BASE_ADDR (0x3210) -#define DEMO_ADDER_REG_X (EIM_BASE_ADDR + DEMO_ADDER_BASE_ADDR + (0<<2)) -#define DEMO_ADDER_REG_Y (EIM_BASE_ADDR + DEMO_ADDER_BASE_ADDR + (1<<2)) -#define DEMO_ADDER_REG_Z (EIM_BASE_ADDR + DEMO_ADDER_BASE_ADDR + (2<<2)) -#define DEMO_ADDER_REG_SC (EIM_BASE_ADDR + DEMO_ADDER_BASE_ADDR + (3<<2)) - - -//------------------------------------------------------------------------------ -// Prototypes -//------------------------------------------------------------------------------ -unsigned int demo_adder_test_round (unsigned int, unsigned int); -unsigned int lfsr_next_x (unsigned int); -unsigned int lfsr_next_y (unsigned int); +#define SHA256_PREFIX (0x14) +#define SHA_BASE (EIM_BASE_ADDR + SHA256_PREFIX) //------------------------------------------------------------------------------ // Testing Parameters //------------------------------------------------------------------------------ -const int NUM_TEST_ROUNDS = 10000; -const int PRINT_XYZ_VALUES = 1; - - -//------------------------------------------------------------------------------ -int main() -//------------------------------------------------------------------------------ -{ - // try to setup eim (return value should be 1) - printf("Configuring EIM .. "); - int ok = eim_setup(); - if (ok < 1) - { printf("ERROR\n"); - return EXIT_FAILURE; - } - else printf("OK\n"); - - // run test - int i; - unsigned int x = 0x12341234, y = 0xABCDABCD, zyx; - printf("Testing started.\n"); - for (i=0; i>= 16; - if (sts != ctl) - { printf("ERROR: Adder timeout!\n"); - exit(EXIT_FAILURE); - } - - // read z - unsigned int z; - eim_read_32(DEMO_ADDER_REG_Z, &z); - - // uncomment to trigger an error - /** - z++; - **/ - - // done - return z; -} //------------------------------------------------------------------------------ -unsigned int lfsr_next_x(unsigned int value) +// main() //------------------------------------------------------------------------------ +int main() { - // - // [32, 31, 29, 28, 27, 25, 24, 23, 21, 19, 17, 14, 10, 6, 4, 2] - // 0 1 3 4 5 7 8 9 11 13 15 18 22 24 28 30 - // - - unsigned int carry = 0; - - carry ^= (value >> 0); - carry ^= (value >> 1); - carry ^= (value >> 3); - carry ^= (value >> 4); - - carry ^= (value >> 5); - carry ^= (value >> 7); - carry ^= (value >> 8); - carry ^= (value >> 9); - - carry ^= (value >> 11); - carry ^= (value >> 13); - carry ^= (value >> 15); - carry ^= (value >> 18); - - carry ^= (value >> 22); - carry ^= (value >> 24); - carry ^= (value >> 28); - carry ^= (value >> 30); - - value >>= 1, value |= (carry << 31); - - return value; + unsigned int read_addr; + unsigned int read_data; + + // try to setup eim (return value should be 1) + printf("Configuring EIM .. "); + int ok = eim_setup(); + if (ok < 1) { + printf("ERROR\n"); + return EXIT_FAILURE; + } + else { + printf("EIM Setup ok.\n"); + } + + // Dump register contents. See if we have the core. + for (unsigned int i = 0 ; i < 100 ; i += 3) { + read_addr = SHA_BASE + i; + eim_read_32(read_addr, &read_data); + printf("address 0x%08x = 0x%08x\n", read_addr, read_data); + } + + return 0; } - -//------------------------------------------------------------------------------ -unsigned int lfsr_next_y(unsigned int value) -//------------------------------------------------------------------------------ -{ - // - // [32, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 1] - // 0 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 - // - - unsigned int carry = 0; - - carry ^= (value >> 0); - carry ^= (value >> 15); - carry ^= (value >> 16); - carry ^= (value >> 17); - - carry ^= (value >> 18); - carry ^= (value >> 19); - carry ^= (value >> 20); - carry ^= (value >> 21); - - carry ^= (value >> 22); - carry ^= (value >> 23); - carry ^= (value >> 24); - carry ^= (value >> 25); - - carry ^= (value >> 26); - carry ^= (value >> 27); - carry ^= (value >> 28); - carry ^= (value >> 31); - - value >>= 1, value |= (carry << 31); - - return value; -} - - - -//------------------------------------------------------------------------------ -// End-of-File -//------------------------------------------------------------------------------ +//====================================================================== +// EOF test-sha256.c +//====================================================================== -- cgit v1.2.3