Added Japanese messages that are enabled by option switch

This commit is contained in:
Hideki Miyazaki
2018-10-11 15:42:50 +09:00
parent 9a0ecd4eb6
commit b4b180c1b9

View File

@@ -414,6 +414,52 @@ static const bench_alg bench_other_opt[] = {
#define fopen wolfSSL_fopen
#endif
static int lng_index = 0;
static const char* bench_Usage_msg1[][11] = {
/* 0 English */
{"-? Help, print this usage\n",
"-csv Print terminal output in csv format\n",
"-base10 Display bytes as power of 10 (eg 1 kB = 1000 Bytes)\n",
"-no_aad No additional authentication data passed.\n",
"-dgst_full Full digest operation performed.\n",
"-rsa_sign Measure RSA sign/verify instead of encrypt/decrypt.\n",
"<keySz> -rsa-sz\n Measure RSA <key size> performance.\n",
"-<alg> Algorithm to benchmark. Available algorithms include:\n",
"-lng <num> Display benchmark result by specified language.\n 0: English, 1: Japanese\n",
"<num> Size of block in bytes\n",
"\nNote:\n benchmark -? 1 displays help in Japanese.\n"
},
/* 1 Japanese */
{"-? ヘルプ, 使い方を表示します。\n",
"-csv csv 形式で端末に出力します。\n",
"-base10 バイトを10のべき乗で表示します。(例 1 kB = 1000 Bytes)\n",
"-no_aad 追加の認証データを使用しません.\n",
"-dgst_full フルの digest 暗号操作を実施します。\n",
"-rsa_sign 暗号/復号化の代わりに RSA の署名/検証を測定します。\n",
"<keySz> -rsa-sz\n RSA <key size> の性能を測定します。\n",
"-<alg> アルゴリズムのベンチマークを実施します。\n 利用可能なアルゴリズムは下記を含みます:\n",
"-lng <num> 指定された言語でベンチマーク結果を表示します。\n 0: 英語、 1: 日本語\n",
"<num> ブロックサイズをバイト単位で指定します。\n",
"\nNote:\n benchmark -? ヘルプを英語で表示します。\n"
},
};
static const char* bench_result_words1[][4] = {
{ "tooks", "seconds" , "Cycles per byte", NULL }, /* 0 English */
{ "" , "秒で処理", "1バイトあたりのサイクル数", NULL }, /* 1 Japanese */
};
static const char* bench_result_words2[][5] = {
{ "ops took", "sec" , "avg" , "ops/sec", NULL }, /* 0 English */
{ "回処理を", "秒で実施", "平均", "処理/秒", NULL }, /* 1 Japanese */
};
static const char* bench_desc_words[][9] = {
/* 0 1 2 3 4 5 6 7 8 */
{"public", "private", "key gen", "agree" , "sign", "verify", "encryption", "decryption", NULL}, /* 0 English */
{"公開鍵", "秘密鍵" ,"鍵生成" , "鍵共有" , "署名", "検証" , "暗号化" , "復号化" , NULL}, /* 1 Japanese */
};
#if defined(__GNUC__) && defined(__x86_64__) && !defined(NO_ASM) && !defined(WOLFSSL_SGX)
#define HAVE_GET_CYCLES
static WC_INLINE word64 get_intel_cycles(void);
@@ -423,7 +469,8 @@ static const bench_alg bench_other_opt[] = {
#define END_INTEL_CYCLES total_cycles = get_intel_cycles() - total_cycles;
/* s == size in bytes that 1 count represents, normally BENCH_SIZE */
#define SHOW_INTEL_CYCLES(b, n, s) \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), " Cycles per byte = %6.2f\n", \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), " %s = %6.2f\n", \
bench_result_words1[lng_index][2], \
count == 0 ? 0 : (float)total_cycles / ((word64)count*s))
#define SHOW_INTEL_CYCLES_CSV(b, n, s) \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), "%.2f,\n", \
@@ -452,7 +499,8 @@ static const bench_alg bench_other_opt[] = {
/* s == size in bytes that 1 count represents, normally BENCH_SIZE */
#define SHOW_INTEL_CYCLES(b, n, s) \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), " Cycles per byte = %6.2f\n", \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), " %s = %6.2f\n", \
bench_result_words1[lng_index][2], \
(float)total_cycles / (count*s))
#define SHOW_INTEL_CYCLES_CSV(b, n, s) \
XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), "%.2f,\n", \
@@ -875,6 +923,7 @@ static void bench_stats_sym_finish(const char* desc, int doAsync, int count,
double total, persec = 0, blocks = count;
const char* blockType;
char msg[128] = {0};
const char** word = bench_result_words1[lng_index];
END_INTEL_CYCLES
total = current_time(0) - start;
@@ -921,8 +970,8 @@ static void bench_stats_sym_finish(const char* desc, int doAsync, int count,
XSNPRINTF(msg, sizeof(msg), "%s,%.3f,", desc, persec);
SHOW_INTEL_CYCLES_CSV(msg, sizeof(msg), countSz);
} else {
XSNPRINTF(msg, sizeof(msg), "%-16s%s %5.0f %s took %5.3f seconds, %8.3f %s/s",
desc, BENCH_ASYNC_GET_NAME(doAsync), blocks, blockType, total,
XSNPRINTF(msg, sizeof(msg), "%-16s%s %5.0f %s %s %5.3f %s, %8.3f %s/s",
desc, BENCH_ASYNC_GET_NAME(doAsync), blocks, blockType, word[0], total, word[1],
persec, blockType);
SHOW_INTEL_CYCLES(msg, sizeof(msg), countSz);
}
@@ -947,6 +996,7 @@ static void bench_stats_asym_finish(const char* algo, int strength,
const char* desc, int doAsync, int count, double start, int ret)
{
double total, each = 0, opsSec, milliEach;
const char **word = bench_result_words2[lng_index];
total = current_time(0) - start;
if (count > 0)
@@ -964,9 +1014,9 @@ static void bench_stats_asym_finish(const char* algo, int strength,
}
printf("%s %d %s,%.3f,%.3f,\n", algo, strength, desc, milliEach, opsSec);
} else {
printf("%-6s %5d %-9s %s %6d ops took %5.3f sec, avg %5.3f ms,"
" %.3f ops/sec\n", algo, strength, desc, BENCH_ASYNC_GET_NAME(doAsync),
count, total, milliEach, opsSec);
printf("%-6s %5d %-9s %s %6d %s %5.3f %s, %s %5.3f ms,"
" %.3f %s\n", algo, strength, desc, BENCH_ASYNC_GET_NAME(doAsync),
count, word[0], total, word[1], word[2], milliEach, opsSec, word[3]);
}
/* show errors */
@@ -3717,6 +3767,7 @@ static void bench_rsaKeyGen_helper(int doAsync, int keySz)
double start;
int ret = 0, i, count = 0, times, pending = 0;
const long rsa_e_val = WC_RSA_EXPONENT;
const char**desc = bench_desc_words[lng_index];
/* clear for done cleanup */
XMEMSET(genKey, 0, sizeof(genKey));
@@ -3747,7 +3798,7 @@ static void bench_rsaKeyGen_helper(int doAsync, int keySz)
count += times;
} while (bench_stats_sym_check(start));
exit:
bench_stats_asym_finish("RSA", keySz, "key gen", doAsync, count, start, ret);
bench_stats_asym_finish("RSA", keySz, desc[2], doAsync, count, start, ret);
/* cleanup */
for (i = 0; i < BENCH_MAX_PENDING; i++) {
@@ -3796,6 +3847,7 @@ static void bench_rsa_helper(int doAsync, RsaKey rsaKey[BENCH_MAX_PENDING],
const char* messageStr = "Everyone gets Friday off.";
const int len = (int)XSTRLEN((char*)messageStr);
double start = 0.0f;
const char**desc = bench_desc_words[lng_index];
DECLARE_VAR_INIT(message, byte, len, messageStr, HEAP_HINT);
DECLARE_ARRAY(enc, byte, BENCH_MAX_PENDING, rsaKeySz/8, HEAP_HINT);
@@ -3825,7 +3877,7 @@ static void bench_rsa_helper(int doAsync, RsaKey rsaKey[BENCH_MAX_PENDING],
count += times;
} while (bench_stats_sym_check(start));
exit_rsa_pub:
bench_stats_asym_finish("RSA", rsaKeySz, "public", doAsync, count,
bench_stats_asym_finish("RSA", rsaKeySz, desc[0], doAsync, count,
start, ret);
if (ret < 0) {
@@ -3858,7 +3910,7 @@ exit_rsa_pub:
count += times;
} while (bench_stats_sym_check(start));
exit:
bench_stats_asym_finish("RSA", rsaKeySz, "private", doAsync, count,
bench_stats_asym_finish("RSA", rsaKeySz, desc[1], doAsync, count,
start, ret);
}
else {
@@ -3885,7 +3937,7 @@ exit:
count += times;
} while (bench_stats_sym_check(start));
exit_rsa_sign:
bench_stats_asym_finish("RSA", rsaKeySz, "sign", doAsync, count, start,
bench_stats_asym_finish("RSA", rsaKeySz, desc[4], doAsync, count, start,
ret);
if (ret < 0) {
@@ -3918,7 +3970,7 @@ exit_rsa_sign:
count += times;
} while (bench_stats_sym_check(start));
exit_rsa_verify:
bench_stats_asym_finish("RSA", rsaKeySz, "verify", doAsync, count,
bench_stats_asym_finish("RSA", rsaKeySz, desc[5], doAsync, count,
start, ret);
}
@@ -4073,6 +4125,7 @@ void bench_dh(int doAsync)
double start = 0.0f;
DhKey dhKey[BENCH_MAX_PENDING];
int dhKeySz = BENCH_DH_KEY_SIZE * 8; /* used in printf */
const char**desc = bench_desc_words[lng_index];
#ifndef NO_ASN
size_t bytes;
word32 idx;
@@ -4155,7 +4208,7 @@ void bench_dh(int doAsync)
count += times;
} while (bench_stats_sym_check(start));
exit_dh_gen:
bench_stats_asym_finish("DH", dhKeySz, "key gen", doAsync, count, start, ret);
bench_stats_asym_finish("DH", dhKeySz, desc[2], doAsync, count, start, ret);
if (ret < 0) {
goto exit;
@@ -4187,7 +4240,7 @@ exit_dh_gen:
count += times;
} while (bench_stats_sym_check(start));
exit:
bench_stats_asym_finish("DH", dhKeySz, "agree", doAsync, count, start, ret);
bench_stats_asym_finish("DH", dhKeySz, desc[3], doAsync, count, start, ret);
/* cleanup */
for (i = 0; i < BENCH_MAX_PENDING; i++) {
@@ -4241,6 +4294,7 @@ void bench_ntru(void)
word16 ciphertext_len;
byte plaintext[16];
word16 plaintext_len;
const char**desc = bench_desc_words[lng_index];
DRBG_HANDLE drbg;
static byte const aes_key[] = {
@@ -4316,7 +4370,7 @@ void bench_ntru(void)
return;
}
}
bench_stats_asym_finish("NTRU", ntruBits, "encryption", 0, i, start, ret);
bench_stats_asym_finish("NTRU", ntruBits, desc[6], 0, i, start, ret);
ret = ntru_crypto_drbg_uninstantiate(drbg);
if (ret != DRBG_OK) {
@@ -4345,7 +4399,7 @@ void bench_ntru(void)
return;
}
}
bench_stats_asym_finish("NTRU", ntruBits, "decryption", 0, i, start, ret);
bench_stats_asym_finish("NTRU", ntruBits, desc[7], 0, i, start, ret);
}
}
@@ -4398,7 +4452,7 @@ void bench_ntruKeyGen(void)
public_key, &private_key_len,
private_key);
}
bench_stats_asym_finish("NTRU", ntruBits, "key gen", 0, i, start, ret);
bench_stats_asym_finish("NTRU", ntruBits, desc[2], 0, i, start, ret);
if (ret != NTRU_OK) {
return;
@@ -4426,6 +4480,7 @@ void bench_eccMakeKey(int doAsync)
const int keySize = BENCH_ECC_SIZE;
ecc_key genKey[BENCH_MAX_PENDING];
double start;
const char**desc = bench_desc_words[lng_index];
/* clear for done cleanup */
XMEMSET(&genKey, 0, sizeof(genKey));
@@ -4456,7 +4511,7 @@ void bench_eccMakeKey(int doAsync)
count += times;
} while (bench_stats_sym_check(start));
exit:
bench_stats_asym_finish("ECC", keySize * 8, "key gen", doAsync, count, start, ret);
bench_stats_asym_finish("ECC", keySize * 8, desc[2], doAsync, count, start, ret);
/* cleanup */
for (i = 0; i < BENCH_MAX_PENDING; i++) {
@@ -4479,6 +4534,7 @@ void bench_ecc(int doAsync)
#endif
word32 x[BENCH_MAX_PENDING];
double start;
const char**desc = bench_desc_words[lng_index];
#ifdef HAVE_ECC_DHE
DECLARE_ARRAY(shared, byte, BENCH_MAX_PENDING, BENCH_ECC_SIZE, HEAP_HINT);
@@ -4541,7 +4597,7 @@ void bench_ecc(int doAsync)
count += times;
} while (bench_stats_sym_check(start));
exit_ecdhe:
bench_stats_asym_finish("ECDHE", keySize * 8, "agree", doAsync, count, start, ret);
bench_stats_asym_finish("ECDHE", keySize * 8, desc[3], doAsync, count, start, ret);
if (ret < 0) {
goto exit;
@@ -4579,7 +4635,7 @@ exit_ecdhe:
count += times;
} while (bench_stats_sym_check(start));
exit_ecdsa_sign:
bench_stats_asym_finish("ECDSA", keySize * 8, "sign", doAsync, count, start, ret);
bench_stats_asym_finish("ECDSA", keySize * 8, desc[4], doAsync, count, start, ret);
if (ret < 0) {
goto exit;
@@ -4609,7 +4665,7 @@ exit_ecdsa_sign:
count += times;
} while (bench_stats_sym_check(start));
exit_ecdsa_verify:
bench_stats_asym_finish("ECDSA", keySize * 8, "verify", doAsync, count, start, ret);
bench_stats_asym_finish("ECDSA", keySize * 8, desc[5], doAsync, count, start, ret);
#endif /* HAVE_ECC_VERIFY */
#endif /* !NO_ASN && HAVE_ECC_SIGN */
@@ -4644,6 +4700,7 @@ void bench_eccEncrypt(void)
word32 bench_plainSz = BENCH_SIZE;
int ret, i, count;
double start;
const char**desc = bench_desc_words[lng_index];
ret = wc_ecc_init_ex(&userA, HEAP_HINT, devId);
if (ret != 0) {
@@ -4687,7 +4744,7 @@ void bench_eccEncrypt(void)
count += i;
} while (bench_stats_sym_check(start));
exit_enc:
bench_stats_asym_finish("ECC", keySize * 8, "encrypt", 0, count, start, ret);
bench_stats_asym_finish("ECC", keySize * 8, desc[6], 0, count, start, ret);
bench_stats_start(&count, &start);
do {
@@ -4702,7 +4759,7 @@ exit_enc:
count += i;
} while (bench_stats_sym_check(start));
exit_dec:
bench_stats_asym_finish("ECC", keySize * 8, "decrypt", 0, count, start, ret);
bench_stats_asym_finish("ECC", keySize * 8, desc[7], 0, count, start, ret);
exit:
@@ -4719,6 +4776,7 @@ void bench_curve25519KeyGen(void)
curve25519_key genKey;
double start;
int ret = 0, i, count;
const char**desc = bench_desc_words[lng_index];
/* Key Gen */
bench_stats_start(&count, &start);
@@ -4733,7 +4791,7 @@ void bench_curve25519KeyGen(void)
}
count += i;
} while (bench_stats_sym_check(start));
bench_stats_asym_finish("CURVE", 25519, "key gen", 0, count, start, ret);
bench_stats_asym_finish("CURVE", 25519, desc[2], 0, count, start, ret);
}
#ifdef HAVE_CURVE25519_SHARED_SECRET
@@ -4743,6 +4801,7 @@ void bench_curve25519KeyAgree(void)
double start;
int ret, i, count;
byte shared[32];
const char**desc = bench_desc_words[lng_index];
word32 x = 0;
wc_curve25519_init(&genKey);
@@ -4774,7 +4833,7 @@ void bench_curve25519KeyAgree(void)
count += i;
} while (bench_stats_sym_check(start));
exit:
bench_stats_asym_finish("CURVE", 25519, "agree", 0, count, start, ret);
bench_stats_asym_finish("CURVE", 25519, desc[3], 0, count, start, ret);
wc_curve25519_free(&genKey2);
wc_curve25519_free(&genKey);
@@ -4788,6 +4847,7 @@ void bench_ed25519KeyGen(void)
ed25519_key genKey;
double start;
int i, count;
const char**desc = bench_desc_words[lng_index];
/* Key Gen */
bench_stats_start(&count, &start);
@@ -4799,7 +4859,7 @@ void bench_ed25519KeyGen(void)
}
count += i;
} while (bench_stats_sym_check(start));
bench_stats_asym_finish("ED", 25519, "key gen", 0, count, start, 0);
bench_stats_asym_finish("ED", 25519, desc[2], 0, count, start, 0);
}
@@ -4814,6 +4874,7 @@ void bench_ed25519KeySign(void)
byte msg[512];
word32 x = 0;
#endif
const char**desc = bench_desc_words[lng_index];
wc_ed25519_init(&genKey);
@@ -4841,7 +4902,7 @@ void bench_ed25519KeySign(void)
count += i;
} while (bench_stats_sym_check(start));
exit_ed_sign:
bench_stats_asym_finish("ED", 25519, "sign", 0, count, start, ret);
bench_stats_asym_finish("ED", 25519, desc[4], 0, count, start, ret);
#ifdef HAVE_ED25519_VERIFY
bench_stats_start(&count, &start);
@@ -4858,7 +4919,7 @@ exit_ed_sign:
count += i;
} while (bench_stats_sym_check(start));
exit_ed_verify:
bench_stats_asym_finish("ED", 25519, "verify", 0, count, start, ret);
bench_stats_asym_finish("ED", 25519, desc[5], 0, count, start, ret);
#endif /* HAVE_ED25519_VERIFY */
#endif /* HAVE_ED25519_SIGN */
@@ -5047,23 +5108,21 @@ static void Usage(void)
#endif
printf("benchmark\n");
printf("-? Help, print this usage\n");
printf("-csv Print terminal output in csv format\n");
printf("-base10 Display bytes as power of 10 (eg 1 kB = 1000 Bytes)\n");
printf("%s", bench_Usage_msg1[lng_index][0]); /* option -? */
printf("%s", bench_Usage_msg1[lng_index][1]); /* option -csv */
printf("%s", bench_Usage_msg1[lng_index][2]); /* option -base10 */
#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM)
printf("-no_aad No additional authentication data passed.\n");
printf("%s", bench_Usage_msg1[lng_index][3]); /* option -no_add */
#endif
printf("-dgst_full Full digest operation performed.\n");
printf("%s", bench_Usage_msg1[lng_index][4]); /* option -dgst_full */
#ifndef NO_RSA
printf("-rsa_sign Measure RSA sign/verify instead of encrypt/decrypt.\n");
printf("%s", bench_Usage_msg1[lng_index][5]); /* option -ras_sign */
#ifdef WOLFSSL_KEY_GEN
printf("<keySz> -rsa-sz\n"
" Measure RSA <key size> performance.\n");
printf("%s", bench_Usage_msg1[lng_index][6]); /* option -rsa-sz */
#endif
#endif
#ifndef WOLFSSL_BENCHMARK_ALL
printf("-<alg> Algorithm to benchmark. Available algorithms "
"include:\n");
printf("%s", bench_Usage_msg1[lng_index][7]); /* option -<alg> */
printf(" ");
line = 13;
for (i=0; bench_cipher_opt[i].str != NULL; i++)
@@ -5086,7 +5145,10 @@ static void Usage(void)
print_alg(bench_other_opt[i].str + 1, &line);
printf("\n");
#endif
printf("<num> Size of block in bytes\n");
printf("%s", bench_Usage_msg1[lng_index][8]); /* option -lng */
printf("%s", bench_Usage_msg1[lng_index][9]); /* option <num> */
printf("%s", bench_Usage_msg1[lng_index][10]); /* usage another notification */
}
/* Match the command line argument with the string.
@@ -5111,6 +5173,12 @@ int main(int argc, char** argv)
while (argc > 1) {
if (string_matches(argv[1], "-?")) {
if(--argc>1){
lng_index = atoi((++argv)[1]);
if(lng_index<0||lng_index>1) {
lng_index = 0;
}
}
Usage();
return 0;
}
@@ -5121,6 +5189,17 @@ int main(int argc, char** argv)
"--\n", LIBWOLFSSL_VERSION_STRING);
return 0;
}
else if (string_matches(argv[1], "-lng")) {
argc--;
argv++;
if(argc>1) {
lng_index = atoi(argv[1]);
if(lng_index<0||lng_index>1){
printf("invalid number(%d) is specified. [<num> :0-1]\n",lng_index);
lng_index = 0;
}
}
}
else if (string_matches(argv[1], "-base10"))
base2 = 0;
#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM)