Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | | - |
20 | | - |
21 | | - |
22 | | - |
23 | | - |
24 | | - |
25 | | - |
26 | | - |
27 | | - |
28 | | - |
29 | | - |
30 | | - |
31 | | - |
32 | | - |
33 | | - |
34 | | - |
35 | | - |
36 | | - |
37 | | - |
38 | | - |
39 | | - |
40 | | - |
41 | | - |
42 | | - |
43 | | - |
44 | | - |
45 | | - |
46 | | - |
47 | | - |
48 | | - |
49 | | - |
50 | | - |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | | - |
56 | | - |
57 | | - |
58 | | - |
59 | #include <openssl/crypto.h> | - |
60 | #include "des_locl.h" | - |
61 | | - |
62 | void DES_string_to_key(const char *str, DES_cblock *key) | - |
63 | { | - |
64 | DES_key_schedule ks; | - |
65 | int i,length; | - |
66 | unsigned char j; | - |
67 | | - |
68 | memset(key,0,8); | - |
69 | length=strlen(str); | - |
70 | #ifdef OLD_STR_TO_KEY | - |
71 | for (i=0; i<length; i++) | - |
72 | (*key)[i%8]^=(str[i]<<1); | - |
73 | #else /* MIT COMPATIBLE */ | - |
74 | for (i=0; i<length; i++)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
75 | { | - |
76 | j=str[i]; | - |
77 | if ((i%16) < 8)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
78 | (*key)[i%8]^=(j<<1); never executed: (*key)[i%8]^=(j<<1); | 0 |
79 | else | - |
80 | { | - |
81 | | - |
82 | j=((j<<4)&0xf0)|((j>>4)&0x0f); | - |
83 | j=((j<<2)&0xcc)|((j>>2)&0x33); | - |
84 | j=((j<<1)&0xaa)|((j>>1)&0x55); | - |
85 | (*key)[7-(i%8)]^=j; | - |
86 | } never executed: end of block | 0 |
87 | } | - |
88 | #endif | - |
89 | DES_set_odd_parity(key); | - |
90 | #ifdef EXPERIMENTAL_STR_TO_STRONG_KEY | - |
91 | if(DES_is_weak_key(key)) | - |
92 | (*key)[7] ^= 0xF0; | - |
93 | DES_set_key(key,&ks); | - |
94 | #else | - |
95 | DES_set_key_unchecked(key,&ks); | - |
96 | #endif | - |
97 | DES_cbc_cksum((const unsigned char*)str,key,length,&ks,key); | - |
98 | explicit_bzero(&ks,sizeof(ks)); | - |
99 | DES_set_odd_parity(key); | - |
100 | } never executed: end of block | 0 |
101 | | - |
102 | void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2) | - |
103 | { | - |
104 | DES_key_schedule ks; | - |
105 | int i,length; | - |
106 | unsigned char j; | - |
107 | | - |
108 | memset(key1,0,8); | - |
109 | memset(key2,0,8); | - |
110 | length=strlen(str); | - |
111 | #ifdef OLD_STR_TO_KEY | - |
112 | if (length <= 8) | - |
113 | { | - |
114 | for (i=0; i<length; i++) | - |
115 | { | - |
116 | (*key2)[i]=(*key1)[i]=(str[i]<<1); | - |
117 | } | - |
118 | } | - |
119 | else | - |
120 | { | - |
121 | for (i=0; i<length; i++) | - |
122 | { | - |
123 | if ((i/8)&1) | - |
124 | (*key2)[i%8]^=(str[i]<<1); | - |
125 | else | - |
126 | (*key1)[i%8]^=(str[i]<<1); | - |
127 | } | - |
128 | } | - |
129 | #else /* MIT COMPATIBLE */ | - |
130 | for (i=0; i<length; i++)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
131 | { | - |
132 | j=str[i]; | - |
133 | if ((i%32) < 16)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
134 | { | - |
135 | if ((i%16) < 8)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
136 | (*key1)[i%8]^=(j<<1); never executed: (*key1)[i%8]^=(j<<1); | 0 |
137 | else | - |
138 | (*key2)[i%8]^=(j<<1); never executed: (*key2)[i%8]^=(j<<1); | 0 |
139 | } | - |
140 | else | - |
141 | { | - |
142 | j=((j<<4)&0xf0)|((j>>4)&0x0f); | - |
143 | j=((j<<2)&0xcc)|((j>>2)&0x33); | - |
144 | j=((j<<1)&0xaa)|((j>>1)&0x55); | - |
145 | if ((i%16) < 8)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
146 | (*key1)[7-(i%8)]^=j; never executed: (*key1)[7-(i%8)]^=j; | 0 |
147 | else | - |
148 | (*key2)[7-(i%8)]^=j; never executed: (*key2)[7-(i%8)]^=j; | 0 |
149 | } | - |
150 | } | - |
151 | if (length <= 8) memcpy(key2,key1,8); never executed: memcpy(key2,key1,8); TRUE | never evaluated | FALSE | never evaluated |
| 0 |
152 | #endif | - |
153 | DES_set_odd_parity(key1); | - |
154 | DES_set_odd_parity(key2); | - |
155 | #ifdef EXPERIMENTAL_STR_TO_STRONG_KEY | - |
156 | if(DES_is_weak_key(key1)) | - |
157 | (*key1)[7] ^= 0xF0; | - |
158 | DES_set_key(key1,&ks); | - |
159 | #else | - |
160 | DES_set_key_unchecked(key1,&ks); | - |
161 | #endif | - |
162 | DES_cbc_cksum((const unsigned char*)str,key1,length,&ks,key1); | - |
163 | #ifdef EXPERIMENTAL_STR_TO_STRONG_KEY | - |
164 | if(DES_is_weak_key(key2)) | - |
165 | (*key2)[7] ^= 0xF0; | - |
166 | DES_set_key(key2,&ks); | - |
167 | #else | - |
168 | DES_set_key_unchecked(key2,&ks); | - |
169 | #endif | - |
170 | DES_cbc_cksum((const unsigned char*)str,key2,length,&ks,key2); | - |
171 | explicit_bzero(&ks,sizeof(ks)); | - |
172 | DES_set_odd_parity(key1); | - |
173 | DES_set_odd_parity(key2); | - |
174 | } never executed: end of block | 0 |
| | |