From acc3942f6fcfd525debf51cc83f6e65afb08d36d Mon Sep 17 00:00:00 2001 From: adustm Date: Tue, 6 Jun 2017 16:26:40 +0200 Subject: [PATCH] Add test of sha256_clone function --- TESTS/mbedtls/multi/main.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/TESTS/mbedtls/multi/main.cpp b/TESTS/mbedtls/multi/main.cpp index fcc0fe41d6..ce823cadcd 100644 --- a/TESTS/mbedtls/multi/main.cpp +++ b/TESTS/mbedtls/multi/main.cpp @@ -67,6 +67,8 @@ void test_case_sha256_split() { /* Tests that treating 2 sha256 objects in // does not impact the result */ void test_case_sha256_multi() { const unsigned char test_buf[] = {"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"}; + const unsigned char test_buf2[] = {"abcdefghijklmnopqrstuvwxyz012345678901234567890123456789"}; + // sha256_output_values for abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq const unsigned char test_sum1[] = { 0x24, 0x8D, 0x6A, 0x61, 0xD2, 0x06, 0x38, 0xB8, @@ -79,15 +81,23 @@ void test_case_sha256_multi() { 0x9C, 0xA2, 0x9F, 0x1F, 0xEC, 0x51, 0x15, 0x93, 0xE2, 0x81, 0xE4, 0x6A, 0x14, 0x0D, 0x81, 0xE0, 0x00, 0x5F, 0x8F, 0x68, 0x86, 0x69, 0xA0, 0x6C}; - unsigned char outsum1[32], outsum2[32]; + // sha256_output_values for abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdefghijklmnopqrstuvwxyz012345678901234567890123456789 + const unsigned char test_sum3[] = + { 0x6D, 0x5D, 0xDB, 0x5F, 0x4A, 0x94, 0xAB, 0x7E, + 0x5C, 0xF7, 0x9A, 0xD8, 0x3F, 0x58, 0xD3, 0x97, + 0xFE, 0x79, 0xFB, 0x0D, 0x79, 0xB2, 0x0D, 0x22, + 0xFF, 0x95, 0x9F, 0x04, 0xA2, 0xE4, 0x6C, 0x68}; + unsigned char outsum1[32], outsum2[32], outsum3[32]; int i; mbedtls_sha256_context ctx1; mbedtls_sha256_context ctx2; + mbedtls_sha256_context ctx3; printf("test sha256_multi\n"); //Init both contexts - mbedtls_sha256_init( &ctx1 ); - mbedtls_sha256_init( &ctx2 ); + mbedtls_sha256_init( &ctx1); + mbedtls_sha256_init( &ctx2); + mbedtls_sha256_init( &ctx3); //Start both contexts mbedtls_sha256_starts( &ctx1, 0); mbedtls_sha256_starts( &ctx2, 0); @@ -100,25 +110,36 @@ void test_case_sha256_multi() { mbedtls_sha256_finish( &ctx1, outsum1 ); printf("upd ctx2\n"); mbedtls_sha256_update( &ctx2, test_buf+66, 46 ); + printf("clone ctx2 in ctx3\n"); + mbedtls_sha256_clone(&ctx3, (const mbedtls_sha256_context *)&ctx2); printf("free ctx1\n"); mbedtls_sha256_free( &ctx1 ); printf("upd ctx2\n"); mbedtls_sha256_update( &ctx2, test_buf+112, 56 ); + printf("upd ctx3 with different values than ctx2\n"); + mbedtls_sha256_update( &ctx3, test_buf2, 56 ); printf("finish ctx2\n"); mbedtls_sha256_finish( &ctx2, outsum2 ); + printf("finish ctx3\n"); + mbedtls_sha256_finish( &ctx3, outsum3 ); printf("free ctx2\n"); mbedtls_sha256_free( &ctx2 ); - + printf("free ctx3\n"); + mbedtls_sha256_free( &ctx3 ); + printf("\nreceived result ctx1 : "); for (i=0;i<32;i++) { printf("%02X",outsum1[i]);} printf("\nawaited result : 248D6A61D20638B8E5C026930C3E6039A33CE45964FF216F6ECEDD19DB06C1\n"); // for abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq printf("\nreceived result ctx2 : "); for (i=0;i<32;i++) { printf("%02X",outsum2[i]);} printf("\nawaited result : 50EA825D9684F4229CA29F1FEC511593E281E46A140D81E0005F8F688669A06C\n"); // for 3*abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq - + printf("\nreceived result ctx3 : "); + for (i=0;i<32;i++) { printf("%02X",outsum3[i]);} + printf("\nawaited result : 6D5DDB5F4A94AB7E5CF79AD83F58D397FE79FB0D79B20D22FF959F04A2E46C68\n"); // for 2*abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq+3*0123456789 printf("\nend of test sha256\n"); TEST_ASSERT_EQUAL_UINT8_ARRAY(outsum1, test_sum1,32); TEST_ASSERT_EQUAL_UINT8_ARRAY(outsum2, test_sum2,32); + TEST_ASSERT_EQUAL_UINT8_ARRAY(outsum3, test_sum3,32); } #endif //MBEDTLS_SHA256_C