blob: 96a1d7502a4b057bcea3d5879519cd8bb6333870 [file] [log] [blame]
/*
* Copyright (c) 2015, Linaro Limited
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "xtest_test.h"
#include "xtest_helpers.h"
#include <crypto_common.h>
#include <util.h>
/* SHA bechmarks */
static void xtest_tee_benchmark_2001(ADBG_Case_t *Case_p);
static void xtest_tee_benchmark_2002(ADBG_Case_t *Case_p);
/* AES benchmarks */
static void xtest_tee_benchmark_2011(ADBG_Case_t *Case_p);
static void xtest_tee_benchmark_2012(ADBG_Case_t *Case_p);
/* ----------------------------------------------------------------------- */
/* -------------------------- SHA Benchmarks ----------------------------- */
/* ----------------------------------------------------------------------- */
static void xtest_tee_benchmark_2001(ADBG_Case_t *c)
{
UNUSED(c);
int algo = TA_SHA_SHA1; /* Algorithm */
size_t size = 1024; /* Buffer size */
int offset = 0; /* Buffer offset wrt. alloc'ed address */
sha_perf_run_test(algo, size, CRYPTO_DEF_COUNT,
CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, offset,
CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
}
static void xtest_tee_benchmark_2002(ADBG_Case_t *c)
{
UNUSED(c);
int algo = TA_SHA_SHA256; /* Algorithm */
size_t size = 4096; /* Buffer size */
int offset = 0; /* Buffer offset wrt. alloc'ed address */
sha_perf_run_test(algo, size, CRYPTO_DEF_COUNT,
CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM, offset,
CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
}
ADBG_CASE_DEFINE(benchmark, 2001, xtest_tee_benchmark_2001,
"TEE SHA Performance test (TA_SHA_SHA1)");
ADBG_CASE_DEFINE(benchmark, 2002, xtest_tee_benchmark_2002,
"TEE SHA Performance test (TA_SHA_SHA226)");
/* ----------------------------------------------------------------------- */
/* -------------------------- AES Benchmarks ----------------------------- */
/* ----------------------------------------------------------------------- */
static void xtest_tee_benchmark_2011(ADBG_Case_t *c)
{
UNUSED(c);
int mode = TA_AES_ECB; /* AES mode */
int decrypt = 0; /* Encrypt */
int keysize = AES_128;
size_t size = 1024; /* Buffer size */
aes_perf_run_test(mode, keysize, decrypt, size, CRYPTO_DEF_UNIT_SIZE,
CRYPTO_DEF_COUNT, CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM,
AES_PERF_INPLACE, CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
}
static void xtest_tee_benchmark_2012(ADBG_Case_t *c)
{
UNUSED(c);
int mode = TA_AES_CBC; /* AES mode */
int decrypt = 0; /* Encrypt */
int keysize = AES_256;
size_t size = 1024; /* Buffer size */
aes_perf_run_test(mode, keysize, decrypt, size, CRYPTO_DEF_UNIT_SIZE,
CRYPTO_DEF_COUNT, CRYPTO_DEF_LOOPS, CRYPTO_USE_RANDOM,
AES_PERF_INPLACE, CRYPTO_DEF_WARMUP, CRYPTO_DEF_VERBOSITY);
}
ADBG_CASE_DEFINE(benchmark, 2011, xtest_tee_benchmark_2011,
"TEE AES Performance test (TA_AES_ECB)");
ADBG_CASE_DEFINE(benchmark, 2012, xtest_tee_benchmark_2012,
"TEE AES Performance test (TA_AES_CBC)");