mariadb/extra/yassl/taocrypt/benchmark/benchmark.cpp
unknown f00257ddd0 Fixed compiler warnings detected by option -Wshadow and -Wunused:
- Removed not used variables and functions
- Added #ifdef around code that is not used
- Renamed variables and functions to avoid conflicts
- Removed some not used arguments

Fixed some class/struct warnings in ndb
Added define IS_LONGDATA() to simplify code in libmysql.c

I did run gcov on the changes and added 'purecov' comments on almost all lines that was not just variable name changes


BUILD/SETUP.sh:
  Added printing of unused functions and variables.
  Made it easy to test compiling with -Wshadow
BUILD/compile-pentium-gcov:
  Added warnings
  Mark binary with -gcov
client/mysql.cc:
  Fixed warnings found with gcc -Wshadow
client/mysql_upgrade.c:
  Fixed warnings found with gcc -Wshadow
client/mysqlbinlog.cc:
  Fixed warnings found with gcc -Wshadow
client/mysqldump.c:
  Fixed warnings found with gcc -Wshadow
client/mysqltest.c:
  Fixed warnings found with gcc -Wshadow
client/sql_string.cc:
  Fixed warnings found with gcc -Wshadow
  Merged with sql/sql_string.cc
client/sql_string.h:
  Fixed warnings found with gcc -Wshadow
  Merged with sql/sql_string.h
cmd-line-utils/readline/display.c:
  Fixed compiler warning
cmd-line-utils/readline/histexpand.c:
  Fixed warnings found with gcc -Wshadow
cmd-line-utils/readline/input.c:
  Fixed warnings found with gcc -Wshadow
cmd-line-utils/readline/text.c:
  Fixed warnings found with gcc -Wshadow
cmd-line-utils/readline/vi_mode.c:
  Fixed warnings found with gcc -Wshadow
dbug/dbug_analyze.c:
  Fixed warnings found with gcc -Wshadow
extra/my_print_defaults.c:
  Prefixed defaults_extra_file and defaults_group_suffix with 'my' to avoid conflicts with similar named local variables
extra/yassl/include/buffer.hpp:
  Fixed compiler warnings
extra/yassl/include/crypto_wrapper.hpp:
  Fixed compiler warnings
extra/yassl/include/yassl_imp.hpp:
  Fixed compiler warnings
extra/yassl/include/yassl_int.hpp:
  Fixed compiler warnings
extra/yassl/src/crypto_wrapper.cpp:
  Fixed compiler warnings
extra/yassl/taocrypt/benchmark/benchmark.cpp:
  Fixed warnings found with gcc -Wshadow
extra/yassl/taocrypt/include/algebra.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/des.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/hash.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/hmac.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/modarith.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/modes.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/include/rsa.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/mySTL/list.hpp:
  Fixed compiler warnings
extra/yassl/taocrypt/src/aes.cpp:
  Fixed compiler warnings
extra/yassl/taocrypt/src/algebra.cpp:
  Fixed compiler warnings
extra/yassl/taocrypt/src/asn.cpp:
  Fixed compiler warnings
extra/yassl/taocrypt/test/test.cpp:
  Fixed compiler warnings
extra/yassl/testsuite/testsuite.cpp:
  Fixed compiler warnings
include/m_ctype.h:
  Fixed warnings found with gcc -Wshadow
include/my_pthread.h:
  Fixed warnings found with gcc -Wshadow
include/my_sys.h:
  Fixed warnings found with gcc -Wshadow
include/my_time.h:
  Fixed warnings found with gcc -Wshadow
include/mysql.h:
  Fixed warnings found with gcc -Wshadow
  Added define IS_LONGDATA() to simplify code in libmysql.c
libmysql/libmysql.c:
  Fixed warnings found with gcc -Wshadow
  (Mostly replaced bind -> my_bind and time -> my_time)
libmysqld/lib_sql.cc:
  Removed not used variables and labels
myisam/ft_boolean_search.c:
  Fixed warnings found with gcc -Wshadow
myisam/mi_open.c:
  Fixed warnings found with gcc -Wshadow
myisam/mi_search.c:
  Fixed warnings found with gcc -Wshadow
myisam/mi_unique.c:
  Fixed compiler warning
myisam/myisampack.c:
  Fixed warnings found with gcc -Wshadow
myisam/rt_index.c:
  Remove not used variables
myisam/sort.c:
  Fixed warnings found with gcc -Wshadow
mysql-test/r/mysqlcheck.result:
  Remove databases and tables possible left by previous test
mysql-test/r/mysqltest.result:
  New test results
mysql-test/t/mysql.test:
  Coverage tests
mysql-test/t/mysqlbinlog.test:
  Coverage tests
mysql-test/t/mysqlcheck.test:
  Remove databases and tables possible left by previous test
mysql-test/t/mysqltest.test:
  Coverage tests
mysys/default.c:
  Prefixed defaults_file, defaults_group_suffix and defaults_extra_file with 'my' to avoid conflicts with local variables in some functions
mysys/mf_iocache2.c:
  Fixed warnings found with gcc -Wshadow
mysys/mf_keycache.c:
  Fixed warnings found with gcc -Wshadow
mysys/my_bitmap.c:
  Fixed warnings found with gcc -Wshadow
mysys/sha1.c:
  Fixed warnings found with gcc -Wshadow
ndb/include/kernel/signaldata/ArbitSignalData.hpp:
  Fixed compiler warning
ndb/include/kernel/signaldata/DictTabInfo.hpp:
  Fixed compiler warnings
ndb/include/ndbapi/NdbReceiver.hpp:
  Fixed warnings found with gcc -Wshadow
ndb/include/transporter/TransporterDefinitions.hpp:
  Fixed compiler warning
ndb/include/util/InputStream.hpp:
  Fixed compiler warning
ndb/include/util/OutputStream.hpp:
  Fixed compiler warning
ndb/include/util/SimpleProperties.hpp:
  Fixed compiler warning
ndb/include/util/SocketAuthenticator.hpp:
  Fixed compiler warning
ndb/include/util/SocketServer.hpp:
  Fixed compiler warning
ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/portlib/NdbTick.c:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/transporter/SHM_Transporter.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/transporter/TCP_Transporter.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/transporter/TCP_Transporter.hpp:
  Fixed compiler warning
ndb/src/common/transporter/Transporter.cpp:
  Removed not used variable
ndb/src/common/transporter/TransporterRegistry.cpp:
  Removed not used variable
ndb/src/common/util/Bitmask.cpp:
  Moved function to avoid warnings of not used function
ndb/src/common/util/ConfigValues.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/util/File.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/util/Properties.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/util/SocketClient.cpp:
  Fixed wrong return value
ndb/src/common/util/random.c:
  Fixed warnings found with gcc -Wshadow
ndb/src/common/util/socket_io.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/cw/cpcd/APIService.cpp:
  Removed not used variable
ndb/src/cw/cpcd/main.cpp:
  Removed not used variables
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Removed not used variables
ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Removed not used variables
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  Removed not used variable
ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp:
  Removed not used variables
ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp:
  Removed not used variables
ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp:
  Removed not used variables
ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Removed not used variables
ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Fixed compiler warnings
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Removed not used variables
ndb/src/kernel/blocks/suma/Suma.cpp:
  Removed not used variables
ndb/src/kernel/blocks/suma/Suma.hpp:
  Fixed compiler warnings
ndb/src/kernel/vm/MetaData.hpp:
  Fixed compiler warnings
ndb/src/mgmapi/LocalConfig.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/mgmapi/mgmapi.cpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/mgmclient/CommandInterpreter.cpp:
  Removed not used variables
ndb/src/mgmsrv/ConfigInfo.cpp:
  Fixed warnings found with gcc -Wshadow
  Removed not used variables
ndb/src/mgmsrv/ConfigInfo.hpp:
  Fixed warnings found with gcc -Wshadow
ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Prefixed defaults_file, defaults_group_suffix and defaults_extra_file with 'my' to avoid conflicts with local variables in some functions
ndb/src/mgmsrv/MgmtSrvr.cpp:
  Removed not used variables and functions
ndb/src/mgmsrv/MgmtSrvr.hpp:
  Fixed compiler warnings
ndb/src/mgmsrv/Services.cpp:
  Removed not used variables and functions
ndb/src/mgmsrv/main.cpp:
  Removed not used variable
ndb/src/ndbapi/ClusterMgr.hpp:
  Fixed compiler warnings
ndb/src/ndbapi/Ndb.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbBlob.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbIndexOperation.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbOperationDefine.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbOperationExec.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbOperationSearch.cpp:
  Removed not used variables
ndb/src/ndbapi/NdbScanFilter.cpp:
  Fixed compiler warning
ndb/src/ndbapi/NdbScanOperation.cpp:
  Removed not used variables
ndb/src/ndbapi/SignalSender.cpp:
  Removed not used variables
ndb/src/ndbapi/ndb_cluster_connection.cpp:
  Removed not used variable
ndb/tools/delete_all.cpp:
  Removed not used variable
ndb/tools/desc.cpp:
  Removed not used variable
ndb/tools/drop_index.cpp:
  Removed not used variable
ndb/tools/drop_tab.cpp:
  Removed not used variable
ndb/tools/listTables.cpp:
  Removed not used variable
ndb/tools/ndb_config.cpp:
  Fixed warnings found with gcc -Wshadow
  Added missing puts(desc)
ndb/tools/restore/Restore.hpp:
  Changed delimiter to define instead of static variable, as the static variable caused a LOT of compiler warnings
  Fixed compiler warning
ndb/tools/restore/consumer.hpp:
  Fixed compiler warning
ndb/tools/restore/restore_main.cpp:
  Fixed compiler warnings
ndb/tools/select_all.cpp:
  Removed not used variables
ndb/tools/select_count.cpp:
  Removed not used variable
server-tools/instance-manager/commands.h:
  Fixed compiler warnings
server-tools/instance-manager/guardian.cc:
  Fixed compiler warnings
server-tools/instance-manager/instance_options.cc:
  Removed not used variables
server-tools/instance-manager/mysql_connection.cc:
  Fixed compiler warnings
server-tools/instance-manager/options.cc:
  Fixed compiler warnings
server-tools/instance-manager/options.h:
  Fixed compiler warnings
server-tools/instance-manager/parse.cc:
  Removed not used variable
server-tools/instance-manager/user_map.cc:
  Fixed compiler warnings
server-tools/instance-manager/user_map.h:
  Fixed compiler warnings
sql/field.cc:
  Fixed compiler warnings
sql/field.h:
  Fixed compiler warnings
sql/filesort.cc:
  Fixed compiler warnings
sql/ha_archive.cc:
  Removed table and share arguments from get_share() / free_share() to get rid of compiler warnings
sql/ha_archive.h:
  Removed table and share arguments from get_share() / free_share() to get rid of compiler warnings
sql/ha_federated.cc:
  Fixed compiler warnings
sql/ha_heap.cc:
  Fixed compiler warnings
sql/ha_myisam.cc:
  Fixed compiler warnings
sql/ha_myisammrg.cc:
  Fixed compiler warnings
sql/ha_ndbcluster.cc:
  Fixed compiler warnings
sql/handler.cc:
  Fixed compiler warnings
sql/item.cc:
  Fixed compiler warnings
sql/item.h:
  Fixed compiler warnings
  new_item() -> clone_item(), to avoid a lot of warnings with variable 'new_item'
  el() -> element_index()
sql/item_cmpfunc.cc:
  Fixed compiler warnings
sql/item_cmpfunc.h:
  Fixed compiler warnings
sql/item_func.cc:
  Fixed compiler warnings
sql/item_geofunc.cc:
  Fixed compiler warnings
sql/item_row.h:
  Fixed compiler warnings
sql/item_strfunc.cc:
  Fixed compiler warnings
sql/item_subselect.cc:
  Fixed compiler warnings
sql/item_subselect.h:
  Fixed compiler warnings
sql/item_sum.cc:
  Fixed compiler warnings
sql/item_timefunc.cc:
  Fixed compiler warnings
sql/log.cc:
  Fixed compiler warnings
  More comments
  Added #ifdef HAVE_REPLICATION
sql/log_event.cc:
  Fixed compiler warnings
sql/log_event.h:
  Fixed compiler warnings
sql/mysql_priv.h:
  query_id -> global_query_id, to avoid a lot of clashes with function and class variables
  start_time -> server_start_time
sql/mysqld.cc:
  Fixed compiler warnings:
  - Removed not used variables
  - Added #ifndef EMBEDDED_LIBRARY
  - Fixed shadow warnings
sql/net_serv.cc:
  Fixed compiler warnings
sql/opt_range.cc:
  range -> last_range to avoid shadow warnings
  Removed not used function print_rowid()
sql/opt_range.h:
  range -> last_range to avoid shadow warnings
sql/password.c:
  Fixed compiler warnings
sql/protocol.cc:
  Fixed compiler warnings
sql/repl_failsafe.cc:
  Fixed compiler warnings
sql/set_var.cc:
  Fixed compiler warnings
sql/set_var.h:
  type() -> show_type()
  Fixed compiler warnings
sql/slave.cc:
  Fixed compiler warnings
sql/sp_head.cc:
  Fixed compiler warnings
sql/sp_head.h:
  Fixed compiler warnings
sql/spatial.cc:
  Fixed compiler warnings
sql/spatial.h:
  length() -> geom_length() to avoid compiler warnings
  wkb_end -> wkb_last to avoid compiler warnings with local variables named 'wkb_end'
sql/sql_cache.h:
  Fixed compiler warnings
sql/sql_class.cc:
  Fixed compiler warnings
sql/sql_class.h:
  log -> log_xid() to avoid compiler warnings
  Fixed shadow compiler warnings
sql/sql_derived.cc:
  Removed not used variable
sql/sql_insert.cc:
  Fixed compiler warnings
sql/sql_lex.cc:
  Fixed compiler warnings
sql/sql_lex.h:
  res -> saved_error to make the meaning of the variable clear and avoid shadow warnings
sql/sql_load.cc:
  Fixed compiler warnings
sql/sql_parse.cc:
  Fixed compiler warnings
sql/sql_prepare.cc:
  Fixed compiler warnings
sql/sql_select.cc:
  Fixed compiler warnings
sql/sql_show.cc:
  Fixed compiler warnings
sql/sql_string.cc:
  Fixed compiler warnings
sql/sql_string.h:
  Fixed compiler warnings
sql/sql_table.cc:
  Fixed compiler warnings
sql/sql_trigger.cc:
  Fixed compiler warnings
sql/sql_trigger.h:
  table -> trigger_table to avoid warnings from local variables
sql/sql_union.cc:
  Fixed compiler warnings
  (mainly res -> saved_error)
sql-common/client.c:
  Removed not used variable
sql-common/my_time.c:
  Removed not used variable
  time -> my_time
sql/sql_update.cc:
  Removed not used variable
sql/sql_view.cc:
  Removed not used variable
sql/sql_yacc.yy:
  Removed not used variable
sql/table.cc:
  Removed not used variable
sql/tztime.cc:
  Removed not used variable
sql/unireg.cc:
  Removed not used variable
strings/ctype-bin.c:
  mblen -> mb_len to avoid compiler warnings with local variable mblen
strings/ctype-cp932.c:
  Fixed compiler warnings
strings/ctype-eucjpms.c:
  Fixed compiler warnings
strings/ctype-mb.c:
  mblen -> mb_len to avoid compiler warnings with local variable mblen
strings/ctype-simple.c:
  mblen -> mb_len to avoid compiler warnings with local variable mblen
  exp -> exponent
strings/ctype-sjis.c:
  Fixed compiler warnings
strings/ctype-uca.c:
  mblen -> mb_len to avoid compiler warnings with local variable mblen
strings/ctype-ujis.c:
  Fixed compiler warnings
strings/ctype-utf8.c:
  Fixed compiler warnings
strings/decimal.c:
  Fixed compiler warnings
strings/my_vsnprintf.c:
  Added comment
strings/strtod.c:
  Fixed compiler warnings
tests/mysql_client_test.c:
  Fixed compiler warnings
  (Biggest part of patch is to not get a conflict with global function 'bind')
2006-12-15 00:51:37 +02:00

440 lines
9.4 KiB
C++

// benchmark.cpp
// TaoCrypt benchmark
#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 global_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 global_plain [1024*1024];
byte global_cipher[1024*1024];
void bench_des()
{
DES_EDE3_CBC_Encryption enc;
enc.SetKey(global_key, 16, iv);
double start = current_time();
for(int i = 0; i < megs; i++)
enc.Process(global_plain, global_cipher, sizeof(global_plain));
double total = current_time() - start;
double persec = 1 / total * megs;
printf("3DES %d megs took %5.3f seconds, %5.2f MB/s\n", megs, total,
persec);
}
void bench_aes(bool show)
{
AES_CBC_Encryption enc;
enc.SetKey(global_key, 16, iv);
double start = current_time();
for(int i = 0; i < megs; i++)
enc.Process(global_plain, global_cipher, sizeof(global_plain));
double total = current_time() - start;
double persec = 1 / total * megs;
if (show)
printf("AES %d megs took %5.3f seconds, %5.2f MB/s\n", megs, total,
persec);
}
void bench_twofish()
{
Twofish_CBC_Encryption enc;
enc.SetKey(global_key, 16, iv);
double start = current_time();
for(int i = 0; i < megs; i++)
enc.Process(global_plain, global_cipher, sizeof(global_plain));
double total = current_time() - start;
double persec = 1 / total * megs;
printf("Twofish %d megs took %5.3f seconds, %5.2f MB/s\n", megs, total,
persec);
}
void bench_blowfish()
{
Blowfish_CBC_Encryption enc;
enc.SetKey(global_key, 16, iv);
double start = current_time();
for(int i = 0; i < megs; i++)
enc.Process(global_plain, global_cipher, sizeof(global_plain));
double total = current_time() - start;
double persec = 1 / total * megs;
printf("Blowfish %d megs took %5.3f seconds, %5.2f MB/s\n", megs, total,
persec);
}
void bench_arc4()
{
ARC4 enc;
enc.SetKey(global_key, 16);
double start = current_time();
for(int i = 0; i < megs; i++)
enc.Process(global_cipher, global_plain, sizeof(global_plain));
double total = current_time() - start;
double persec = 1 / total * megs;
printf("ARC4 %d megs took %5.3f seconds, %5.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(global_plain, sizeof(global_plain));
hash.Final(digest);
double total = current_time() - start;
double persec = 1 / total * megs;
printf("MD5 %d megs took %5.3f seconds, %5.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(global_plain, sizeof(global_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, %5.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(global_plain, sizeof(global_plain));
hash.Final(digest);
double total = current_time() - start;
double persec = 1 / total * megs;
printf("RIPEMD %d megs took %5.3f seconds, %5.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 = 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