[svn] / ecrypt / trunk / submissions / edon80 / unused / Edon80test-ref.c  

svn: ecrypt/trunk/submissions/edon80/unused/Edon80test-ref.c

File: [svn] / ecrypt / trunk / submissions / edon80 / unused / Edon80test-ref.c (download) (as text)
Revision: 1, Sun Jun 26 18:46:26 2005 UTC (7 years, 10 months ago) by cdecanni
File size: 7762 byte(s)
* imported original ECRYPT submissions after first automatic cleanup.
#include <string.h>
#include <stdio.h>
#include <time.h>
#include <malloc.h>

#include "ecrypt-sync.h"

int main (void)
{
	u8 K[10], IV[8];
	u32 keysize, ivsize, i, j, keystreamLength, msgLength;
	u8 *keystream, *plaintext, *ciphertext;
	int qq1, qq2, Counter=0;
	FILE *output_file;
	ECRYPT_ctx ctx;


  char *Logo="\n\
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n\
º                                                               º\n\
º            Reference Software Implementation of               º\n\
º        Edon80 - Hardware Synchronous Stream Cipher            º\n\
º                     April 28, 2005                            º\n\
º                                                               º\n\
º    Test Vector Generator for ECRYPT call for Stream Ciphers   º\n\
º                                                               º\n\
º        See the produced file: Edon80TestVectors.txt           º\n\
º                                                               º\n\
º Principal programmer:                                         º\n\
º Danilo Gligoroski - danilo@ii.edu.mk                          º\n\
º Institute of Informatics, Faculty of Sciences, P.O.Box 162    º\n\
º Skopje, Republic of MACEDONIA                                 º\n\
º                                                               º\n\
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n";


  printf("%s", Logo);
  
  output_file=fopen("Edon80TestVectors.txt","w");

  keysize=ECRYPT_KEYSIZE(0);
  ivsize=ECRYPT_IVSIZE(0);
  keystreamLength=40;
  keystream=malloc((size_t)keystreamLength);
  msgLength=40;
  plaintext=(u8 *)calloc((size_t)msgLength, sizeof(u8));
  ciphertext=(u8 *)calloc((size_t)msgLength, sizeof(u8));

  fprintf(output_file,"\n\n TEST VECTORS of Edon80 - Hardware Synchronous Stream Cipher\n\n");
  fprintf(output_file,"keysize=%u\nivsize=%u\n\n\n",keysize, ivsize);

  j=keysize>>3;
  for (i=0; i<j; i++) K[i]=0;
  j=ivsize>>3;
  for (i=0; i<j; i++) IV[i]=0;

  fprintf(output_file,"TEST %d\n",Counter++);
  fprintf(output_file,"KEY= ");
  j=keysize>>3;
  for (i=0; i<j; i++) fprintf(output_file,"%02X",K[i]); fprintf(output_file,"\n");
  fprintf(output_file,"IV=  ");
  j=ivsize>>3;
  for (i=0; i<j; i++) fprintf(output_file,"%02X",IV[i]); fprintf(output_file,"\n");

  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
  ECRYPT_ivsetup(&ctx, IV);
		  
  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
  fprintf(output_file,"Keystream (3x40 bytes)\ns[1]=");
  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
  fprintf(output_file,"\ns[2]=");
  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
  fprintf(output_file,"\ns[3]=");
  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
  fprintf(output_file,"\n");
		  
  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
  ECRYPT_ivsetup(&ctx, IV);
		  
  ECRYPT_encrypt_bytes(&ctx, plaintext, ciphertext, msgLength);
  fprintf(output_file,"Encryption of 40 bytes\nPT=  ");
  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
  fprintf(output_file,"\nCT=  ");
  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
		  
  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
  ECRYPT_ivsetup(&ctx, IV);
		  
  ECRYPT_decrypt_bytes(&ctx, ciphertext, plaintext, msgLength);
  fprintf(output_file,"\nDecryption of 40 bytes\nCT=  ");
  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
  fprintf(output_file,"\nPT=  ");
  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
  fprintf(output_file,"\n\n\n");

  for (qq1=7; qq1>=0; qq1--)
  {
	  for (qq2=0; qq2<8; qq2++)
	  {
		  fprintf(output_file,"TEST %d\n",Counter++);
		  IV[qq1]=1<<qq2;
		  fprintf(output_file,"KEY= ");
		  j=keysize>>3;
		  for (i=0; i<j; i++) fprintf(output_file,"%02X",K[i]); fprintf(output_file,"\n");
		  fprintf(output_file,"IV=  ");
		  j=ivsize>>3;
		  for (i=0; i<j; i++) fprintf(output_file,"%02X",IV[i]); fprintf(output_file,"\n");

		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"Keystream (3x40 bytes)\ns[1]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"\ns[2]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"\ns[3]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  fprintf(output_file,"\n");
		  
		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_encrypt_bytes(&ctx, plaintext, ciphertext, msgLength);
		  fprintf(output_file,"Encryption of 40 bytes\nPT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
		  fprintf(output_file,"\nCT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
		  
		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_decrypt_bytes(&ctx, ciphertext, plaintext, msgLength);
		  fprintf(output_file,"\nDecryption of 40 bytes\nCT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
		  fprintf(output_file,"\nPT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
		  fprintf(output_file,"\n\n\n");
	  }
	  IV[qq1]=0;
  }

  for (qq1=9; qq1>=0; qq1--)
  {
	  for (qq2=0; qq2<8; qq2++)
	  {
		  fprintf(output_file,"TEST %d\n",Counter++);
		  K[qq1]=1<<qq2;
		  fprintf(output_file,"KEY= ");
		  j=keysize>>3;
		  for (i=0; i<j; i++) fprintf(output_file,"%02X",K[i]); fprintf(output_file,"\n");
		  fprintf(output_file,"IV=  ");
		  j=ivsize>>3;
		  for (i=0; i<j; i++) fprintf(output_file,"%02X",IV[i]); fprintf(output_file,"\n");

		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"Keystream (3x40 bytes)\ns[1]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"\ns[2]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  
		  ECRYPT_keystream_bytes(&ctx, keystream, keystreamLength);
		  fprintf(output_file,"\ns[3]=");
		  for (i=0; i<keystreamLength; i++) fprintf(output_file,"%02X",keystream[i]);
		  fprintf(output_file,"\n");
		  
		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_encrypt_bytes(&ctx, plaintext, ciphertext, msgLength);
		  fprintf(output_file,"Encryption of 40 bytes\nPT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
		  fprintf(output_file,"\nCT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
		  
		  ECRYPT_keysetup(&ctx, K, keysize, ivsize);
		  ECRYPT_ivsetup(&ctx, IV);
		  
		  ECRYPT_decrypt_bytes(&ctx, ciphertext, plaintext, msgLength);
		  fprintf(output_file,"\nDecryption of 40 bytes\nCT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",ciphertext[i]);
		  fprintf(output_file,"\nPT=  ");
		  for (i=0; i<msgLength; i++) fprintf(output_file,"%02X",plaintext[i]);
		  fprintf(output_file,"\n\n\n");
	  }
	  K[qq1]=0;
  }

  
  free(ciphertext);
  free(plaintext);
  free(keystream);
  fclose(output_file);

  return 0;
}

eSTREAM Project

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help