summaryrefslogtreecommitdiff
path: root/extra/yassl/taocrypt/benchmark/benchmark.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'extra/yassl/taocrypt/benchmark/benchmark.cpp')
-rw-r--r--extra/yassl/taocrypt/benchmark/benchmark.cpp462
1 files changed, 0 insertions, 462 deletions
diff --git a/extra/yassl/taocrypt/benchmark/benchmark.cpp b/extra/yassl/taocrypt/benchmark/benchmark.cpp
deleted file mode 100644
index 6afad32ed41..00000000000
--- a/extra/yassl/taocrypt/benchmark/benchmark.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- Copyright (c) 2006, 2012, Oracle and/or its affiliates.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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.
-
- You should have received a copy of the GNU General Public License
- along with this program; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1335 USA.
-*/
-
-// benchmark.cpp
-// TaoCrypt benchmark
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-#include <stdio.h>
-
-#include "runtime.hpp"
-#include "des.hpp"
-#include "aes.hpp"
-#include "twofish.hpp"
-#include "blowfish.hpp"
-#include "arc4.hpp"
-#include "md5.hpp"
-#include "sha.hpp"
-#include "ripemd.hpp"
-#include "rsa.hpp"
-#include "dh.hpp"
-#include "dsa.hpp"
-
-
-using namespace TaoCrypt;
-
-void bench_aes(bool show);
-void bench_des();
-void bench_blowfish();
-void bench_twofish();
-void bench_arc4();
-
-void bench_md5();
-void bench_sha();
-void bench_ripemd();
-
-void bench_rsa();
-void bench_dh();
-void bench_dsa();
-
-double current_time();
-
-
-
-
-int main(int argc, char** argv)
-{
- bench_aes(false);
- bench_aes(true);
- bench_blowfish();
- bench_twofish();
- bench_arc4();
- bench_des();
-
- printf("\n");
-
- bench_md5();
- bench_sha();
- bench_ripemd();
-
- printf("\n");
-
- bench_rsa();
- bench_dh();
- bench_dsa();
-
- return 0;
-}
-
-const int megs = 5; // how much to test
-
-const byte key[] =
-{
- 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
- 0xfe,0xde,0xba,0x98,0x76,0x54,0x32,0x10,
- 0x89,0xab,0xcd,0xef,0x01,0x23,0x45,0x67
-};
-
-const byte iv[] =
-{
- 0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81
-
-};
-
-
-byte plain [1024*1024];
-byte cipher[1024*1024];
-
-
-void bench_des()
-{
- DES_EDE3_CBC_Encryption enc;
- enc.SetKey(key, 16, iv);
-
- double start = current_time();
-
- for(int i = 0; i < megs; i++)
- enc.Process(plain, cipher, sizeof(plain));
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("3DES %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_aes(bool show)
-{
- AES_CBC_Encryption enc;
- enc.SetKey(key, 16, iv);
-
- double start = current_time();
-
- for(int i = 0; i < megs; i++)
- enc.Process(plain, cipher, sizeof(plain));
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- if (show)
- printf("AES %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_twofish()
-{
- Twofish_CBC_Encryption enc;
- enc.SetKey(key, 16, iv);
-
- double start = current_time();
-
- for(int i = 0; i < megs; i++)
- enc.Process(plain, cipher, sizeof(plain));
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("Twofish %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-
-}
-
-
-void bench_blowfish()
-{
- Blowfish_CBC_Encryption enc;
- enc.SetKey(key, 16, iv);
-
- double start = current_time();
-
- for(int i = 0; i < megs; i++)
- enc.Process(plain, cipher, sizeof(plain));
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("Blowfish %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_arc4()
-{
- ARC4 enc;
- enc.SetKey(key, 16);
-
- double start = current_time();
-
- for(int i = 0; i < megs; i++)
- enc.Process(cipher, plain, sizeof(plain));
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("ARC4 %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_md5()
-{
- MD5 hash;
- byte digest[MD5::DIGEST_SIZE];
-
- double start = current_time();
-
-
- for(int i = 0; i < megs; i++)
- hash.Update(plain, sizeof(plain));
-
- hash.Final(digest);
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("MD5 %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_sha()
-{
- SHA hash;
- byte digest[SHA::DIGEST_SIZE];
-
- double start = current_time();
-
-
- for(int i = 0; i < megs; i++)
- hash.Update(plain, sizeof(plain));
-
- hash.Final(digest);
-
- /*
- for(int i = 0; i < megs; i++)
- hash.AsmTransform(plain, 16384);
- */
-
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("SHA %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-
-void bench_ripemd()
-{
- RIPEMD160 hash;
- byte digest[RIPEMD160::DIGEST_SIZE];
-
- double start = current_time();
-
-
- for(int i = 0; i < megs; i++)
- hash.Update(plain, sizeof(plain));
-
- hash.Final(digest);
-
- double total = current_time() - start;
-
- double persec = 1 / total * megs;
-
- printf("RIPEMD %d megs took %5.3f seconds, %6.2f MB/s\n", megs, total,
- persec);
-}
-
-RandomNumberGenerator rng;
-
-void bench_rsa()
-{
- const int times = 100;
-
- Source source;
- FileSource("./rsa1024.der", source);
-
- if (source.size() == 0) {
- printf("can't find ./rsa1024.der\n");
- return;
- }
- RSA_PrivateKey priv(source);
- RSAES_Encryptor enc(priv);
-
- byte message[] = "Everyone gets Friday off.";
- byte cipher[128]; // for 1024 bit
- byte plain[128]; // for 1024 bit
- const int len = (word32)strlen((char*)message);
-
- int i;
- double start = current_time();
-
- for (i = 0; i < times; i++)
- enc.Encrypt(message, len, cipher, rng);
-
- double total = current_time() - start;
- double each = total / times; // per second
- double milliEach = each * 1000; // milliseconds
-
- printf("RSA 1024 encryption took %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-
- RSAES_Decryptor dec(priv);
-
- start = current_time();
-
- for (i = 0; i < times; i++)
- dec.Decrypt(cipher, 128, plain, rng);
-
- total = current_time() - start;
- each = total / times; // per second
- milliEach = each * 1000; // milliseconds
-
- printf("RSA 1024 decryption took %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-}
-
-
-void bench_dh()
-{
- const int times = 100;
-
- Source source;
- FileSource("./dh1024.der", source);
-
- if (source.size() == 0) {
- printf("can't find ./dh1024.der\n");
- return;
- }
- DH dh(source);
-
- byte pub[128]; // for 1024 bit
- byte priv[128]; // for 1024 bit
-
- int i;
- double start = current_time();
-
- for (i = 0; i < times; i++)
- dh.GenerateKeyPair(rng, priv, pub);
-
- double total = current_time() - start;
- double each = total / times; // per second
- double milliEach = each * 1000; // milliseconds
-
- printf("DH 1024 key generation %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-
- DH dh2(dh);
- byte pub2[128]; // for 1024 bit
- byte priv2[128]; // for 1024 bit
- dh2.GenerateKeyPair(rng, priv2, pub2);
- unsigned char key[256];
-
- start = current_time();
-
- for (i = 0; i < times; i++)
- dh.Agree(key, priv, pub2);
-
- total = current_time() - start;
- each = total / times; // per second
- milliEach = each * 1000; // in milliseconds
-
- printf("DH 1024 key agreement %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-}
-
-void bench_dsa()
-{
- const int times = 100;
-
- Source source;
- FileSource("./dsa1024.der", source);
-
- if (source.size() == 0) {
- printf("can't find ./dsa1024.der\n");
- return;
- }
-
- DSA_PrivateKey key(source);
- DSA_Signer signer(key);
-
- SHA sha;
- byte digest[SHA::DIGEST_SIZE];
- byte signature[40];
- const char msg[] = "this is the message";
- sha.Update((byte*)msg, sizeof(msg));
- sha.Final(digest);
-
- int i;
- double start = current_time();
-
- for (i = 0; i < times; i++)
- signer.Sign(digest, signature, rng);
-
- double total = current_time() - start;
- double each = total / times; // per second
- double milliEach = each * 1000; // milliseconds
-
- printf("DSA 1024 sign took %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-
- DSA_Verifier verifier(key);
-
- start = current_time();
-
- for (i = 0; i < times; i++)
- verifier.Verify(digest, signature);
-
- total = current_time() - start;
- each = total / times; // per second
- milliEach = each * 1000; // in milliseconds
-
- printf("DSA 1024 verify took %6.2f milliseconds, avg over %d"
- " iterations\n", milliEach, times);
-}
-
-
-
-#ifdef _WIN32
-
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
-
- double current_time()
- {
- static bool init(false);
- static LARGE_INTEGER freq;
-
- if (!init) {
- QueryPerformanceFrequency(&freq);
- init = true;
- }
-
- LARGE_INTEGER count;
- QueryPerformanceCounter(&count);
-
- return static_cast<double>(count.QuadPart) / freq.QuadPart;
- }
-
-#else
-
- #include <sys/time.h>
-
- double current_time()
- {
- struct timeval tv;
- gettimeofday(&tv, 0);
-
- return static_cast<double>(tv.tv_sec)
- + static_cast<double>(tv.tv_usec) / 1000000;
- }
-
-#endif // _WIN32