blob: aebfd84a8238913c9ba8ca2142255a85076528bb [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 );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050027 int invalid_type = 42;
28
TRodziewicz062f3532021-05-25 15:15:57 +020029 TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020030 mbedtls_sha256_starts( &ctx, invalid_type ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050031
TRodziewicz062f3532021-05-25 15:15:57 +020032 TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020033 mbedtls_sha256( buf, buflen,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050034 buf, invalid_type ) );
35
36exit:
37 return;
38}
39/* END_CASE */
40
Mateusz Starzyke3c48b42021-04-19 16:46:28 +020041/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020042void sha224( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000043{
Paul Bakker367dae42009-06-28 21:50:27 +000044 unsigned char output[57];
45
Paul Bakker367dae42009-06-28 21:50:27 +000046 memset(output, 0x00, 57);
47
Paul Bakker367dae42009-06-28 21:50:27 +000048
TRodziewicz26371e42021-06-08 16:45:41 +020049 TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000050
Ronald Cronac6ae352020-06-26 14:33:03 +020051 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 28, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000052}
Paul Bakker33b43f12013-08-20 11:48:36 +020053/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000054
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020055/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020056void mbedtls_sha256( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000057{
Paul Bakker367dae42009-06-28 21:50:27 +000058 unsigned char output[65];
59
Paul Bakker367dae42009-06-28 21:50:27 +000060 memset(output, 0x00, 65);
61
Paul Bakker367dae42009-06-28 21:50:27 +000062
TRodziewicz26371e42021-06-08 16:45:41 +020063 TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000064
Ronald Cronac6ae352020-06-26 14:33:03 +020065 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 32, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000066}
Paul Bakker33b43f12013-08-20 11:48:36 +020067/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000068
Tuvshinzaya Erdenekhuuca6fde22022-07-29 15:43:04 +010069/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050070void sha512_invalid_param( )
71{
72 mbedtls_sha512_context ctx;
73 unsigned char buf[64] = { 0 };
74 size_t const buflen = sizeof( buf );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050075 int invalid_type = 42;
76
TRodziewicz062f3532021-05-25 15:15:57 +020077 TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020078 mbedtls_sha512_starts( &ctx, invalid_type ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050079
TRodziewicz062f3532021-05-25 15:15:57 +020080 TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
TRodziewicz26371e42021-06-08 16:45:41 +020081 mbedtls_sha512( buf, buflen,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050082 buf, invalid_type ) );
83
84exit:
85 return;
86}
87/* END_CASE */
88
Mateusz Starzykc6d94ab2021-05-19 13:31:59 +020089/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
Ronald Cronac6ae352020-06-26 14:33:03 +020090void sha384( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +000091{
Paul Bakker367dae42009-06-28 21:50:27 +000092 unsigned char output[97];
93
Paul Bakker367dae42009-06-28 21:50:27 +000094 memset(output, 0x00, 97);
95
Paul Bakker367dae42009-06-28 21:50:27 +000096
TRodziewicz26371e42021-06-08 16:45:41 +020097 TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000098
Ronald Cronac6ae352020-06-26 14:33:03 +020099 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 48, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000100}
Paul Bakker33b43f12013-08-20 11:48:36 +0200101/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000102
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200103/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Ronald Cronac6ae352020-06-26 14:33:03 +0200104void mbedtls_sha512( data_t * src_str, data_t * hash )
Paul Bakker367dae42009-06-28 21:50:27 +0000105{
Paul Bakker367dae42009-06-28 21:50:27 +0000106 unsigned char output[129];
107
Paul Bakker367dae42009-06-28 21:50:27 +0000108 memset(output, 0x00, 129);
109
Paul Bakker367dae42009-06-28 21:50:27 +0000110
TRodziewicz26371e42021-06-08 16:45:41 +0200111 TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000112
Ronald Cronac6ae352020-06-26 14:33:03 +0200113 TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 64, hash->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000114}
Paul Bakker33b43f12013-08-20 11:48:36 +0200115/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000116
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200117/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100118void sha1_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000119{
Andres AG93012e82016-09-09 09:10:28 +0100120 TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000121}
Paul Bakker33b43f12013-08-20 11:48:36 +0200122/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000123
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200124/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100125void sha256_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000126{
Andres AG93012e82016-09-09 09:10:28 +0100127 TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000128}
Paul Bakker33b43f12013-08-20 11:48:36 +0200129/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000130
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200131/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100132void sha512_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000133{
Andres AG93012e82016-09-09 09:10:28 +0100134 TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000135}
Paul Bakker33b43f12013-08-20 11:48:36 +0200136/* END_CASE */