📄 speed.c
字号:
#ifndef OPENSSL_NO_AES static const unsigned char key24[24]= {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; static const unsigned char key32[32]= {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34, 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56};#endif#ifndef OPENSSL_NO_AES#define MAX_BLOCK_SIZE 128#else#define MAX_BLOCK_SIZE 64#endif unsigned char DES_iv[8]; unsigned char iv[MAX_BLOCK_SIZE/8];#ifndef OPENSSL_NO_DES DES_cblock *buf_as_des_cblock = NULL; static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0}; static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12}; static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; DES_key_schedule sch; DES_key_schedule sch2; DES_key_schedule sch3;#endif#ifndef OPENSSL_NO_AES AES_KEY aes_ks1, aes_ks2, aes_ks3;#endif#define D_MD2 0#define D_MDC2 1#define D_MD4 2#define D_MD5 3#define D_HMAC 4#define D_SHA1 5#define D_RMD160 6#define D_RC4 7#define D_CBC_DES 8#define D_EDE3_DES 9#define D_CBC_IDEA 10#define D_CBC_RC2 11#define D_CBC_RC5 12#define D_CBC_BF 13#define D_CBC_CAST 14#define D_CBC_128_AES 15#define D_CBC_192_AES 16#define D_CBC_256_AES 17#define D_EVP 18#define D_SHA256 19#define D_SHA512 20 double d=0.0; long c[ALGOR_NUM][SIZE_NUM];#define R_DSA_512 0#define R_DSA_1024 1#define R_DSA_2048 2#define R_RSA_512 0#define R_RSA_1024 1#define R_RSA_2048 2#define R_RSA_4096 3#define R_EC_P160 0#define R_EC_P192 1 #define R_EC_P224 2#define R_EC_P256 3#define R_EC_P384 4#define R_EC_P521 5#define R_EC_K163 6#define R_EC_K233 7#define R_EC_K283 8#define R_EC_K409 9#define R_EC_K571 10#define R_EC_B163 11#define R_EC_B233 12#define R_EC_B283 13#define R_EC_B409 14#define R_EC_B571 15#ifndef OPENSSL_NO_RSA RSA *rsa_key[RSA_NUM]; long rsa_c[RSA_NUM][2]; static unsigned int rsa_bits[RSA_NUM]={512,1024,2048,4096}; static unsigned char *rsa_data[RSA_NUM]= {test512,test1024,test2048,test4096}; static int rsa_data_length[RSA_NUM]={ sizeof(test512),sizeof(test1024), sizeof(test2048),sizeof(test4096)};#endif#ifndef OPENSSL_NO_DSA DSA *dsa_key[DSA_NUM]; long dsa_c[DSA_NUM][2]; static unsigned int dsa_bits[DSA_NUM]={512,1024,2048};#endif#ifndef OPENSSL_NO_EC /* We only test over the following curves as they are representative, * To add tests over more curves, simply add the curve NID * and curve name to the following arrays and increase the * EC_NUM value accordingly. */ static unsigned int test_curves[EC_NUM] = { /* Prime Curves */ NID_secp160r1, NID_X9_62_prime192v1, NID_secp224r1, NID_X9_62_prime256v1, NID_secp384r1, NID_secp521r1, /* Binary Curves */ NID_sect163k1, NID_sect233k1, NID_sect283k1, NID_sect409k1, NID_sect571k1, NID_sect163r2, NID_sect233r1, NID_sect283r1, NID_sect409r1, NID_sect571r1 }; static const char * test_curves_names[EC_NUM] = { /* Prime Curves */ "secp160r1", "nistp192", "nistp224", "nistp256", "nistp384", "nistp521", /* Binary Curves */ "nistk163", "nistk233", "nistk283", "nistk409", "nistk571", "nistb163", "nistb233", "nistb283", "nistb409", "nistb571" }; static int test_curves_bits[EC_NUM] = { 160, 192, 224, 256, 384, 521, 163, 233, 283, 409, 571, 163, 233, 283, 409, 571 };#endif#ifndef OPENSSL_NO_ECDSA unsigned char ecdsasig[256]; unsigned int ecdsasiglen; EC_KEY *ecdsa[EC_NUM]; long ecdsa_c[EC_NUM][2];#endif#ifndef OPENSSL_NO_ECDH EC_KEY *ecdh_a[EC_NUM], *ecdh_b[EC_NUM]; unsigned char secret_a[MAX_ECDH_SIZE], secret_b[MAX_ECDH_SIZE]; int secret_size_a, secret_size_b; int ecdh_checks = 0; int secret_idx = 0; long ecdh_c[EC_NUM][2];#endif int rsa_doit[RSA_NUM]; int dsa_doit[DSA_NUM];#ifndef OPENSSL_NO_ECDSA int ecdsa_doit[EC_NUM];#endif#ifndef OPENSSL_NO_ECDH int ecdh_doit[EC_NUM];#endif int doit[ALGOR_NUM]; int pr_header=0; const EVP_CIPHER *evp_cipher=NULL; const EVP_MD *evp_md=NULL; int decrypt=0;#ifdef HAVE_FORK int multi=0;#endif#ifndef TIMES usertime=-1;#endif apps_startup(); memset(results, 0, sizeof(results));#ifndef OPENSSL_NO_DSA memset(dsa_key,0,sizeof(dsa_key));#endif#ifndef OPENSSL_NO_ECDSA for (i=0; i<EC_NUM; i++) ecdsa[i] = NULL;#endif#ifndef OPENSSL_NO_ECDH for (i=0; i<EC_NUM; i++) { ecdh_a[i] = NULL; ecdh_b[i] = NULL; }#endif if (bio_err == NULL) if ((bio_err=BIO_new(BIO_s_file())) != NULL) BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); if (!load_config(bio_err, NULL)) goto end;#ifndef OPENSSL_NO_RSA memset(rsa_key,0,sizeof(rsa_key)); for (i=0; i<RSA_NUM; i++) rsa_key[i]=NULL;#endif if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) { BIO_printf(bio_err,"out of memory\n"); goto end; }#ifndef OPENSSL_NO_DES buf_as_des_cblock = (DES_cblock *)buf;#endif if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) { BIO_printf(bio_err,"out of memory\n"); goto end; } memset(c,0,sizeof(c)); memset(DES_iv,0,sizeof(DES_iv)); memset(iv,0,sizeof(iv)); for (i=0; i<ALGOR_NUM; i++) doit[i]=0; for (i=0; i<RSA_NUM; i++) rsa_doit[i]=0; for (i=0; i<DSA_NUM; i++) dsa_doit[i]=0;#ifndef OPENSSL_NO_ECDSA for (i=0; i<EC_NUM; i++) ecdsa_doit[i]=0;#endif#ifndef OPENSSL_NO_ECDH for (i=0; i<EC_NUM; i++) ecdh_doit[i]=0;#endif j=0; argc--; argv++; while (argc) { if ((argc > 0) && (strcmp(*argv,"-elapsed") == 0)) { usertime = 0; j--; /* Otherwise, -elapsed gets confused with an algorithm. */ } else if ((argc > 0) && (strcmp(*argv,"-evp") == 0)) { argc--; argv++; if(argc == 0) { BIO_printf(bio_err,"no EVP given\n"); goto end; } evp_cipher=EVP_get_cipherbyname(*argv); if(!evp_cipher) { evp_md=EVP_get_digestbyname(*argv); } if(!evp_cipher && !evp_md) { BIO_printf(bio_err,"%s is an unknown cipher or digest\n",*argv); goto end; } doit[D_EVP]=1; } else if (argc > 0 && !strcmp(*argv,"-decrypt")) { decrypt=1; j--; /* Otherwise, -elapsed gets confused with an algorithm. */ }#ifndef OPENSSL_NO_ENGINE else if ((argc > 0) && (strcmp(*argv,"-engine") == 0)) { argc--; argv++; if(argc == 0) { BIO_printf(bio_err,"no engine given\n"); goto end; } e = setup_engine(bio_err, *argv, 0); /* j will be increased again further down. We just don't want speed to confuse an engine with an algorithm, especially when none is given (which means all of them should be run) */ j--; }#endif#ifdef HAVE_FORK else if ((argc > 0) && (strcmp(*argv,"-multi") == 0)) { argc--; argv++; if(argc == 0) { BIO_printf(bio_err,"no multi count given\n"); goto end; } multi=atoi(argv[0]); if(multi <= 0) { BIO_printf(bio_err,"bad multi count\n"); goto end; } j--; /* Otherwise, -mr gets confused with an algorithm. */ }#endif else if (argc > 0 && !strcmp(*argv,"-mr")) { mr=1; j--; /* Otherwise, -mr gets confused with an algorithm. */ } else#ifndef OPENSSL_NO_MD2 if (strcmp(*argv,"md2") == 0) doit[D_MD2]=1; else#endif#ifndef OPENSSL_NO_MDC2 if (strcmp(*argv,"mdc2") == 0) doit[D_MDC2]=1; else#endif#ifndef OPENSSL_NO_MD4 if (strcmp(*argv,"md4") == 0) doit[D_MD4]=1; else#endif#ifndef OPENSSL_NO_MD5 if (strcmp(*argv,"md5") == 0) doit[D_MD5]=1; else#endif#ifndef OPENSSL_NO_MD5 if (strcmp(*argv,"hmac") == 0) doit[D_HMAC]=1; else#endif#ifndef OPENSSL_NO_SHA if (strcmp(*argv,"sha1") == 0) doit[D_SHA1]=1; else if (strcmp(*argv,"sha") == 0) doit[D_SHA1]=1, doit[D_SHA256]=1, doit[D_SHA512]=1; else#ifndef OPENSSL_NO_SHA256 if (strcmp(*argv,"sha256") == 0) doit[D_SHA256]=1; else#endif#ifndef OPENSSL_NO_SHA512 if (strcmp(*argv,"sha512") == 0) doit[D_SHA512]=1; else#endif#endif#ifndef OPENSSL_NO_RIPEMD if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1; else if (strcmp(*argv,"rmd160") == 0) doit[D_RMD160]=1; else if (strcmp(*argv,"ripemd160") == 0) doit[D_RMD160]=1; else#endif#ifndef OPENSSL_NO_RC4 if (strcmp(*argv,"rc4") == 0) doit[D_RC4]=1; else #endif#ifndef OPENSSL_NO_DES if (strcmp(*argv,"des-cbc") == 0) doit[D_CBC_DES]=1; else if (strcmp(*argv,"des-ede3") == 0) doit[D_EDE3_DES]=1; else#endif#ifndef OPENSSL_NO_AES if (strcmp(*argv,"aes-128-cbc") == 0) doit[D_CBC_128_AES]=1; else if (strcmp(*argv,"aes-192-cbc") == 0) doit[D_CBC_192_AES]=1; else if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1; else#endif#ifndef OPENSSL_NO_RSA#if 0 /* was: #ifdef RSAref */ if (strcmp(*argv,"rsaref") == 0) { RSA_set_default_openssl_method(RSA_PKCS1_RSAref()); j--; } else#endif#ifndef RSA_NULL if (strcmp(*argv,"openssl") == 0) { RSA_set_default_method(RSA_PKCS1_SSLeay()); j--; } else#endif#endif /* !OPENSSL_NO_RSA */ if (strcmp(*argv,"dsa512") == 0) dsa_doit[R_DSA_512]=2; else if (strcmp(*argv,"dsa1024") == 0) dsa_doit[R_DSA_1024]=2; else if (strcmp(*argv,"dsa2048") == 0) dsa_doit[R_DSA_2048]=2; else if (strcmp(*argv,"rsa512") == 0) rsa_doit[R_RSA_512]=2; else if (strcmp(*argv,"rsa1024") == 0) rsa_doit[R_RSA_1024]=2; else if (strcmp(*argv,"rsa2048") == 0) rsa_doit[R_RSA_2048]=2; else if (strcmp(*argv,"rsa4096") == 0) rsa_doit[R_RSA_4096]=2; else#ifndef OPENSSL_NO_RC2 if (strcmp(*argv,"rc2-cbc") == 0) doit[D_CBC_RC2]=1; else if (strcmp(*argv,"rc2") == 0) doit[D_CBC_RC2]=1; else#endif#ifndef OPENSSL_NO_RC5 if (strcmp(*argv,"rc5-cbc") == 0) doit[D_CBC_RC5]=1; else if (strcmp(*argv,"rc5") == 0) doit[D_CBC_RC5]=1; else#endif#ifndef OPENSSL_NO_IDEA if (strcmp(*argv,"idea-cbc") == 0) doit[D_CBC_IDEA]=1; else if (strcmp(*argv,"idea") == 0) doit[D_CBC_IDEA]=1; else#endif#ifndef OPENSSL_NO_BF if (strcmp(*argv,"bf-cbc") == 0) doit[D_CBC_BF]=1; else if (strcmp(*argv,"blowfish") == 0) doit[D_CBC_BF]=1; else if (strcmp(*argv,"bf") == 0) doit[D_CBC_BF]=1; else#endif#ifndef OPENSSL_NO_CAST if (strcmp(*argv,"cast-cbc") == 0) doit[D_CBC_CAST]=1; else if (strcmp(*argv,"cast") == 0) doit[D_CBC_CAST]=1; else if (strcmp(*argv,"cast5") == 0) doit[D_CBC_CAST]=1; else#endif#ifndef OPENSSL_NO_DES if (strcmp(*argv,"des") == 0) { doit[D_CBC_DES]=1; doit[D_EDE3_DES]=1; } else#endif#ifndef OPENSSL_NO_AES if (strcmp(*argv,"aes") == 0) { doit[D_CBC_128_AES]=1; doit[D_CBC_192_AES]=1; doit[D_CBC_256_AES]=1; } else#endif#ifndef OPENSSL_NO_RSA if (strcmp(*argv,"rsa") == 0) { rsa_doit[R_RSA_512]=1; rsa_doit[R_RSA_1024]=1; rsa_doit[R_RSA_2048]=1; rsa_doit[R_RSA_4096]=1; } else#endif#ifndef OPENSSL_NO_DSA if (strcmp(*argv,"dsa") == 0) { dsa_doit[R_DSA_512]=1; dsa_doit[R_DSA_1024]=1; dsa_doit[R_DSA_2048]=1; } else#endif#ifndef OPENSSL_NO_ECDSA if (strcmp(*argv,"ecdsap160") == 0) ecdsa_doit[R_EC_P160]=2; else if (strcmp(*argv,"ecdsap192") == 0) ecdsa_doit[R_EC_P192]=2; else if (strcmp(*argv,"ecdsap224") == 0) ecdsa_doit[R_EC_P224]=2; else if (strcmp(*argv,"ecdsap256") == 0) ecdsa_doit[R_EC_P256]=2; else if (strcmp(*argv,"ecdsap384") == 0) ecdsa_doit[R_EC_P384]=2; else if (strcmp(*argv,"ecdsap521") == 0) ecdsa_doit[R_EC_P521]=2; else if (strcmp(*argv,"ecdsak163") == 0) ecdsa_doit[R_EC_K163]=2; else if (strcmp(*argv,"ecdsak233") == 0) ecdsa_doit[R_EC_K233]=2; else if (strcmp(*argv,"ecdsak283") == 0) ecdsa_doit[R_EC_K283]=2; else if (strcmp(*argv,"ecdsak409") == 0) ecdsa_doit[R_EC_K409]=2; else if (strcmp(*argv,"ecdsak571") == 0) ecdsa_doit[R_EC_K571]=2; else if (strcmp(*argv,"ecdsab163") == 0) ecdsa_doit[R_EC_B163]=2; else if (strcmp(*argv,"ecdsab233") == 0) ecdsa_doit[R_EC_B233]=2; else if (strcmp(*argv,"ecdsab283") == 0) ecdsa_doit[R_EC_B283]=2; else if (strcmp(*argv,"ecdsab409") == 0) ecdsa_doit[R_EC_B409]=2; else if (strcmp(*argv,"ecdsab571") == 0) ecdsa_doit[R_EC_B571]=2; else if (strcmp(*argv,"ecdsa") == 0) { for (i=0; i < EC_NUM; i++) ecdsa_doit[i]=1; } else#endif#ifndef OPENSSL_NO_ECDH if (strcmp(*argv,"ecdhp160") == 0) ecdh_doit[R_EC_P160]=2; else if (strcmp(*argv,"ecdhp192") == 0) ecdh_doit[R_EC_P192]=2; else if (strcmp(*argv,"ecdhp224") == 0) ecdh_doit[R_EC_P224]=2; else if (strcmp(*argv,"ecdhp256") == 0) ecdh_doit[R_EC_P256]=2; else if (strcmp(*argv,"ecdhp384") == 0) ecdh_doit[R_EC_P384]=2; else if (strcmp(*argv,"ecdhp521") == 0) ecdh_doit[R_EC_P521]=2; else if (strcmp(*argv,"ecdhk163") == 0) ecdh_doit[R_EC_K163]=2; else if (strcmp(*argv,"ecdhk233") == 0) ecdh_doit[R_EC_K233]=2; else if (strcmp(*argv,"ecdhk283") == 0) ecdh_doit[R_EC_K283]=2; else if (strcmp(*argv,"ecdhk409") == 0) ecdh_doit[R_EC_K409]=2; else if (strcmp(*argv,"ecdhk571") == 0) ecdh_doit[R_EC_K571]=2; else if (strcmp(*argv,"ecdhb163") == 0) ecdh_doit[R_EC_B163]=2; else if (strcmp(*argv,"ecdhb233") == 0) ecdh_doit[R_EC_B233]=2; else if (strcmp(*argv,"ecdhb283") == 0) ecdh_doit[R_EC_B283]=2; else if (strcmp(*argv,"ecdhb409") == 0) ecdh_doit[R_EC_B409]=2; else if (strcmp(*argv,"ecdhb571") == 0) ecdh_doit[R_EC_B571]=2; else if (strcmp(*argv,"ecdh") == 0) { for (i=0; i < EC_NUM; i++) ecdh_doit[i]=1; } else#endif { BIO_printf(bio_err,"Error: bad option or value\n"); BIO_printf(bio_err,"\n"); BIO_printf(bio_err,"Available values:\n");#ifndef OPENSSL_NO_MD2 BIO_printf(bio_err,"md2 ");#endif#ifndef OPENSSL_NO_MDC2 BIO_printf(bio_err,"mdc2 ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -