aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/timeattack.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2015-04-11 16:44:18 +0200
committerMartin Willi <martin@revosec.ch>2015-04-14 11:51:54 +0200
commitb833963270fbffe3186f5c71c7584c2347a44038 (patch)
tree75e2d440ec3f27ca6f25b899c592e51258e21c26 /scripts/timeattack.c
parent39e1ddec2ed3480e0edc07bbabfacbf907dc4e3f (diff)
downloadstrongswan-b833963270fbffe3186f5c71c7584c2347a44038.tar.bz2
strongswan-b833963270fbffe3186f5c71c7584c2347a44038.tar.xz
utils: Add a constant time memeq() variant for cryptographic purposes
Diffstat (limited to 'scripts/timeattack.c')
-rw-r--r--scripts/timeattack.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/scripts/timeattack.c b/scripts/timeattack.c
index 0a53abae9..3d7ffee7d 100644
--- a/scripts/timeattack.c
+++ b/scripts/timeattack.c
@@ -196,6 +196,12 @@ CALLBACK(attack_memeq4, bool,
return !m;
}
+CALLBACK(attack_memeq5, bool,
+ u_char *subj, u_char *data, size_t len)
+{
+ return memeq_const(subj, data, len);
+}
+
static bool attack_memeq(char *name, u_int iterations, u_int distance)
{
struct {
@@ -206,6 +212,7 @@ static bool attack_memeq(char *name, u_int iterations, u_int distance)
{ "memeq2", attack_memeq2 },
{ "memeq3", attack_memeq3 },
{ "memeq4", attack_memeq4 },
+ { "memeq5", attack_memeq5 },
};
u_char exp[16];
int i;
@@ -350,7 +357,7 @@ int main(int argc, char *argv[])
if (argc < 3)
{
fprintf(stderr, "usage: %s <attack> <iterations> <distance>\n", argv[0]);
- fprintf(stderr, " <attack>: memeq[1-4] / aead / signer\n");
+ fprintf(stderr, " <attack>: memeq[1-5] / aead / signer\n");
fprintf(stderr, " <iterations>: number of invocations * 1000\n");
fprintf(stderr, " <distance>: time difference in ns for a hit\n");
fprintf(stderr, " example: %s memeq1 100 500\n", argv[0]);