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