#include <stdio.h>

/*
Output should be:
4ef997456198dd78
0000000000000000
51866fd5b85ecb8a
ffffffffffffffff
05044b62fa52d080
fedcba9876543210
*/

void printtext(unsigned char x[])
{
   int i;
   for (i=0; i < 8; i++)
      printf("%02x",x[i]);
   printf("\n");
}

int main()
{
   uchar key1[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 
         key2[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
         key3[24]={0xF0,0xE1,0xD2,0xC3,0xB4,0xA5,0x96,0x87,0x78,0x69,0x5A,0x4B,0x3C,0x2D,
                   0x1E,0x0F,0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77},
         p1[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 
         p2[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
         p3[8]={0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10},
         c[8]={0x51,0x86,0x6f,0xd5,0xb8,0x5e,0xcb,0x8a};
   BLOWFISH_KEY key;
   int x;
   
   // Test vector 1
   key_schedule(key1,&key,8);
   blowfish_encrypt(p1,c,&key);
   printtext(c);
   blowfish_decrypt(c,p1,&key);
   printtext(p1);
   
   // Test vector 2
   key_schedule(key2,&key,8);
   blowfish_encrypt(p2,c,&key);
   printtext(c);
   blowfish_decrypt(c,p2,&key);
   printtext(p2);
   
   // Test vector 3
   key_schedule(key3,&key,24);
   blowfish_encrypt(p3,c,&key);
   printtext(c);
   blowfish_decrypt(c,p3,&key);
   printtext(p3);
   
   getchar();
   return 0;
}

