0ba5efb7195b59f14488ffa668e24041b053937b
[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
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 afs_int32 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     while (--argc > 0 && (*++argv)[0] == '-')
48         for (i = 1; argv[0][i] != '\0'; i++) {
49             switch (argv[0][i]) {
50
51                 /* debug flag */
52             case 'd':
53                 des_debug = 1;
54                 continue;
55
56                 /* keys flag */
57             case 'k':
58                 kflag = 1;
59                 continue;
60
61                 /* test ANSI msb only key */
62             case 'm':
63                 mflag = 1;
64                 continue;
65
66             default:
67                 printf("%s: illegal flag \"%c\" ", progname, argv[0][i]);
68                 exit(1);
69             }
70         };
71
72     if (argc < MIN_ARGC || argc > MAX_ARGC) {
73         printf("Usage: xxx [-xxx]  xxx xxx\n");
74         exit(1);
75     }
76
77     /*  argv[0] now points to first non-option arg, if any */
78
79
80     if (des_debug) {
81         if (mflag) {
82             fprintf(stderr, "\nChecking a key 0x 80 01 01 01 01 01 01 01 ");
83             fprintf(stderr, "\nKey = ");
84             des_key_sched(dum_c, KS);
85             des_cblock_print(dum_c);
86             return;
87         }
88
89         if (kflag) {
90             printf("\nCHecking a weak key...");
91             dummy[0] = 0x01fe01fe;
92             dummy[1] = 0x01fe01fe;
93             des_key_sched(dummy, KS);
94 #ifdef BSDUNIX
95             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
96 #endif
97 #ifdef CROSSMSDOS
98             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
99 #endif
100
101             dummy[0] = 0x01010101;
102             dummy[1] = 0x01010101;
103 #ifdef BSDUNIX
104             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
105 #endif
106 #ifdef CROSSMSDOS
107             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
108 #endif
109             des_key_sched(dummy, KS);
110 #ifdef BSDUNIX
111             fprintf(stderr, "\nKS= %x", *(afs_int32 *) KS);
112 #endif
113 #ifdef CROSSMSDOS
114             fprintf(stderr, "\nKS= %X", *(afs_int32 *) KS);
115 #endif
116             dummy[0] = 0x01010101;
117             dummy[1] = 0x01010101;
118 #ifdef BSDUNIX
119             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
120 #endif
121 #ifdef CROSSMSDOS
122             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
123 #endif
124             des_key_sched(dummy, KS);
125 #ifdef BSDUNIX
126             fprintf(stderr, "\nKS= %x", *(afs_int32 *) KS);
127 #endif
128 #ifdef CROSSMSDOS
129             fprintf(stderr, "\nKS= %X", *(afs_int32 *) KS);
130 #endif
131
132             dummy[0] = 0x80808080;
133             dummy[1] = 0x80808080;
134 #ifdef BSDUNIX
135             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
136 #endif
137 #ifdef CROSSMSDOS
138             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
139 #endif
140             des_key_sched(dummy, KS);
141 #ifdef BSDUNIX
142             fprintf(stderr, "\nKS[0]= %x", *(afs_int32 *) KS);
143 #endif
144 #ifdef CROSSMSDOS
145             fprintf(stderr, "\nKS[0]= %X", *(afs_int32 *) KS);
146 #endif
147
148             printf("\nstring to key 'a'");
149             des_string_to_key("a", dummy);
150 #ifdef BSDUNIX
151             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
152 #endif
153 #ifdef CROSSMSDOS
154             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
155 #endif
156             des_key_sched(dummy, KS);
157 #ifdef BSDUNIX
158             fprintf(stderr, "\nKS= %x", *(afs_int32 *) KS);
159 #endif
160 #ifdef CROSSMSDOS
161             fprintf(stderr, "\nKS= %X", *(afs_int32 *) KS);
162 #endif
163
164             printf("\nstring to key 'c'");
165             des_string_to_key("c", dummy);
166 #ifdef BSDUNIX
167             fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
168 #endif
169 #ifdef CROSSMSDOS
170             fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
171 #endif
172             des_key_sched(dummy, KS);
173 #ifdef BSDUNIX
174             fprintf(stderr, "\nKS= %x", *(afs_int32 *) KS);
175 #endif
176 #ifdef CROSSMSDOS
177             fprintf(stderr, "\nKS= %X", *(afs_int32 *) KS);
178 #endif
179         }
180
181         printf("\nstring to key 'e'");
182         des_string_to_key("e", dummy);
183 #ifdef BSDUNIX
184         fprintf(stderr, "\nKey[0] = %x Key[1] = %x", dummy[0], dummy[1]);
185 #endif
186 #ifdef CROSSMSDOS
187         fprintf(stderr, "\nKey[0] = %X Key[1] = %X", dummy[0], dummy[1]);
188 #endif
189         des_key_sched(dummy, KS);
190 #ifdef BSDUNIX
191         fprintf(stderr, "\nKS= %x", KS[0]);
192 #endif
193 #ifdef CROSSMSDOS
194         fprintf(stderr, "\nKS= %X", KS[0]);
195 #endif
196
197         printf("\ndes_string_to_key '%s'", argv[0]);
198         des_string_to_key(argv[0], dummy);
199 #ifdef notdef
200         des_string_to_key(argv[0], dummy);
201
202         for (i = 0; i < 1; i++)
203             des_key_sched(dummy, KS);
204     } else {
205         for (i = 0; i < 1000; i++) {
206             des_string_to_key(argv[0], kk);
207             des_key_sched(kk, KS);
208         }
209 #endif
210     }
211 }