Fix signed/unsigned warnings.
[openssl.git] / crypto / rc4 / rc4test.c
index 041e1aff953063b5bb8ed6fa48d1b9ba1c49bebf..633a79e75890f290b1dc5851dc1c06df6393a696 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "rc4.h"
 
-unsigned char keys[7][30]={
+#include "../e_os.h"
+
+#ifdef OPENSSL_NO_RC4
+int main(int argc, char *argv[])
+{
+    printf("No RC4 support\n");
+    return(0);
+}
+#else
+#include <openssl/rc4.h>
+#include <openssl/sha.h>
+
+static unsigned char keys[7][30]={
        {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
        {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
        {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
@@ -70,8 +81,8 @@ unsigned char keys[7][30]={
        {4,0xef,0x01,0x23,0x45},
        };
 
-unsigned char data_len[7]={8,8,8,20,28,10};
-unsigned char data[7][30]={
+static unsigned char data_len[7]={8,8,8,20,28,10};
+static unsigned char data[7][30]={
        {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff},
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
@@ -86,7 +97,7 @@ unsigned char data[7][30]={
        {0},
        };
 
-unsigned char output[7][30]={
+static unsigned char output[7][30]={
        {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00},
        {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00},
        {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00},
@@ -101,17 +112,13 @@ unsigned char output[7][30]={
        {0},
        };
 
-int main(argc,argv)
-int argc;
-char *argv[];
+int main(int argc, char *argv[])
        {
        int i,err=0;
        int j;
        unsigned char *p;
        RC4_KEY key;
-       unsigned char buf[512],obuf[512];
-
-       for (i=0; i<512; i++) buf[i]=0x01;
+       unsigned char obuf[512];
 
        for (i=0; i<6; i++)
                {
@@ -189,7 +196,41 @@ char *argv[];
                        }
                }
        printf("done\n");
-       exit(err);
+       printf("bulk test ");
+       {   unsigned char buf[513];
+           SHA_CTX c;
+           unsigned char md[SHA_DIGEST_LENGTH];
+           static unsigned char expected[]={
+               0xa4,0x7b,0xcc,0x00,0x3d,0xd0,0xbd,0xe1,0xac,0x5f,
+               0x12,0x1e,0x45,0xbc,0xfb,0x1a,0xa1,0xf2,0x7f,0xc5 };
+
+               RC4_set_key(&key,keys[0][0],&(keys[3][1]));
+               memset(buf,'\0',sizeof(buf));
+               SHA1_Init(&c);
+               for (i=0;i<2571;i++) {
+                       RC4(&key,sizeof(buf),buf,buf);
+                       SHA1_Update(&c,buf,sizeof(buf));
+               }
+               SHA1_Final(md,&c);
+
+               if (memcmp(md,expected,sizeof(md))) {
+                       printf("error in RC4 bulk test\n");
+                       printf("output:");
+                       for (j=0; j<(int)sizeof(md); j++)
+                               printf(" %02x",md[j]);
+                       printf("\n");
+                       printf("expect:");
+                       for (j=0; j<(int)sizeof(md); j++)
+                               printf(" %02x",expected[j]);
+                       printf("\n");
+                       err++;
+               }
+               else    printf("ok\n");
+       }
+#ifdef OPENSSL_SYS_NETWARE
+    if (err) printf("ERROR: %d\n", err);
+#endif
+       EXIT(err);
        return(0);
        }
-
+#endif