home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume25 / kit / part01 / des / descert.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  1.3 KB  |  99 lines

  1. /*
  2.  * $Id: descert.c,v 2.0.1.1 91/04/01 15:39:44 ram Exp $
  3.  *
  4.  * $Log:    descert.c,v $
  5.  * Revision 2.0.1.1  91/04/01  15:39:44  ram
  6.  * patch1: created
  7.  * 
  8.  */
  9.  
  10. #include <stdio.h>
  11. int nfail = 0;
  12. main()
  13. {
  14.     char key[8],plain[8],cipher[8],answer[8];
  15.     int i;
  16.     int test;
  17.     int fail;
  18.  
  19.     desinit(0);
  20.  
  21.     for(test=0;!feof(stdin);test++){
  22.  
  23.         get8(key);
  24.         printf(" K: "); put8(key);
  25.         setkey(key);
  26.  
  27.         get8(plain);
  28.         printf(" P: "); put8(plain);
  29.  
  30.         get8(answer);
  31.         printf(" C: "); put8(answer);
  32.  
  33.         for(i=0;i<8;i++)
  34.             cipher[i] = plain[i];
  35.         endes(cipher);
  36.  
  37.         for(i=0;i<8;i++)
  38.             if(cipher[i] != answer[i])
  39.                 break;
  40.         fail = 0;
  41.         if(i != 8){
  42.             printf(" Encrypt FAIL");
  43.             fail++;
  44.         }
  45.         dedes(cipher);
  46.         for(i=0;i<8;i++)
  47.             if(cipher[i] != plain[i])
  48.                 break;
  49.         if(i != 8){
  50.             printf(" Decrypt FAIL");
  51.             fail++;
  52.         }
  53.         if(fail == 0)
  54.             printf(" OK");
  55.         else
  56.             nfail++;
  57.         printf("\n");
  58.     }
  59.  
  60.     stats();
  61.     /* NOTREACHED */
  62. }
  63.  
  64. stats()
  65. {
  66.     printf("\n    -- ");
  67.     if (nfail == 0)
  68.         printf("All tests succesful");
  69.     else if (nfail == 1)
  70.         printf("FAILED 1 test");
  71.     else
  72.         printf("FAILED %d tests", nfail);
  73.     printf(".\n\n");
  74.     (void) exit((nfail == 0)? 0 : 1);
  75.     /* NOTREACHED */
  76. }
  77.  
  78. get8(cp)
  79. char *cp;
  80. {
  81.     int i,t;
  82.  
  83.     for(i=0;i<8;i++){
  84.         scanf("%2x",&t);
  85.         if(feof(stdin))
  86.             stats();
  87.         *cp++ = t;
  88.     }
  89. }
  90. put8(cp)
  91. char *cp;
  92. {
  93.     int i;
  94.  
  95.     for(i=0;i<8;i++){
  96.         printf("%02x",*cp++ & 0xff);
  97.     }
  98. }
  99.