blob: 58d025418574c5e328b8d7091c1eca5b23caabac [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/sha1.h"
3#include "mbedtls/sha256.h"
4#include "mbedtls/sha512.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* END_HEADER */
Paul Bakker367dae42009-06-28 21:50:27 +00006
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
Ronald Cronac6ae352020-06-26 14:33:03 +02008void mbedtls_sha1( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +00009{
Paul Bakker367dae42009-06-28 21:50:27 +000010 unsigned char output[41];
11
Paul Bakker367dae42009-06-28 21:50:27 +000012 memset(output, 0x00, 41);
13
Paul Bakker367dae42009-06-28 21:50:27 +000014
TRodziewicz26371e42021-06-08 16:45:41 +020015 TEST_ASSERT( mbedtls_sha1( src_str->x, src_str->len, output ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000016
Ronald Cronac6ae352020-06-26 14:33:03 +020017 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 20, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000018}
Paul Bakker33b43f12013-08-20 11:48:36 +020019/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000020
Tuvshinzaya Erdenekhuu1db192b2022-07-29 15:44:38 +010021/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050022void sha256_invalid_param( )
23{
24 mbedtls_sha256_context ctx;
25 unsigned char buf[64] = { 0 };
26 size_t const buflen = sizeof( buf );
27 int valid_type = 0;
28 int invalid_type = 42;
29
TRodziewicz062f3532021-05-25 15:15:57 +020030 TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020031 mbedtls_sha256_starts( &ctx, invalid_type ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050032
TRodziewicz062f3532021-05-25 15:15:57 +020033 TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020034 mbedtls_sha256( buf, buflen,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050035 buf, invalid_type ) );
36
37exit:
38 return;
39}
40/* END_CASE */
41
Mateusz Starzyke3c48b42021-04-19 16:46:28 +020042/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020043void sha224( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000044{
Paul Bakker367dae42009-06-28 21:50:27 +000045 unsigned char output[57];
46
Paul Bakker367dae42009-06-28 21:50:27 +000047 memset(output, 0x00, 57);
48
Paul Bakker367dae42009-06-28 21:50:27 +000049
TRodziewicz26371e42021-06-08 16:45:41 +020050 TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000051
Ronald Cronac6ae352020-06-26 14:33:03 +020052 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 28, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000053}
Paul Bakker33b43f12013-08-20 11:48:36 +020054/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000055
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020056/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020057void mbedtls_sha256( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000058{
Paul Bakker367dae42009-06-28 21:50:27 +000059 unsigned char output[65];
60
Paul Bakker367dae42009-06-28 21:50:27 +000061 memset(output, 0x00, 65);
62
Paul Bakker367dae42009-06-28 21:50:27 +000063
TRodziewicz26371e42021-06-08 16:45:41 +020064 TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000065
Ronald Cronac6ae352020-06-26 14:33:03 +020066 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 32, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000067}
Paul Bakker33b43f12013-08-20 11:48:36 +020068/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000069
TRodziewicz062f3532021-05-25 15:15:57 +020070/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:NOT_DEFINED */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050071void sha512_invalid_param( )
72{
73 mbedtls_sha512_context ctx;
74 unsigned char buf[64] = { 0 };
75 size_t const buflen = sizeof( buf );
76 int valid_type = 0;
77 int invalid_type = 42;
78
TRodziewicz062f3532021-05-25 15:15:57 +020079 TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020080 mbedtls_sha512_starts( &ctx, invalid_type ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050081
TRodziewicz062f3532021-05-25 15:15:57 +020082 TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020083 mbedtls_sha512( buf, buflen,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050084 buf, invalid_type ) );
85
86exit:
87 return;
88}
89/* END_CASE */
90
Mateusz Starzykc6d94ab2021-05-19 13:31:59 +020091/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020092void sha384( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000093{
Paul Bakker367dae42009-06-28 21:50:27 +000094 unsigned char output[97];
95
Paul Bakker367dae42009-06-28 21:50:27 +000096 memset(output, 0x00, 97);
97
Paul Bakker367dae42009-06-28 21:50:27 +000098
TRodziewicz26371e42021-06-08 16:45:41 +020099 TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000100
Ronald Cronac6ae352020-06-26 14:33:03 +0200101 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 48, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000102}
Paul Bakker33b43f12013-08-20 11:48:36 +0200103/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000104
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200105/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Ronald Cronac6ae352020-06-26 14:33:03 +0200106void mbedtls_sha512( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +0000107{
Paul Bakker367dae42009-06-28 21:50:27 +0000108 unsigned char output[129];
109
Paul Bakker367dae42009-06-28 21:50:27 +0000110 memset(output, 0x00, 129);
111
Paul Bakker367dae42009-06-28 21:50:27 +0000112
TRodziewicz26371e42021-06-08 16:45:41 +0200113 TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000114
Ronald Cronac6ae352020-06-26 14:33:03 +0200115 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 64, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000116}
Paul Bakker33b43f12013-08-20 11:48:36 +0200117/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000118
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200119/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100120void sha1_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000121{
Andres AG93012e82016-09-09 09:10:28 +0100122 TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000123}
Paul Bakker33b43f12013-08-20 11:48:36 +0200124/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000125
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200126/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100127void sha256_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000128{
Andres AG93012e82016-09-09 09:10:28 +0100129 TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000130}
Paul Bakker33b43f12013-08-20 11:48:36 +0200131/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000132
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200133/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100134void sha512_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000135{
Andres AG93012e82016-09-09 09:10:28 +0100136 TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000137}
Paul Bakker33b43f12013-08-20 11:48:36 +0200138/* END_CASE */