c6c82bd312b3191cc3485ec61bd06b60b2e94e17
[openafs.git] / src / des / test / key_test.c
1 /*
2  * Copyright 1988 by the Massachusetts Institute of Technology.
3  *
4  * For copying and distribution information, please see the file
5  * <mit-cpyright.h>.
6  *
7  * exit status:          0 ==> success
8  *                      -1 ==> error
9  */
10
11 #ifndef lint
12 static char rcsid_key_test_c[] =
13 #endif  lint
14
15 #include <mit-cpyright.h>
16 #include <stdio.h>
17 #include <errno.h>
18 #include <des.h>
19
20 #define MIN_ARGC        0       /* min # args, not incl flags */
21 #define MAX_ARGC        99      /* max # args, not incl flags */
22
23 extern char *errmsg();
24 extern int des_key_sched();
25 char *progname;
26 int sflag;
27 int vflag;
28 int kflag;
29 int mflag;
30 int pid;
31 extern int des_debug;
32
33 unsigned long dummy[2];
34 unsigned char dum_c[8] = { 0x80,1,1,1,1,1,1,1 };
35 des_key_schedule KS;
36 des_cblock kk;
37
38 main(argc,argv)
39     int argc;
40     char *argv[];
41 {
42     /*  Local Declarations */
43
44     int i;
45     progname=argv[0];           /* salt away invoking program */
46
47     /* Assume a long is four bytes */
48     if (sizeof(long) != 4) {
49         fprintf(stderr,"\nERROR,  size of long is %d",sizeof(long));
50         exit(-1);
51     }
52
53     while (--argc > 0 && (*++argv)[0] == '-')
54         for (i=1; argv[0][i] != '\0'; i++) {
55             switch (argv[0][i]) {
56
57                 /* debug flag */
58             case 'd':
59                 des_debug=1;
60                 continue;
61
62                 /* keys flag */
63             case 'k':
64                 kflag = 1;
65                 continue;
66
67                 /* test ANSI msb only key */
68             case 'm':
69                 mflag = 1;
70                 continue;
71
72             default:
73                 printf("%s: illegal flag \"%c\" ",
74                        progname,argv[0][i]);
75                 exit(1);
76             }
77         };
78
79     if (argc < MIN_ARGC || argc >MAX_ARGC) {
80         printf("Usage: xxx [-xxx]  xxx xxx\n");
81         exit(1);
82     }
83
84     /*  argv[0] now points to first non-option arg, if any */
85
86
87     if (des_debug) {
88         if (mflag) {
89             fprintf(stderr,"\nChecking a key 0x 80 01 01 01 01 01 01 01 ");
90             fprintf(stderr,"\nKey = ");
91             des_key_sched(dum_c,KS);
92             des_cblock_print (dum_c);
93             return;
94         }
95
96         if (kflag) {
97             printf("\nCHecking a weak key...");
98             dummy[0] =  0x01fe01fe;
99             dummy[1] =  0x01fe01fe;
100             des_key_sched(dummy,KS);
101 #ifdef BSDUNIX
102             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
103 #endif
104 #ifdef CROSSMSDOS
105             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
106 #endif
107
108             dummy[0] = 0x01010101;
109             dummy[1] = 0x01010101;
110 #ifdef BSDUNIX
111             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
112 #endif
113 #ifdef CROSSMSDOS
114             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
115 #endif
116             des_key_sched(dummy,KS);
117 #ifdef BSDUNIX
118             fprintf(stderr,"\nKS= %x",* (long *)KS);
119 #endif
120 #ifdef CROSSMSDOS
121             fprintf(stderr,"\nKS= %X",* (long *)KS);
122 #endif
123             dummy[0] = 0x01010101;
124             dummy[1] = 0x01010101;
125 #ifdef BSDUNIX
126             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
127 #endif
128 #ifdef CROSSMSDOS
129             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
130 #endif
131             des_key_sched(dummy,KS);
132 #ifdef BSDUNIX
133             fprintf(stderr,"\nKS= %x",  *(long *)KS);
134 #endif
135 #ifdef CROSSMSDOS
136             fprintf(stderr,"\nKS= %X",  *(long *)KS);
137 #endif
138
139             dummy[0] = 0x80808080;
140             dummy[1] = 0x80808080;
141 #ifdef BSDUNIX
142             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
143 #endif
144 #ifdef CROSSMSDOS
145             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
146 #endif
147             des_key_sched(dummy,KS);
148 #ifdef BSDUNIX
149             fprintf(stderr,"\nKS[0]= %x",* (long * ) KS);
150 #endif
151 #ifdef CROSSMSDOS
152             fprintf(stderr,"\nKS[0]= %X",* (long * ) KS);
153 #endif
154
155             printf("\nstring to key 'a'");
156             des_string_to_key("a",dummy);
157 #ifdef BSDUNIX
158             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
159 #endif
160 #ifdef CROSSMSDOS
161             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
162 #endif
163             des_key_sched(dummy,KS);
164 #ifdef BSDUNIX
165             fprintf(stderr,"\nKS= %x",* (long *) KS);
166 #endif
167 #ifdef CROSSMSDOS
168             fprintf(stderr,"\nKS= %X",* (long *) KS);
169 #endif
170
171             printf("\nstring to key 'c'");
172             des_string_to_key("c",dummy);
173 #ifdef BSDUNIX
174             fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
175 #endif
176 #ifdef CROSSMSDOS
177             fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
178 #endif
179             des_key_sched(dummy,KS);
180 #ifdef BSDUNIX
181             fprintf(stderr,"\nKS= %x", * (long * ) KS);
182 #endif
183 #ifdef CROSSMSDOS
184             fprintf(stderr,"\nKS= %X", * (long * ) KS);
185 #endif
186         }
187
188         printf("\nstring to key 'e'");
189         des_string_to_key("e",dummy);
190 #ifdef BSDUNIX
191         fprintf(stderr,"\nKey[0] = %x Key[1] = %x",dummy[0],dummy[1]);
192 #endif
193 #ifdef CROSSMSDOS
194         fprintf(stderr,"\nKey[0] = %X Key[1] = %X",dummy[0],dummy[1]);
195 #endif
196         des_key_sched(dummy,KS);
197 #ifdef BSDUNIX
198         fprintf(stderr,"\nKS= %x",KS[0]);
199 #endif
200 #ifdef CROSSMSDOS
201         fprintf(stderr,"\nKS= %X",KS[0]);
202 #endif
203
204         printf("\ndes_string_to_key '%s'",argv[0]);
205         des_string_to_key(argv[0],dummy);
206 #ifdef notdef
207         des_string_to_key(argv[0],dummy);
208
209         for (i =0; i<1; i++)
210             des_key_sched(dummy,KS);
211     }
212     else
213     {
214         for (i =0; i<1000; i++) {
215             des_string_to_key(argv[0],kk);
216             des_key_sched(kk,KS);
217         }
218 #endif
219     }
220 }