mirror of
https://github.com/MariaDB/server.git
synced 2026-04-22 08:15:31 +02:00
- 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')
440 lines
9.4 KiB
C++
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
|