1/* BEGIN_HEADER */
2#include "mbedtls/sha1.h"
3#include "mbedtls/sha256.h"
4#include "mbedtls/sha512.h"
5/* END_HEADER */
6
7/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
8void mbedtls_sha1( data_t * src_str, data_t * hash )
9{
10    unsigned char output[41];
11
12    memset(output, 0x00, 41);
13
14
15    TEST_ASSERT( mbedtls_sha1( src_str->x, src_str->len, output ) == 0 );
16
17    TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 20, hash->len ) == 0 );
18}
19/* END_CASE */
20
21/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:NOT_DEFINED */
22void 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
30    TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
31                            mbedtls_sha256_starts( &ctx, invalid_type ) );
32
33    TEST_EQUAL( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
34                            mbedtls_sha256( buf, buflen,
35                                                buf, invalid_type ) );
36
37exit:
38    return;
39}
40/* END_CASE */
41
42/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
43void sha224( data_t * src_str, data_t * hash )
44{
45    unsigned char output[57];
46
47    memset(output, 0x00, 57);
48
49
50    TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 1 ) == 0 );
51
52    TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 28, hash->len ) == 0 );
53}
54/* END_CASE */
55
56/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
57void mbedtls_sha256( data_t * src_str, data_t * hash )
58{
59    unsigned char output[65];
60
61    memset(output, 0x00, 65);
62
63
64    TEST_ASSERT( mbedtls_sha256( src_str->x, src_str->len, output, 0 ) == 0 );
65
66    TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 32, hash->len ) == 0 );
67}
68/* END_CASE */
69
70/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:NOT_DEFINED */
71void 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
79    TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
80                            mbedtls_sha512_starts( &ctx, invalid_type ) );
81
82    TEST_EQUAL( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
83                            mbedtls_sha512( buf, buflen,
84                                                buf, invalid_type ) );
85
86exit:
87    return;
88}
89/* END_CASE */
90
91/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
92void sha384( data_t * src_str, data_t * hash )
93{
94    unsigned char output[97];
95
96    memset(output, 0x00, 97);
97
98
99    TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 1 ) == 0 );
100
101    TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 48, hash->len ) == 0 );
102}
103/* END_CASE */
104
105/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
106void mbedtls_sha512( data_t * src_str, data_t * hash )
107{
108    unsigned char output[129];
109
110    memset(output, 0x00, 129);
111
112
113    TEST_ASSERT( mbedtls_sha512( src_str->x, src_str->len, output, 0 ) == 0 );
114
115    TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 64, hash->len ) == 0 );
116}
117/* END_CASE */
118
119/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
120void sha1_selftest(  )
121{
122    TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 );
123}
124/* END_CASE */
125
126/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
127void sha256_selftest(  )
128{
129    TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 );
130}
131/* END_CASE */
132
133/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
134void sha512_selftest(  )
135{
136    TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 );
137}
138/* END_CASE */
139