crypto-algorithms.c

Basic implementations of standard cryptography algorithms, like AES and SHA-1
git clone git://git.finwo.net/lib/crypto-algorithms.c
Log | Files | Refs | README

arcfour_test.c (1632B)


      1 /*********************************************************************
      2 * Filename:   arcfour_test.c
      3 * Author:     Brad Conte (brad AT bradconte.com)
      4 * Copyright:
      5 * Disclaimer: This code is presented "as is" without any guarantees.
      6 * Details:    Performs known-answer tests on the corresponding ARCFOUR
      7 	          implementation. These tests do not encompass the full
      8 	          range of available test vectors, however, if the tests
      9 	          pass it is very, very likely that the code is correct
     10 	          and was compiled properly. This code also serves as
     11 	          example usage of the functions.
     12 *********************************************************************/
     13 
     14 /*************************** HEADER FILES ***************************/
     15 #include <stdio.h>
     16 #include <memory.h>
     17 #include "arcfour.h"
     18 
     19 /*********************** FUNCTION DEFINITIONS ***********************/
     20 int rc4_test()
     21 {
     22 	BYTE state[256];
     23 	BYTE key[3][10] = {{"Key"}, {"Wiki"}, {"Secret"}};
     24 	BYTE stream[3][10] = {{0xEB,0x9F,0x77,0x81,0xB7,0x34,0xCA,0x72,0xA7,0x19},
     25 	                      {0x60,0x44,0xdb,0x6d,0x41,0xb7},
     26 	                      {0x04,0xd4,0x6b,0x05,0x3c,0xa8,0x7b,0x59}};
     27 	int stream_len[3] = {10,6,8};
     28 	BYTE buf[1024];
     29 	int idx;
     30 	int pass = 1;
     31 
     32 	// Only test the output stream. Note that the state can be reused.
     33 	for (idx = 0; idx < 3; idx++) {
     34 		arcfour_key_setup(state, key[idx], strlen(key[idx]));
     35 		arcfour_generate_stream(state, buf, stream_len[idx]);
     36 		pass = pass && !memcmp(stream[idx], buf, stream_len[idx]);
     37 	}
     38 
     39 	return(pass);
     40 }
     41 
     42 int main()
     43 {
     44 	printf("ARCFOUR tests: %s\n", rc4_test() ? "SUCCEEDED" : "FAILED");
     45 
     46 	return(0);
     47 }