⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 speed.c

📁 mediastreamer2是开源的网络传输媒体流的库
💻 C
📖 第 1 页 / 共 5 页
字号:
			if (rsa_count <= 1) 				{				/* if longer than 10s, don't do any more */				for (j++; j<EC_NUM; j++)				ecdsa_doit[j]=0;				}			}		}	if (rnd_fake) RAND_cleanup();#endif#ifndef OPENSSL_NO_ECDH	if (RAND_status() != 1)		{		RAND_seed(rnd_seed, sizeof rnd_seed);		rnd_fake = 1;		}	for (j=0; j<EC_NUM; j++)		{		if (!ecdh_doit[j]) continue;		ecdh_a[j] = EC_KEY_new_by_curve_name(test_curves[j]);		ecdh_b[j] = EC_KEY_new_by_curve_name(test_curves[j]);		if ((ecdh_a[j] == NULL) || (ecdh_b[j] == NULL))			{			BIO_printf(bio_err,"ECDH failure.\n");			ERR_print_errors(bio_err);			rsa_count=1;			}		else			{			/* generate two ECDH key pairs */			if (!EC_KEY_generate_key(ecdh_a[j]) ||				!EC_KEY_generate_key(ecdh_b[j]))				{				BIO_printf(bio_err,"ECDH key generation failure.\n");				ERR_print_errors(bio_err);				rsa_count=1;						}			else				{				/* If field size is not more than 24 octets, then use SHA-1 hash of result;				 * otherwise, use result (see section 4.8 of draft-ietf-tls-ecc-03.txt).				 */				int field_size, outlen;				void *(*kdf)(const void *in, size_t inlen, void *out, size_t *xoutlen);				field_size = EC_GROUP_get_degree(EC_KEY_get0_group(ecdh_a[j]));				if (field_size <= 24 * 8)					{					outlen = KDF1_SHA1_len;					kdf = KDF1_SHA1;					}				else					{					outlen = (field_size+7)/8;					kdf = NULL;					}				secret_size_a = ECDH_compute_key(secret_a, outlen,					EC_KEY_get0_public_key(ecdh_b[j]),					ecdh_a[j], kdf);				secret_size_b = ECDH_compute_key(secret_b, outlen,					EC_KEY_get0_public_key(ecdh_a[j]),					ecdh_b[j], kdf);				if (secret_size_a != secret_size_b) 					ecdh_checks = 0;				else					ecdh_checks = 1;				for (secret_idx = 0; 				    (secret_idx < secret_size_a)					&& (ecdh_checks == 1);				    secret_idx++)					{					if (secret_a[secret_idx] != secret_b[secret_idx])					ecdh_checks = 0;					}				if (ecdh_checks == 0)					{					BIO_printf(bio_err,"ECDH computations don't match.\n");					ERR_print_errors(bio_err);					rsa_count=1;							}				pkey_print_message("","ecdh",				ecdh_c[j][0], 				test_curves_bits[j],				ECDH_SECONDS);				Time_F(START);				for (count=0,run=1; COND(ecdh_c[j][0]); count++)					{					ECDH_compute_key(secret_a, outlen,					EC_KEY_get0_public_key(ecdh_b[j]),					ecdh_a[j], kdf);					}				d=Time_F(STOP);				BIO_printf(bio_err, mr ? "+R7:%ld:%d:%.2f\n" :"%ld %d-bit ECDH ops in %.2fs\n",				count, test_curves_bits[j], d);				ecdh_results[j][0]=d/(double)count;				rsa_count=count;				}			}		if (rsa_count <= 1)			{			/* if longer than 10s, don't do any more */			for (j++; j<EC_NUM; j++)			ecdh_doit[j]=0;			}		}	if (rnd_fake) RAND_cleanup();#endif#ifdef HAVE_FORKshow_res:#endif	if(!mr)		{		fprintf(stdout,"%s\n",SSLeay_version(SSLEAY_VERSION));        fprintf(stdout,"%s\n",SSLeay_version(SSLEAY_BUILT_ON));		printf("options:");		printf("%s ",BN_options());#ifndef OPENSSL_NO_MD2		printf("%s ",MD2_options());#endif#ifndef OPENSSL_NO_RC4		printf("%s ",RC4_options());#endif#ifndef OPENSSL_NO_DES		printf("%s ",DES_options());#endif#ifndef OPENSSL_NO_AES		printf("%s ",AES_options());#endif#ifndef OPENSSL_NO_IDEA		printf("%s ",idea_options());#endif#ifndef OPENSSL_NO_BF		printf("%s ",BF_options());#endif		fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS));		printf("available timing options: ");#ifdef TIMES		printf("TIMES ");#endif#ifdef TIMEB		printf("TIMEB ");#endif#ifdef USE_TOD		printf("USE_TOD ");#endif#ifdef HZ#define as_string(s) (#s)		{		double dbl = HZ;		printf("HZ=%g", dbl);		}# ifdef _SC_CLK_TCK		printf(" [sysconf value]");# endif#endif		printf("\n");		printf("timing function used: %s%s%s%s%s%s%s\n",		       (ftime_used ? "ftime" : ""),		       (ftime_used + times_used > 1 ? "," : ""),		       (times_used ? "times" : ""),		       (ftime_used + times_used + gettimeofday_used > 1 ? "," : ""),		       (gettimeofday_used ? "gettimeofday" : ""),		       (ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""),		       (getrusage_used ? "getrusage" : ""));		}	if (pr_header)		{		if(mr)			fprintf(stdout,"+H");		else			{			fprintf(stdout,"The 'numbers' are in 1000s of bytes per second processed.\n"); 			fprintf(stdout,"type        ");			}		for (j=0;  j<SIZE_NUM; j++)			fprintf(stdout,mr ? ":%d" : "%7d bytes",lengths[j]);		fprintf(stdout,"\n");		}	for (k=0; k<ALGOR_NUM; k++)		{		if (!doit[k]) continue;		if(mr)			fprintf(stdout,"+F:%d:%s",k,names[k]);		else			fprintf(stdout,"%-13s",names[k]);		for (j=0; j<SIZE_NUM; j++)			{			if (results[k][j] > 10000 && !mr)				fprintf(stdout," %11.2fk",results[k][j]/1e3);			else				fprintf(stdout,mr ? ":%.2f" : " %11.2f ",results[k][j]);			}		fprintf(stdout,"\n");		}#ifndef OPENSSL_NO_RSA	j=1;	for (k=0; k<RSA_NUM; k++)		{		if (!rsa_doit[k]) continue;		if (j && !mr)			{			printf("%18ssign    verify    sign/s verify/s\n"," ");			j=0;			}		if(mr)			fprintf(stdout,"+F2:%u:%u:%f:%f\n",				k,rsa_bits[k],rsa_results[k][0],				rsa_results[k][1]);		else			fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",				rsa_bits[k],rsa_results[k][0],rsa_results[k][1],				1.0/rsa_results[k][0],1.0/rsa_results[k][1]);		}#endif#ifndef OPENSSL_NO_DSA	j=1;	for (k=0; k<DSA_NUM; k++)		{		if (!dsa_doit[k]) continue;		if (j && !mr)			{			printf("%18ssign    verify    sign/s verify/s\n"," ");			j=0;			}		if(mr)			fprintf(stdout,"+F3:%u:%u:%f:%f\n",				k,dsa_bits[k],dsa_results[k][0],dsa_results[k][1]);		else			fprintf(stdout,"dsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",				dsa_bits[k],dsa_results[k][0],dsa_results[k][1],				1.0/dsa_results[k][0],1.0/dsa_results[k][1]);		}#endif#ifndef OPENSSL_NO_ECDSA	j=1;	for (k=0; k<EC_NUM; k++)		{		if (!ecdsa_doit[k]) continue;		if (j && !mr)			{			printf("%30ssign    verify    sign/s verify/s\n"," ");			j=0;			}		if (mr)			fprintf(stdout,"+F4:%u:%u:%f:%f\n", 				k, test_curves_bits[k],				ecdsa_results[k][0],ecdsa_results[k][1]);		else			fprintf(stdout,				"%4u bit ecdsa (%s) %8.4fs %8.4fs %8.1f %8.1f\n", 				test_curves_bits[k],				test_curves_names[k],				ecdsa_results[k][0],ecdsa_results[k][1], 				1.0/ecdsa_results[k][0],1.0/ecdsa_results[k][1]);		}#endif#ifndef OPENSSL_NO_ECDH	j=1;	for (k=0; k<EC_NUM; k++)		{		if (!ecdh_doit[k]) continue;		if (j && !mr)			{			printf("%30sop      op/s\n"," ");			j=0;			}		if (mr)			fprintf(stdout,"+F5:%u:%u:%f:%f\n",				k, test_curves_bits[k],				ecdh_results[k][0], 1.0/ecdh_results[k][0]);		else			fprintf(stdout,"%4u bit ecdh (%s) %8.4fs %8.1f\n",				test_curves_bits[k],				test_curves_names[k],				ecdh_results[k][0], 1.0/ecdh_results[k][0]);		}#endif	mret=0;end:	ERR_print_errors(bio_err);	if (buf != NULL) OPENSSL_free(buf);	if (buf2 != NULL) OPENSSL_free(buf2);#ifndef OPENSSL_NO_RSA	for (i=0; i<RSA_NUM; i++)		if (rsa_key[i] != NULL)			RSA_free(rsa_key[i]);#endif#ifndef OPENSSL_NO_DSA	for (i=0; i<DSA_NUM; i++)		if (dsa_key[i] != NULL)			DSA_free(dsa_key[i]);#endif#ifndef OPENSSL_NO_ECDSA	for (i=0; i<EC_NUM; i++)		if (ecdsa[i] != NULL)			EC_KEY_free(ecdsa[i]);#endif#ifndef OPENSSL_NO_ECDH	for (i=0; i<EC_NUM; i++)	{		if (ecdh_a[i] != NULL)			EC_KEY_free(ecdh_a[i]);		if (ecdh_b[i] != NULL)			EC_KEY_free(ecdh_b[i]);	}#endif	apps_shutdown();	OPENSSL_EXIT(mret);	}static void print_message(const char *s, long num, int length)	{#ifdef SIGALRM	BIO_printf(bio_err,mr ? "+DT:%s:%d:%d\n"		   : "Doing %s for %ds on %d size blocks: ",s,SECONDS,length);	(void)BIO_flush(bio_err);	alarm(SECONDS);#else	BIO_printf(bio_err,mr ? "+DN:%s:%ld:%d\n"		   : "Doing %s %ld times on %d size blocks: ",s,num,length);	(void)BIO_flush(bio_err);#endif#ifdef LINT	num=num;#endif	}static void pkey_print_message(const char *str, const char *str2, long num,	int bits, int tm)	{#ifdef SIGALRM	BIO_printf(bio_err,mr ? "+DTP:%d:%s:%s:%d\n"			   : "Doing %d bit %s %s's for %ds: ",bits,str,str2,tm);	(void)BIO_flush(bio_err);	alarm(RSA_SECONDS);#else	BIO_printf(bio_err,mr ? "+DNP:%ld:%d:%s:%s\n"			   : "Doing %ld %d bit %s %s's: ",num,bits,str,str2);	(void)BIO_flush(bio_err);#endif#ifdef LINT	num=num;#endif	}static void print_result(int alg,int run_no,int count,double time_used)	{	BIO_printf(bio_err,mr ? "+R:%d:%s:%f\n"		   : "%d %s's in %.2fs\n",count,names[alg],time_used);	results[alg][run_no]=((double)count)/time_used*lengths[run_no];	}static char *sstrsep(char **string, const char *delim)    {    char isdelim[256];    char *token = *string;    if (**string == 0)        return NULL;    memset(isdelim, 0, sizeof isdelim);    isdelim[0] = 1;    while (*delim)        {        isdelim[(unsigned char)(*delim)] = 1;        delim++;        }    while (!isdelim[(unsigned char)(**string)])        {        (*string)++;        }    if (**string)        {        **string = 0;        (*string)++;        }    return token;    }#ifdef HAVE_FORKstatic int do_multi(int multi)	{	int n;	int fd[2];	int *fds;	static char sep[]=":";	fds=malloc(multi*sizeof *fds);	for(n=0 ; n < multi ; ++n)		{		pipe(fd);		if(fork())			{			close(fd[1]);			fds[n]=fd[0];			}		else			{			close(fd[0]);			close(1);			dup(fd[1]);			close(fd[1]);			mr=1;			usertime=0;			return 0;			}		printf("Forked child %d\n",n);		}	/* for now, assume the pipe is long enough to take all the output */	for(n=0 ; n < multi ; ++n)		{		FILE *f;		char buf[1024];		char *p;		f=fdopen(fds[n],"r");		while(fgets(buf,sizeof buf,f))			{			p=strchr(buf,'\n');			if(p)				*p='\0';			if(buf[0] != '+')				{				fprintf(stderr,"Don't understand line '%s' from child %d\n",						buf,n);				continue;				}			printf("Got: %s from %d\n",buf,n);			if(!strncmp(buf,"+F:",3))				{				int alg;				int j;				p=buf+3;				alg=atoi(sstrsep(&p,sep));				sstrsep(&p,sep);				for(j=0 ; j < SIZE_NUM ; ++j)					results[alg][j]+=atof(sstrsep(&p,sep));				}			else if(!strncmp(buf,"+F2:",4))				{				int k;				double d;								p=buf+4;				k=atoi(sstrsep(&p,sep));				sstrsep(&p,sep);				d=atof(sstrsep(&p,sep));				if(n)					rsa_results[k][0]=1/(1/rsa_results[k][0]+1/d);				else					rsa_results[k][0]=d;				d=atof(sstrsep(&p,sep));				if(n)					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d);				else					rsa_results[k][1]=d;				}			else if(!strncmp(buf,"+F2:",4))				{				int k;				double d;								p=buf+4;				k=atoi(sstrsep(&p,sep));				sstrsep(&p,sep);				d=atof(sstrsep(&p,sep));				if(n)					rsa_results[k][0]=1/(1/rsa_results[k][0]+1/d);				else					rsa_results[k][0]=d;				d=atof(sstrsep(&p,sep));				if(n)					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d);				else					rsa_results[k][1]=d;				}			else if(!strncmp(buf,"+F3:",4))				{				int k;				double d;								p=buf+4;				k=atoi(sstrsep(&p,sep));				sstrsep(&p,sep);				d=atof(sstrsep(&p,sep));				if(n)					dsa_results[k][0]=1/(1/dsa_results[k][0]+1/d);				else					dsa_results[k][0]=d;				d=atof(sstrsep(&p,sep));				if(n)					dsa_results[k][1]=1/(1/dsa_results[k][1]+1/d);				else					dsa_results[k][1]=d;				}#ifndef OPENSSL_NO_ECDSA			else if(!strncmp(buf,"+F4:",4))				{				int k;				double d;								p=buf+4;				k=atoi(sstrsep(&p,sep));				sstrsep(&p,sep);				d=atof(sstrsep(&p,sep));				if(n)					ecdsa_results[k][0]=1/(1/ecdsa_results[k][0]+1/d)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -