blob: 9711a9abaef22bd3d5e22430dd93d53861fe6705 [file] [log] [blame]
Igor Opaniuk136644a2016-09-13 13:40:56 +03001/*
2 * Copyright (c) 2015, Linaro Limited
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License Version 2 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include <stdio.h>
15#include <stdlib.h>
16#include <string.h>
17
18#include "xtest_test.h"
19#include "xtest_helpers.h"
20
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030021#include <crypto_common.h>
Igor Opaniuk136644a2016-09-13 13:40:56 +030022#include <util.h>
23
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030024/* SHA bechmarks */
Igor Opaniuk136644a2016-09-13 13:40:56 +030025static void xtest_tee_benchmark_2001(ADBG_Case_t *Case_p);
26static void xtest_tee_benchmark_2002(ADBG_Case_t *Case_p);
27
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030028/* AES benchmarks */
29static void xtest_tee_benchmark_2011(ADBG_Case_t *Case_p);
30static void xtest_tee_benchmark_2012(ADBG_Case_t *Case_p);
31
32/* ----------------------------------------------------------------------- */
33/* -------------------------- SHA Benchmarks ----------------------------- */
34/* ----------------------------------------------------------------------- */
35
Igor Opaniuk136644a2016-09-13 13:40:56 +030036static void xtest_tee_benchmark_2001(ADBG_Case_t *c)
37{
38 UNUSED(c);
39
40 int algo = TA_SHA_SHA1; /* Algorithm */
41 size_t size = 1024; /* Buffer size */
42 int offset = 0; /* Buffer offset wrt. alloc'ed address */
43
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030044 sha_perf_run_test(algo, size, CRYPTO_DEF_COUNT,
45 CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, offset,
46 CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
Igor Opaniuk136644a2016-09-13 13:40:56 +030047
48}
49
50static void xtest_tee_benchmark_2002(ADBG_Case_t *c)
51{
52 UNUSED(c);
53
54 int algo = TA_SHA_SHA256; /* Algorithm */
55 size_t size = 4096; /* Buffer size */
56 int offset = 0; /* Buffer offset wrt. alloc'ed address */
57
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030058 sha_perf_run_test(algo, size, CRYPTO_DEF_COUNT,
59 CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, offset,
60 CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
Igor Opaniuk136644a2016-09-13 13:40:56 +030061
62}
63
64ADBG_CASE_DEFINE(XTEST_TEE_BENCHMARK_2001, xtest_tee_benchmark_2001,
Jens Wiklander25a57fe2016-12-26 21:46:24 +010065 "TEE SHA Performance test (TA_SHA_SHA1)");
Igor Opaniuk136644a2016-09-13 13:40:56 +030066ADBG_CASE_DEFINE(XTEST_TEE_BENCHMARK_2002, xtest_tee_benchmark_2002,
Jens Wiklander25a57fe2016-12-26 21:46:24 +010067 "TEE SHA Performance test (TA_SHA_SHA226)");
Igor Opaniuk136644a2016-09-13 13:40:56 +030068
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030069
70/* ----------------------------------------------------------------------- */
71/* -------------------------- AES Benchmarks ----------------------------- */
72/* ----------------------------------------------------------------------- */
73
74static void xtest_tee_benchmark_2011(ADBG_Case_t *c)
75{
76 UNUSED(c);
77
78 int mode = TA_AES_ECB; /* AES mode */
79 int decrypt = 0; /* Encrypt */
80 int keysize = AES_128;
81 size_t size = 1024; /* Buffer size */
82
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030083 aes_perf_run_test(mode, keysize, decrypt, size, CRYPTO_DEF_COUNT,
84 CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, AES_PERF_INPLACE,
85 CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030086}
87
88static void xtest_tee_benchmark_2012(ADBG_Case_t *c)
89{
90 UNUSED(c);
91
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030092 int mode = TA_AES_CBC; /* AES mode */
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030093 int decrypt = 0; /* Encrypt */
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030094 int keysize = AES_256;
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030095 size_t size = 1024; /* Buffer size */
96
Igor Opaniukf9b7fd22016-09-16 16:22:34 +030097 aes_perf_run_test(mode, keysize, decrypt, size, CRYPTO_DEF_COUNT,
98 CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, AES_PERF_INPLACE,
99 CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
Igor Opaniuk44aff4b2016-09-16 10:18:00 +0300100}
101
102ADBG_CASE_DEFINE(XTEST_TEE_BENCHMARK_2011, xtest_tee_benchmark_2011,
Jens Wiklander25a57fe2016-12-26 21:46:24 +0100103 "TEE AES Performance test (TA_AES_ECB)");
Igor Opaniuk44aff4b2016-09-16 10:18:00 +0300104ADBG_CASE_DEFINE(XTEST_TEE_BENCHMARK_2012, xtest_tee_benchmark_2012,
Jens Wiklander25a57fe2016-12-26 21:46:24 +0100105 "TEE AES Performance test (TA_AES_CBC)");