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