blob: 60dd3c873c6b4446354f9d407286a74feba4505b [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 */
Gilles Peskine449bd832023-01-11 14:50:10 +01008void 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
Gilles Peskine449bd832023-01-11 14:50:10 +010015 TEST_ASSERT(mbedtls_sha1(src_str->x, src_str->len, output) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +000016
Gilles Peskine449bd832023-01-11 14:50:10 +010017 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 */
Gilles Peskine449bd832023-01-11 14:50:10 +010022void sha256_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050023{
24 mbedtls_sha256_context ctx;
25 unsigned char buf[64] = { 0 };
Gilles Peskine449bd832023-01-11 14:50:10 +010026 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050027 int invalid_type = 42;
28
Gilles Peskine449bd832023-01-11 14:50:10 +010029 TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
30 mbedtls_sha256_starts(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050031
Gilles Peskine449bd832023-01-11 14:50:10 +010032 TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
33 mbedtls_sha256(buf, buflen,
34 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050035
36exit:
37 return;
38}
39/* END_CASE */
40
Mateusz Starzyke3c48b42021-04-19 16:46:28 +020041/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010042void 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
Gilles Peskine449bd832023-01-11 14:50:10 +010049 TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 1), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000050
Gilles Peskine449bd832023-01-11 14:50:10 +010051 TEST_EQUAL(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 */
Gilles Peskine449bd832023-01-11 14:50:10 +010056void 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
Gilles Peskine449bd832023-01-11 14:50:10 +010063 TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 0), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000064
Gilles Peskine449bd832023-01-11 14:50:10 +010065 TEST_EQUAL(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 */
Gilles Peskine449bd832023-01-11 14:50:10 +010070void sha512_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050071{
72 mbedtls_sha512_context ctx;
73 unsigned char buf[64] = { 0 };
Gilles Peskine449bd832023-01-11 14:50:10 +010074 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050075 int invalid_type = 42;
76
Gilles Peskine449bd832023-01-11 14:50:10 +010077 TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
78 mbedtls_sha512_starts(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050079
Gilles Peskine449bd832023-01-11 14:50:10 +010080 TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
81 mbedtls_sha512(buf, buflen,
82 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050083
84exit:
85 return;
86}
87/* END_CASE */
88
Mateusz Starzykc6d94ab2021-05-19 13:31:59 +020089/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010090void 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
Gilles Peskine449bd832023-01-11 14:50:10 +010097 TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 1), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000098
Gilles Peskine449bd832023-01-11 14:50:10 +010099 TEST_EQUAL(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 */
Gilles Peskine449bd832023-01-11 14:50:10 +0100104void 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
Gilles Peskine449bd832023-01-11 14:50:10 +0100111 TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 0), 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000112
Gilles Peskine449bd832023-01-11 14:50:10 +0100113 TEST_EQUAL(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 */
Gilles Peskine449bd832023-01-11 14:50:10 +0100118void sha1_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000119{
Gilles Peskine449bd832023-01-11 14:50:10 +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
Valerio Setti46e8fd82022-12-14 10:58:02 +0100124/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100125void sha224_selftest()
Valerio Setti46e8fd82022-12-14 10:58:02 +0100126{
Gilles Peskine449bd832023-01-11 14:50:10 +0100127 TEST_EQUAL(mbedtls_sha224_self_test(1), 0);
Valerio Setti46e8fd82022-12-14 10:58:02 +0100128}
129/* END_CASE */
130
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200131/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100132void sha256_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000133{
Gilles Peskine449bd832023-01-11 14:50:10 +0100134 TEST_EQUAL(mbedtls_sha256_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000135}
Paul Bakker33b43f12013-08-20 11:48:36 +0200136/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000137
Valerio Setti898e7a32022-12-14 08:55:53 +0100138/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100139void sha384_selftest()
Valerio Setti898e7a32022-12-14 08:55:53 +0100140{
Gilles Peskine449bd832023-01-11 14:50:10 +0100141 TEST_EQUAL(mbedtls_sha384_self_test(1), 0);
Valerio Setti898e7a32022-12-14 08:55:53 +0100142}
143/* END_CASE */
144
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200145/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100146void sha512_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000147{
Gilles Peskine449bd832023-01-11 14:50:10 +0100148 TEST_EQUAL(mbedtls_sha512_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000149}
Paul Bakker33b43f12013-08-20 11:48:36 +0200150/* END_CASE */