(linenum→info "unix/slp.c:2238")

glibc/2.7/crypt/cert.c

    1: 
    2: /*
    3:  * This crypt(3) validation program shipped with UFC-crypt
    4:  * is derived from one distributed with Phil Karns PD DES package.
    5:  *
    6:  * @(#)cert.c   1.8 11 Aug 1996
    7:  */
    8: 
    9: #include <stdio.h>
   10: #include <stdlib.h>
   11: #include "crypt.h"
   12: 
   13: int totfails = 0;
   14: 
   15: #if __STDC__ - 0
   16: int main (int argc, char *argv[]);
   17: void get8 (char *cp);
   18: void put8 (char *cp);
   19: void good_bye (void) __attribute__ ((noreturn));
   20: #else
   21: void get8(), put8();
   22: #endif
   23: 
   24: void good_bye ()
   25: {
   26:   if(totfails == 0) {
   27:     printf("Passed DES validation suite\n");
   28:     exit(0);
   29:   } else {
   30:     printf("%d failures during DES validation suite!!!\n", totfails);
   31:     exit(1);
   32:   }
   33: }
   34: 
   35: int
   36: main(argc, argv)
   37:      int argc;
   38:      char *argv[];
   39: {
   40:         char key[64],plain[64],cipher[64],answer[64];
   41:         int i;
   42:         int test;
   43:         int fail;
   44: 
   45:         for(test=0;!feof(stdin);test++){
   46: 
   47:                 get8(key);
   48:                 printf(" K: "); put8(key);
   49:                 setkey(key);
   50: 
   51:                 get8(plain);
   52:                 printf(" P: "); put8(plain);
   53: 
   54:                 get8(answer);
   55:                 printf(" C: "); put8(answer);
   56: 
   57:                 for(i=0;i<64;i++)
   58:                         cipher[i] = plain[i];
   59:                 encrypt(cipher, 0);
   60: 
   61:                 for(i=0;i<64;i++)
   62:                         if(cipher[i] != answer[i])
   63:                                 break;
   64:                 fail = 0;
   65:                 if(i != 64){
   66:                         printf(" Encrypt FAIL");
   67:                         fail++; totfails++;
   68:                 }
   69: 
   70:                 encrypt(cipher, 1);
   71: 
   72:                 for(i=0;i<64;i++)
   73:                         if(cipher[i] != plain[i])
   74:                                 break;
   75:                 if(i != 64){
   76:                         printf(" Decrypt FAIL");
   77:                         fail++; totfails++;
   78:                 }
   79: 
   80:                 if(fail == 0)
   81:                         printf(" OK");
   82:                 printf("\n");
   83:         }
   84:         good_bye();
   85: }
   86: void
   87: get8(cp)
   88: char *cp;
   89: {
   90:         int i,j,t;
   91: 
   92:         for(i=0;i<8;i++){
   93:                 scanf("%2x",&t);
   94:                 if(feof(stdin))
   95:                   good_bye();
   96:                 for(j=0; j<8 ; j++) {
   97:                   *cp++ = (t & (0x01 << (7-j))) != 0;
   98:                 }
   99:         }
  100: }
  101: void
  102: put8(cp)
  103: char *cp;
  104: {
  105:         int i,j,t;
  106: 
  107:         for(i=0;i<8;i++){
  108:           t = 0;
  109:           for(j = 0; j<8; j++)
  110:             t = (t<<1) | *cp++;
  111:           printf("%02x", t);
  112:         }
  113: }
Syntax (Markdown)