diff --git a/examples/nettle-benchmark.c b/examples/nettle-benchmark.c index 7004d8b8dca9fd74c237a86305fae03abb1387e1..630fa414cfea6601619b94278d45bb66b828c35d 100644 --- a/examples/nettle-benchmark.c +++ b/examples/nettle-benchmark.c @@ -43,6 +43,7 @@ #include "blowfish.h" #include "cast128.h" #include "cbc.h" +#include "ctr.h" #include "des.h" #include "gcm.h" #include "memxor.h" @@ -269,6 +270,15 @@ bench_cbc_decrypt(void *arg) BENCH_BLOCK, info->data, info->data); } +static void +bench_ctr(void *arg) +{ + struct bench_cbc_info *info = arg; + ctr_crypt(info->ctx, info->crypt, + info->block_size, info->iv, + BENCH_BLOCK, info->data, info->data); +} + /* Set data[i] = floor(sqrt(i)) */ static void init_data(uint8_t *data) @@ -499,6 +509,24 @@ time_cipher(const struct nettle_cipher *cipher) display(cipher->name, "CBC decrypt", cipher->block_size, time_function(bench_cbc_decrypt, &info)); } + + /* Do CTR mode */ + { + struct bench_cbc_info info; + info.ctx = ctx; + info.crypt = cipher->encrypt; + info.data = data; + info.block_size = cipher->block_size; + info.iv = iv; + + memset(iv, 0, sizeof(iv)); + + cipher->set_encrypt_key(ctx, cipher->key_size, key); + + display(cipher->name, "CTR", cipher->block_size, + time_function(bench_ctr, &info)); + } + free(iv); } free(ctx);