Merge branch 'master' of https://github.com/ShaneIsrael/cyassl
This commit is contained in:
commit
b134894eb8
@ -51,6 +51,9 @@
|
|||||||
#include "cavium_common.h"
|
#include "cavium_common.h"
|
||||||
#include "cavium_ioctl.h"
|
#include "cavium_ioctl.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_NTRU
|
||||||
|
#include "ntru_crypto.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CYASSL_MDK_ARM)
|
#if defined(CYASSL_MDK_ARM)
|
||||||
extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ;
|
extern FILE * CyaSSL_fopen(const char *fname, const char *mode) ;
|
||||||
@ -101,6 +104,9 @@ void bench_dh(void);
|
|||||||
void bench_eccKeyGen(void);
|
void bench_eccKeyGen(void);
|
||||||
void bench_eccKeyAgree(void);
|
void bench_eccKeyAgree(void);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_NTRU
|
||||||
|
void bench_ntruKeyGen(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
double current_time(int);
|
double current_time(int);
|
||||||
|
|
||||||
@ -220,6 +226,9 @@ int benchmark_test(void *args)
|
|||||||
|
|
||||||
#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA)
|
#if defined(CYASSL_KEY_GEN) && !defined(NO_RSA)
|
||||||
bench_rsaKeyGen();
|
bench_rsaKeyGen();
|
||||||
|
#ifdef HAVE_NTRU
|
||||||
|
bench_ntruKeyGen();
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
@ -1025,6 +1034,76 @@ void bench_rsaKeyGen(void)
|
|||||||
" iterations\n", milliEach, genTimes);
|
" iterations\n", milliEach, genTimes);
|
||||||
}
|
}
|
||||||
#endif /* CYASSL_KEY_GEN */
|
#endif /* CYASSL_KEY_GEN */
|
||||||
|
#ifdef HAVE_NTRU
|
||||||
|
byte GetEntropy(ENTROPY_CMD cmd, byte* out);
|
||||||
|
|
||||||
|
byte GetEntropy(ENTROPY_CMD cmd, byte* out)
|
||||||
|
{
|
||||||
|
if (cmd == INIT)
|
||||||
|
return (InitRng(&rng) == 0) ? 1 : 0;
|
||||||
|
|
||||||
|
if (out == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (cmd == GET_BYTE_OF_ENTROPY)
|
||||||
|
return (RNG_GenerateBlock(&rng, out, 1) == 0) ? 1 : 0;
|
||||||
|
|
||||||
|
if (cmd == GET_NUM_BYTES_PER_BYTE_OF_ENTROPY) {
|
||||||
|
*out = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
void bench_ntruKeyGen(void)
|
||||||
|
{
|
||||||
|
double start, total, each, milliEach;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
byte public_key[5951]; /* 2048 key equivalent to rsa */
|
||||||
|
word16 public_key_len;
|
||||||
|
byte private_key[5951];
|
||||||
|
word16 private_key_len;
|
||||||
|
|
||||||
|
DRBG_HANDLE drbg;
|
||||||
|
static uint8_t const pers_str[] = {
|
||||||
|
'C', 'y', 'a', 'S', 'S', 'L', ' ', 't', 'e', 's', 't'
|
||||||
|
};
|
||||||
|
|
||||||
|
word32 rc = ntru_crypto_drbg_instantiate(112, pers_str, sizeof(pers_str), GetEntropy, &drbg);
|
||||||
|
|
||||||
|
if(rc != DRBG_OK) {
|
||||||
|
printf("NTRU drbg instantiate failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
start = current_time(1);
|
||||||
|
|
||||||
|
for(i = 0; i < genTimes; i++) {
|
||||||
|
ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2,
|
||||||
|
&public_key_len, NULL, &private_key_len, NULL);
|
||||||
|
ntru_crypto_ntru_encrypt_keygen(drbg, NTRU_EES401EP2,
|
||||||
|
&public_key_len, public_key, &private_key_len, private_key);
|
||||||
|
}
|
||||||
|
|
||||||
|
total = current_time(0) - start;
|
||||||
|
|
||||||
|
rc = ntru_crypto_drbg_uninstantiate(drbg);
|
||||||
|
|
||||||
|
if (rc != NTRU_OK) {
|
||||||
|
printf("NTRU drbg uninstantiate failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
each = total / genTimes;
|
||||||
|
milliEach = each * 1000;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
printf("NTRU 2048 key generation %6.3f milliseconds, avg over %d"
|
||||||
|
" iterations\n", milliEach, genTimes);
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
void bench_eccKeyGen(void)
|
void bench_eccKeyGen(void)
|
||||||
|
@ -1667,9 +1667,10 @@ static int GetKey(DecodedCert* cert)
|
|||||||
#else
|
#else
|
||||||
byte keyBlob[MAX_NTRU_KEY_SZ];
|
byte keyBlob[MAX_NTRU_KEY_SZ];
|
||||||
#endif
|
#endif
|
||||||
|
uint32_t remaining = (uint32_t)cert->maxIdx - cert->srcIdx;
|
||||||
|
|
||||||
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(key,
|
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(key,
|
||||||
&keyLen, NULL, &next);
|
&keyLen, NULL, &next, &remaining);
|
||||||
|
|
||||||
if (rc != NTRU_OK)
|
if (rc != NTRU_OK)
|
||||||
return ASN_NTRU_KEY_E;
|
return ASN_NTRU_KEY_E;
|
||||||
@ -1684,7 +1685,7 @@ static int GetKey(DecodedCert* cert)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(key,
|
rc = ntru_crypto_ntru_encrypt_subjectPublicKeyInfo2PublicKey(key,
|
||||||
&keyLen, keyBlob, &next);
|
&keyLen, keyBlob, &next, &remaining);
|
||||||
if (rc != NTRU_OK) {
|
if (rc != NTRU_OK) {
|
||||||
#ifdef CYASSL_SMALL_STACK
|
#ifdef CYASSL_SMALL_STACK
|
||||||
XFREE(keyBlob, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
XFREE(keyBlob, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
Loading…
Reference in New Issue
Block a user