source: vendor/glibc-tests/2005-06-14/crypt/cert.c

Last change on this file was 2036, checked in by bird, 20 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.7 KB
Line 
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
13int totfails = 0;
14
15#if __STDC__ - 0
16int main (int argc, char *argv[]);
17void get8 (char *cp);
18void put8 (char *cp);
19void good_bye (void) __attribute__ ((noreturn));
20#else
21void get8(), put8();
22#endif
23
24void 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
35int
36main(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}
86void
87get8(cp)
88char *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}
101void
102put8(cp)
103char *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}
Note: See TracBrowser for help on using the repository browser.