blob: b3cfee1639544319cc2ce1a6f0aabd568bb31ed7 [file] [log] [blame]
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +01001#!/bin/sh
2
Paul Bakker6152b022015-04-14 15:00:09 +02003# Measure heap usage (and performance) of ECC operations with various values of
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +01004# the relevant tunable compile-time parameters.
Manuel Pégourié-Gonnard8b7d7d62015-02-05 10:00:30 +00005#
6# Usage (preferably on a 32-bit platform):
7# cmake -D CMAKE_BUILD_TYPE=Release .
8# scripts/ecc-heap.sh | tee ecc-heap.log
Bence Szépkútib7246ad2020-05-26 00:33:31 +02009#
10# Copyright (C) 2014-2015, Arm Limited, All Rights Reserved
Bence Szépkúti4e9f7122020-06-05 13:02:18 +020011# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
12#
13# This file is provided under the Apache License 2.0, or the
14# GNU General Public License v2.0 or later.
15#
16# **********
17# Apache License 2.0:
Bence Szépkúti09b4f192020-05-26 01:54:15 +020018#
19# Licensed under the Apache License, Version 2.0 (the "License"); you may
20# not use this file except in compliance with the License.
21# You may obtain a copy of the License at
22#
23# http://www.apache.org/licenses/LICENSE-2.0
24#
25# Unless required by applicable law or agreed to in writing, software
26# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
27# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28# See the License for the specific language governing permissions and
29# limitations under the License.
Bence Szépkútib7246ad2020-05-26 00:33:31 +020030#
Bence Szépkúti4e9f7122020-06-05 13:02:18 +020031# **********
32#
33# **********
34# GNU General Public License v2.0 or later:
35#
36# This program is free software; you can redistribute it and/or modify
37# it under the terms of the GNU General Public License as published by
38# the Free Software Foundation; either version 2 of the License, or
39# (at your option) any later version.
40#
41# This program is distributed in the hope that it will be useful,
42# but WITHOUT ANY WARRANTY; without even the implied warranty of
43# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44# GNU General Public License for more details.
45#
46# You should have received a copy of the GNU General Public License along
47# with this program; if not, write to the Free Software Foundation, Inc.,
48# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
49#
50# **********
51#
Bence Szépkútib7246ad2020-05-26 00:33:31 +020052# This file is part of Mbed TLS (https://tls.mbed.org)
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010053
54set -eu
55
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +000056CONFIG_H='include/mbedtls/config.h'
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010057
58if [ -r $CONFIG_H ]; then :; else
59 echo "$CONFIG_H not found" >&2
60 exit 1
61fi
62
63if grep -i cmake Makefile >/dev/null; then :; else
64 echo "Needs Cmake" >&2
65 exit 1
66fi
67
68if git status | grep -F $CONFIG_H >/dev/null 2>&1; then
69 echo "config.h not clean" >&2
70 exit 1
71fi
72
73CONFIG_BAK=${CONFIG_H}.bak
74cp $CONFIG_H $CONFIG_BAK
75
76cat << EOF >$CONFIG_H
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020077#define MBEDTLS_PLATFORM_C
78#define MBEDTLS_PLATFORM_MEMORY
79#define MBEDTLS_MEMORY_BUFFER_ALLOC_C
80#define MBEDTLS_MEMORY_DEBUG
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010081
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020082#define MBEDTLS_TIMING_C
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010083
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020084#define MBEDTLS_BIGNUM_C
85#define MBEDTLS_ECP_C
86#define MBEDTLS_ASN1_PARSE_C
87#define MBEDTLS_ASN1_WRITE_C
88#define MBEDTLS_ECDSA_C
89#define MBEDTLS_ECDH_C
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010090
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020091#define MBEDTLS_ECP_DP_SECP192R1_ENABLED
92#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
93#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
94#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
95#define MBEDTLS_ECP_DP_SECP521R1_ENABLED
Manuel Pégourié-Gonnard07894332015-06-23 00:18:41 +020096#define MBEDTLS_ECP_DP_CURVE25519_ENABLED
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +010097
98#include "check_config.h"
99
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200100//#define MBEDTLS_ECP_WINDOW_SIZE 6
101//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +0100102EOF
103
104for F in 0 1; do
105 for W in 2 3 4 5 6; do
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200106 scripts/config.pl set MBEDTLS_ECP_WINDOW_SIZE $W
107 scripts/config.pl set MBEDTLS_ECP_FIXED_POINT_OPTIM $F
Manuel Pégourié-Gonnard500de6e2014-12-19 18:06:47 +0100108 make benchmark >/dev/null 2>&1
109 echo "fixed point optim = $F, max window size = $W"
110 echo "--------------------------------------------"
111 programs/test/benchmark
112 done
113done
114
115# cleanup
116
117mv $CONFIG_BAK $CONFIG_H
118make clean