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 |
|
---|
13 | int totfails = 0;
|
---|
14 |
|
---|
15 | #if __STDC__ - 0
|
---|
16 | int main (int argc, char *argv[]);
|
---|
17 | void get8 (char *cp);
|
---|
18 | void put8 (char *cp);
|
---|
19 | void good_bye (void) __attribute__ ((noreturn));
|
---|
20 | #else
|
---|
21 | void get8(), put8();
|
---|
22 | #endif
|
---|
23 |
|
---|
24 | void 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 |
|
---|
35 | int
|
---|
36 | main(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 | }
|
---|
86 | void
|
---|
87 | get8(cp)
|
---|
88 | char *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 | }
|
---|
101 | void
|
---|
102 | put8(cp)
|
---|
103 | char *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.