* 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 |
ViewCVS and CVS Help |