1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/rc4/rc4speed.c */ 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved. 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com). 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL. 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to. The following conditions 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA, 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed. 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used. 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package. 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met: 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer. 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer in the 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * documentation and/or other materials provided with the distribution. 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * must display the following acknowledgement: 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes cryptographic software written by 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Eric Young (eay@cryptsoft.com)" 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The word 'cryptographic' can be left out if the rouines from the library 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * being used are not cryptographic related :-). 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the apps directory (application code) you must include an acknowledgement: 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE. 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed. i.e. this code cannot simply be 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.] 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX) 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define TIMES 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h> 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h> 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include OPENSSL_UNISTD_IO 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOPENSSL_DECLARE_EXIT 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_NETWARE 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <signal.h> 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef _IRIX 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <time.h> 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/types.h> 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/times.h> 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Depending on the VMS version, the tms structure is perhaps defined. 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project The __TMS macro will show if it was. If it wasn't defined, we should 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project undefine TIMES, since that tells the rest of the program how things 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project should be handled. -- Richard Levitte */ 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef TIMES 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/timeb.h> 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(sun) || defined(__ultrix) 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _POSIX_SOURCE 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <limits.h> 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/param.h> 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rc4.h> 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following if from times(3) man page. It may need to be changed */ 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HZ 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef CLK_TCK 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HZ 100.0 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /* CLK_TCK */ 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HZ ((double)CLK_TCK) 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BUFSIZE ((long)1024) 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong run=0; 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdouble Time_F(int s); 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__STDC__) || defined(sgi) || defined(_AIX) 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE void 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE int 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSIGRETTYPE sig_done(int sig); 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSIGRETTYPE sig_done(int sig) 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project signal(SIGALRM,sig_done); 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project run=0; 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef LINT 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sig=sig; 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define START 0 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STOP 1 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdouble Time_F(int s) 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project double ret; 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static struct tms tstart,tend; 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (s == START) 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project times(&tstart); 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return(0); 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project else 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project times(&tend); 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ; 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return((ret == 0.0)?1e-6:ret); 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /* !times() */ 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static struct timeb tstart,tend; 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long i; 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (s == START) 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ftime(&tstart); 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return(0); 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project else 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ftime(&tend); 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project i=(long)tend.millitm-(long)tstart.millitm; 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret=((double)(tend.time-tstart.time))+((double)i)/1e3; 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return((ret == 0.0)?1e-6:ret); 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char **argv) 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long count; 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static unsigned char buf[BUFSIZE]; 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static unsigned char key[] ={ 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10, 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project }; 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_KEY sch; 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project double a,b,c,d; 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef SIGALRM 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long ca,cb,cc; 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("To get the most accurate results, try to run this\n"); 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("program when this computer is idle.\n"); 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef SIGALRM 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("First we calculate the approximate speed ...\n"); 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_set_key(&sch,16,key); 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project count=10; 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project do { 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long i; 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned long data[2]; 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project count*=2; 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (i=count; i; i--) 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4(&sch,8,buf,buf); 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project d=Time_F(STOP); 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } while (d < 3.0); 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ca=count/512; 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project cc=count*8/BUFSIZE+1; 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("Doing RC4_set_key %ld times\n",ca); 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COND(d) (count != (d)) 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (d) 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COND(c) (run) 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (count) 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project signal(SIGALRM,sig_done); 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("Doing RC4_set_key for 10 seconds\n"); 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project alarm(10); 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (count=0,run=1; COND(ca); count+=4) 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_set_key(&sch,16,key); 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_set_key(&sch,16,key); 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_set_key(&sch,16,key); 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4_set_key(&sch,16,key); 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project d=Time_F(STOP); 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("%ld RC4_set_key's in %.2f seconds\n",count,d); 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project a=((double)COUNT(ca))/d; 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("Doing RC4 on %ld byte blocks for 10 seconds\n",BUFSIZE); 234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project alarm(10); 235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("Doing RC4 %ld times on %ld byte blocks\n",cc,BUFSIZE); 237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (count=0,run=1; COND(cc); count++) 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RC4(&sch,BUFSIZE,buf,buf); 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project d=Time_F(STOP); 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("%ld RC4's of %ld byte blocks in %.2f second\n", 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project count,BUFSIZE,d); 244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project c=((double)COUNT(cc)*BUFSIZE)/d; 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("RC4 set_key per sec = %12.2f (%9.3fuS)\n",a,1.0e6/a); 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("RC4 bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c); 248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project exit(0); 249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(LINT) || defined(OPENSSL_SYS_MSDOS) 250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return(0); 251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 254