62 #if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
69 #include OPENSSL_UNISTD_IO
72 #ifndef OPENSSL_SYS_NETWARE
74 #define crypt(c,s) (des_crypt((c),(s)))
81 #include <sys/types.h>
82 #include <sys/times.h>
89 #if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
94 #include <sys/timeb.h>
97 #if defined(sun) || defined(__ultrix)
100 #include <sys/param.h>
108 # ifndef _BSD_CLK_TCK_
111 # define HZ ((double)_BSD_CLK_TCK_)
114 # define HZ ((double)CLK_TCK)
118 #define BUFSIZE ((long)1024)
123 #if defined(__STDC__) || defined(sgi) || defined(_AIX)
124 #define SIGRETTYPE void
126 #define SIGRETTYPE int
129 SIGRETTYPE sig_done(
int sig);
130 SIGRETTYPE sig_done(
int sig)
132 signal(SIGALRM,sig_done);
147 static struct tms tstart,tend;
157 ret=((double)(tend.tms_utime-tstart.tms_utime))/
HZ;
158 return((ret == 0.0)?1
e-6:ret);
161 static struct timeb tstart,tend;
172 i=(long)tend.millitm-(
long)tstart.millitm;
173 ret=((double)(tend.time-tstart.time))+((
double)i)/1e3;
174 return((ret == 0.0)?1
e-6:ret);
179 int main(
int argc,
char **argv)
182 static unsigned char buf[
BUFSIZE];
183 static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
184 static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
185 static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
193 printf(
"To get the most accurate results, try to run this\n");
194 printf(
"program when this computer is idle.\n");
201 printf(
"First we calculate the approximate speed ...\n");
210 for (i=count; i; i--)
219 printf(
"Doing set_key %ld times\n",ca);
220 #define COND(d) (count != (d))
223 #define COND(c) (run)
224 #define COUNT(d) (count)
225 signal(SIGALRM,sig_done);
226 printf(
"Doing set_key for 10 seconds\n");
231 for (count=0,
run=1;
COND(ca); count++)
234 printf(
"%ld set_key's in %.2f seconds\n",count,d);
235 a=((double)
COUNT(ca))/d;
238 printf(
"Doing DES_encrypt's for 10 seconds\n");
241 printf(
"Doing DES_encrypt %ld times\n",cb);
244 for (count=0,
run=1;
COND(cb); count++)
251 printf(
"%ld DES_encrypt's in %.2f second\n",count,d);
252 b=((double)
COUNT(cb)*8)/d;
255 printf(
"Doing DES_cbc_encrypt on %ld byte blocks for 10 seconds\n",
259 printf(
"Doing DES_cbc_encrypt %ld times on %ld byte blocks\n",cc,
263 for (count=0,
run=1;
COND(cc); count++)
267 printf(
"%ld DES_cbc_encrypt's of %ld byte blocks in %.2f second\n",
272 printf(
"Doing DES_ede_cbc_encrypt on %ld byte blocks for 10 seconds\n",
276 printf(
"Doing DES_ede_cbc_encrypt %ld times on %ld byte blocks\n",cd,
280 for (count=0,
run=1;
COND(cd); count++)
288 printf(
"%ld DES_ede_cbc_encrypt's of %ld byte blocks in %.2f second\n",
293 printf(
"Doing crypt for 10 seconds\n");
296 printf(
"Doing crypt %ld times\n",ce);
299 for (count=0,
run=1;
COND(ce); count++)
300 crypt(
"testing1",
"ef");
302 printf(
"%ld crypts in %.2f second\n",count,e);
303 e=((double)
COUNT(ce))/e;
305 printf(
"set_key per sec = %12.2f (%9.3fuS)\n",a,1.0e6/a);
306 printf(
"DES raw ecb bytes per sec = %12.2f (%9.3fuS)\n",b,8.0e6/b);
307 printf(
"DES cbc bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c);
308 printf(
"DES ede cbc bytes per sec = %12.2f (%9.3fuS)\n",d,8.0e6/d);
309 printf(
"crypt per sec = %12.2f (%9.3fuS)\n",e,1.0e6/e);
311 #if defined(LINT) || defined(OPENSSL_SYS_MSDOS)