diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2009-12-02 21:12:22 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2009-12-02 21:12:22 +0200 |
commit | b373f5d1aac157916c6b44cb6a2ec505e4b46784 (patch) | |
tree | e5a5fca8e08732645547a36ba254fa267ae70257 /src/benchmark.c | |
parent | 5e1d605d30cda30004d9821260b9afd7ca547579 (diff) | |
download | gnutls-b373f5d1aac157916c6b44cb6a2ec505e4b46784.tar.gz |
Exported gnutls_cipher_get_block_size() and all hash functions added to libgnutls.map.
Expanded benchmark with 3DES and ARCFOUR. Corrected test that used non-existing symbol.
Diffstat (limited to 'src/benchmark.c')
-rw-r--r-- | src/benchmark.c | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/src/benchmark.c b/src/benchmark.c index 83d57f44c9..1ec5eab493 100644 --- a/src/benchmark.c +++ b/src/benchmark.c @@ -28,27 +28,45 @@ static unsigned char data[64*1024]; -void cipher_bench(int size) +void cipher_bench(int algo, int size) { int ret, i; gnutls_cipher_hd_t ctx; -gnutls_datum_t key = { "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01", 16 }; -gnutls_datum_t iv = { "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", 16 }; +void* _key,*_iv; +gnutls_datum_t key, iv; struct timespec start, stop; double secs; long data_size = 0; double dd; +int blocksize = gnutls_cipher_get_block_size(algo); +int keysize = gnutls_cipher_get_key_size(algo); + _key = malloc(keysize); + if (_key == NULL) + return; + memset(_key, 0xf0, keysize); + + _iv = malloc(blocksize); + if (_iv == NULL) + return; + memset(_iv, 0xf0, blocksize); + + iv.data = _iv; + iv.size = blocksize; + + key.data = _key; + key.size = keysize; + gnutls_global_init(); - printf("Checking AES (%dkb payload)... ", size); + printf("Checking %s (%dkb payload)... ", gnutls_cipher_get_name(algo), size); fflush(stdout); clock_gettime(CLOCK_MONOTONIC, &start); - ret = gnutls_cipher_init( &ctx, GNUTLS_CIPHER_AES_128_CBC, &key, &iv); + ret = gnutls_cipher_init( &ctx, algo, &key, &iv); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); - return; + goto leave; } for (i=0;i<7*1024;i++) { @@ -63,17 +81,29 @@ double dd; secs = (stop.tv_sec*1000+stop.tv_nsec/(1000*1000)-(start.tv_sec*1000+start.tv_nsec/(1000*1000))); secs /= 1000; dd = (((double)data_size/(double)secs))/1000; - printf("Transferred %u kb in %.2f secs: ", data_size/1000, secs); + printf("Transferred %ld kb in %.2f secs: ", data_size/1000, secs); printf("%.2f kbyte/sec\n", dd); + +leave: + free(_key); + free(_iv); } int main() { - cipher_bench(8); - cipher_bench(16); - cipher_bench(32); + cipher_bench(GNUTLS_CIPHER_3DES_CBC, 4); + cipher_bench(GNUTLS_CIPHER_3DES_CBC, 8); + cipher_bench(GNUTLS_CIPHER_3DES_CBC, 16); + + cipher_bench(GNUTLS_CIPHER_AES_128_CBC, 4); + cipher_bench(GNUTLS_CIPHER_AES_128_CBC, 8); + cipher_bench(GNUTLS_CIPHER_AES_128_CBC, 16); + + cipher_bench(GNUTLS_CIPHER_ARCFOUR, 4); + cipher_bench(GNUTLS_CIPHER_ARCFOUR, 8); + cipher_bench(GNUTLS_CIPHER_ARCFOUR, 16); return 0; } |