diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-07-20 05:11:10 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-11-08 23:21:32 +0100 |
commit | 75f780871949e5bacca4718507e66c8d28d72e69 (patch) | |
tree | b5e57e50960de3d508098e01b3d80397edb9b474 /src/Crypto | |
parent | 0594532cf1d6bb5fc8886d1c99db4e3861185112 (diff) | |
download | VeraCrypt-75f780871949e5bacca4718507e66c8d28d72e69.tar.gz VeraCrypt-75f780871949e5bacca4718507e66c8d28d72e69.zip |
Remove deprecated/legacy cryptographic algorithms and encryption modes that are never used by VeraCrypt. This will speed up volumes opening in many cases.
Diffstat (limited to 'src/Crypto')
-rw-r--r-- | src/Crypto/Blowfish.c | 382 | ||||
-rw-r--r-- | src/Crypto/Blowfish.h | 25 | ||||
-rw-r--r-- | src/Crypto/Cast.c | 703 | ||||
-rw-r--r-- | src/Crypto/Cast.h | 24 | ||||
-rw-r--r-- | src/Crypto/Crypto.vcproj | 16 | ||||
-rw-r--r-- | src/Crypto/Des.c | 406 | ||||
-rw-r--r-- | src/Crypto/Des.h | 28 | ||||
-rw-r--r-- | src/Crypto/Sha1.c | 282 | ||||
-rw-r--r-- | src/Crypto/Sha1.h | 80 |
9 files changed, 0 insertions, 1946 deletions
diff --git a/src/Crypto/Blowfish.c b/src/Crypto/Blowfish.c deleted file mode 100644 index 54754e05..00000000 --- a/src/Crypto/Blowfish.c +++ /dev/null | |||
@@ -1,382 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | // blowfish.cpp - written and placed in the public domain by Wei Dai | ||
5 | |||
6 | /* Adapted for TrueCrypt */ | ||
7 | |||
8 | #include <memory.h> | ||
9 | #include "Common/Tcdefs.h" | ||
10 | #include "Common/Endian.h" | ||
11 | #include "Blowfish.h" | ||
12 | |||
13 | #define word32 unsigned __int32 | ||
14 | #define byte unsigned __int8 | ||
15 | #define GETBYTE(x, y) (unsigned int)(byte)((x)>>(8*(y))) | ||
16 | #define ROUNDS 16 | ||
17 | |||
18 | static const unsigned __int32 p_init[16+2] = | ||
19 | { | ||
20 | 608135816U, 2242054355U, 320440878U, 57701188U, | ||
21 | 2752067618U, 698298832U, 137296536U, 3964562569U, | ||
22 | 1160258022U, 953160567U, 3193202383U, 887688300U, | ||
23 | 3232508343U, 3380367581U, 1065670069U, 3041331479U, | ||
24 | 2450970073U, 2306472731U | ||
25 | } ; | ||
26 | |||
27 | static const unsigned __int32 s_init[4*256] = { | ||
28 | 3509652390U, 2564797868U, 805139163U, 3491422135U, | ||
29 | 3101798381U, 1780907670U, 3128725573U, 4046225305U, | ||
30 | 614570311U, 3012652279U, 134345442U, 2240740374U, | ||
31 | 1667834072U, 1901547113U, 2757295779U, 4103290238U, | ||
32 | 227898511U, 1921955416U, 1904987480U, 2182433518U, | ||
33 | 2069144605U, 3260701109U, 2620446009U, 720527379U, | ||
34 | 3318853667U, 677414384U, 3393288472U, 3101374703U, | ||
35 | 2390351024U, 1614419982U, 1822297739U, 2954791486U, | ||
36 | 3608508353U, 3174124327U, 2024746970U, 1432378464U, | ||
37 | 3864339955U, 2857741204U, 1464375394U, 1676153920U, | ||
38 | 1439316330U, 715854006U, 3033291828U, 289532110U, | ||
39 | 2706671279U, 2087905683U, 3018724369U, 1668267050U, | ||
40 | 732546397U, 1947742710U, 3462151702U, 2609353502U, | ||
41 | 2950085171U, 1814351708U, 2050118529U, 680887927U, | ||
42 | 999245976U, 1800124847U, 3300911131U, 1713906067U, | ||
43 | 1641548236U, 4213287313U, 1216130144U, 1575780402U, | ||
44 | 4018429277U, 3917837745U, 3693486850U, 3949271944U, | ||
45 | 596196993U, 3549867205U, 258830323U, 2213823033U, | ||
46 | 772490370U, 2760122372U, 1774776394U, 2652871518U, | ||
47 | 566650946U, 4142492826U, 1728879713U, 2882767088U, | ||
48 | 1783734482U, 3629395816U, 2517608232U, 2874225571U, | ||
49 | 1861159788U, 326777828U, 3124490320U, 2130389656U, | ||
50 | 2716951837U, 967770486U, 1724537150U, 2185432712U, | ||
51 | 2364442137U, 1164943284U, 2105845187U, 998989502U, | ||
52 | 3765401048U, 2244026483U, 1075463327U, 1455516326U, | ||
53 | 1322494562U, 910128902U, 469688178U, 1117454909U, | ||
54 | 936433444U, 3490320968U, 3675253459U, 1240580251U, | ||
55 | 122909385U, 2157517691U, 634681816U, 4142456567U, | ||
56 | 3825094682U, 3061402683U, 2540495037U, 79693498U, | ||
57 | 3249098678U, 1084186820U, 1583128258U, 426386531U, | ||
58 | 1761308591U, 1047286709U, 322548459U, 995290223U, | ||
59 | 1845252383U, 2603652396U, 3431023940U, 2942221577U, | ||
60 | 3202600964U, 3727903485U, 1712269319U, 422464435U, | ||
61 | 3234572375U, 1170764815U, 3523960633U, 3117677531U, | ||
62 | 1434042557U, 442511882U, 3600875718U, 1076654713U, | ||
63 | 1738483198U, 4213154764U, 2393238008U, 3677496056U, | ||
64 | 1014306527U, 4251020053U, 793779912U, 2902807211U, | ||
65 | 842905082U, 4246964064U, 1395751752U, 1040244610U, | ||
66 | 2656851899U, 3396308128U, 445077038U, 3742853595U, | ||
67 | 3577915638U, 679411651U, 2892444358U, 2354009459U, | ||
68 | 1767581616U, 3150600392U, 3791627101U, 3102740896U, | ||
69 | 284835224U, 4246832056U, 1258075500U, 768725851U, | ||
70 | 2589189241U, 3069724005U, 3532540348U, 1274779536U, | ||
71 | 3789419226U, 2764799539U, 1660621633U, 3471099624U, | ||
72 | 4011903706U, 913787905U, 3497959166U, 737222580U, | ||
73 | 2514213453U, 2928710040U, 3937242737U, 1804850592U, | ||
74 | 3499020752U, 2949064160U, 2386320175U, 2390070455U, | ||
75 | 2415321851U, 4061277028U, 2290661394U, 2416832540U, | ||
76 | 1336762016U, 1754252060U, 3520065937U, 3014181293U, | ||
77 | 791618072U, 3188594551U, 3933548030U, 2332172193U, | ||
78 | 3852520463U, 3043980520U, 413987798U, 3465142937U, | ||
79 | 3030929376U, 4245938359U, 2093235073U, 3534596313U, | ||
80 | 375366246U, 2157278981U, 2479649556U, 555357303U, | ||
81 | 3870105701U, 2008414854U, 3344188149U, 4221384143U, | ||
82 | 3956125452U, 2067696032U, 3594591187U, 2921233993U, | ||
83 | 2428461U, 544322398U, 577241275U, 1471733935U, | ||
84 | 610547355U, 4027169054U, 1432588573U, 1507829418U, | ||
85 | 2025931657U, 3646575487U, 545086370U, 48609733U, | ||
86 | 2200306550U, 1653985193U, 298326376U, 1316178497U, | ||
87 | 3007786442U, 2064951626U, 458293330U, 2589141269U, | ||
88 | 3591329599U, 3164325604U, 727753846U, 2179363840U, | ||
89 | 146436021U, 1461446943U, 4069977195U, 705550613U, | ||
90 | 3059967265U, 3887724982U, 4281599278U, 3313849956U, | ||
91 | 1404054877U, 2845806497U, 146425753U, 1854211946U, | ||
92 | |||
93 | 1266315497U, 3048417604U, 3681880366U, 3289982499U, | ||
94 | 2909710000U, 1235738493U, 2632868024U, 2414719590U, | ||
95 | 3970600049U, 1771706367U, 1449415276U, 3266420449U, | ||
96 | 422970021U, 1963543593U, 2690192192U, 3826793022U, | ||
97 | 1062508698U, 1531092325U, 1804592342U, 2583117782U, | ||
98 | 2714934279U, 4024971509U, 1294809318U, 4028980673U, | ||
99 | 1289560198U, 2221992742U, 1669523910U, 35572830U, | ||
100 | 157838143U, 1052438473U, 1016535060U, 1802137761U, | ||
101 | 1753167236U, 1386275462U, 3080475397U, 2857371447U, | ||
102 | 1040679964U, 2145300060U, 2390574316U, 1461121720U, | ||
103 | 2956646967U, 4031777805U, 4028374788U, 33600511U, | ||
104 | 2920084762U, 1018524850U, 629373528U, 3691585981U, | ||
105 | 3515945977U, 2091462646U, 2486323059U, 586499841U, | ||
106 | 988145025U, 935516892U, 3367335476U, 2599673255U, | ||
107 | 2839830854U, 265290510U, 3972581182U, 2759138881U, | ||
108 | 3795373465U, 1005194799U, 847297441U, 406762289U, | ||
109 | 1314163512U, 1332590856U, 1866599683U, 4127851711U, | ||
110 | 750260880U, 613907577U, 1450815602U, 3165620655U, | ||
111 | 3734664991U, 3650291728U, 3012275730U, 3704569646U, | ||
112 | 1427272223U, 778793252U, 1343938022U, 2676280711U, | ||
113 | 2052605720U, 1946737175U, 3164576444U, 3914038668U, | ||
114 | 3967478842U, 3682934266U, 1661551462U, 3294938066U, | ||
115 | 4011595847U, 840292616U, 3712170807U, 616741398U, | ||
116 | 312560963U, 711312465U, 1351876610U, 322626781U, | ||
117 | 1910503582U, 271666773U, 2175563734U, 1594956187U, | ||
118 | 70604529U, 3617834859U, 1007753275U, 1495573769U, | ||
119 | 4069517037U, 2549218298U, 2663038764U, 504708206U, | ||
120 | 2263041392U, 3941167025U, 2249088522U, 1514023603U, | ||
121 | 1998579484U, 1312622330U, 694541497U, 2582060303U, | ||
122 | 2151582166U, 1382467621U, 776784248U, 2618340202U, | ||
123 | 3323268794U, 2497899128U, 2784771155U, 503983604U, | ||
124 | 4076293799U, 907881277U, 423175695U, 432175456U, | ||
125 | 1378068232U, 4145222326U, 3954048622U, 3938656102U, | ||
126 | 3820766613U, 2793130115U, 2977904593U, 26017576U, | ||
127 | 3274890735U, 3194772133U, 1700274565U, 1756076034U, | ||
128 | 4006520079U, 3677328699U, 720338349U, 1533947780U, | ||
129 | 354530856U, 688349552U, 3973924725U, 1637815568U, | ||
130 | 332179504U, 3949051286U, 53804574U, 2852348879U, | ||
131 | 3044236432U, 1282449977U, 3583942155U, 3416972820U, | ||
132 | 4006381244U, 1617046695U, 2628476075U, 3002303598U, | ||
133 | 1686838959U, 431878346U, 2686675385U, 1700445008U, | ||
134 | 1080580658U, 1009431731U, 832498133U, 3223435511U, | ||
135 | 2605976345U, 2271191193U, 2516031870U, 1648197032U, | ||
136 | 4164389018U, 2548247927U, 300782431U, 375919233U, | ||
137 | 238389289U, 3353747414U, 2531188641U, 2019080857U, | ||
138 | 1475708069U, 455242339U, 2609103871U, 448939670U, | ||
139 | 3451063019U, 1395535956U, 2413381860U, 1841049896U, | ||
140 | 1491858159U, 885456874U, 4264095073U, 4001119347U, | ||
141 | 1565136089U, 3898914787U, 1108368660U, 540939232U, | ||
142 | 1173283510U, 2745871338U, 3681308437U, 4207628240U, | ||
143 | 3343053890U, 4016749493U, 1699691293U, 1103962373U, | ||
144 | 3625875870U, 2256883143U, 3830138730U, 1031889488U, | ||
145 | 3479347698U, 1535977030U, 4236805024U, 3251091107U, | ||
146 | 2132092099U, 1774941330U, 1199868427U, 1452454533U, | ||
147 | 157007616U, 2904115357U, 342012276U, 595725824U, | ||
148 | 1480756522U, 206960106U, 497939518U, 591360097U, | ||
149 | 863170706U, 2375253569U, 3596610801U, 1814182875U, | ||
150 | 2094937945U, 3421402208U, 1082520231U, 3463918190U, | ||
151 | 2785509508U, 435703966U, 3908032597U, 1641649973U, | ||
152 | 2842273706U, 3305899714U, 1510255612U, 2148256476U, | ||
153 | 2655287854U, 3276092548U, 4258621189U, 236887753U, | ||
154 | 3681803219U, 274041037U, 1734335097U, 3815195456U, | ||
155 | 3317970021U, 1899903192U, 1026095262U, 4050517792U, | ||
156 | 356393447U, 2410691914U, 3873677099U, 3682840055U, | ||
157 | |||
158 | 3913112168U, 2491498743U, 4132185628U, 2489919796U, | ||
159 | 1091903735U, 1979897079U, 3170134830U, 3567386728U, | ||
160 | 3557303409U, 857797738U, 1136121015U, 1342202287U, | ||
161 | 507115054U, 2535736646U, 337727348U, 3213592640U, | ||
162 | 1301675037U, 2528481711U, 1895095763U, 1721773893U, | ||
163 | 3216771564U, 62756741U, 2142006736U, 835421444U, | ||
164 | 2531993523U, 1442658625U, 3659876326U, 2882144922U, | ||
165 | 676362277U, 1392781812U, 170690266U, 3921047035U, | ||
166 | 1759253602U, 3611846912U, 1745797284U, 664899054U, | ||
167 | 1329594018U, 3901205900U, 3045908486U, 2062866102U, | ||
168 | 2865634940U, 3543621612U, 3464012697U, 1080764994U, | ||
169 | 553557557U, 3656615353U, 3996768171U, 991055499U, | ||
170 | 499776247U, 1265440854U, 648242737U, 3940784050U, | ||
171 | 980351604U, 3713745714U, 1749149687U, 3396870395U, | ||
172 | 4211799374U, 3640570775U, 1161844396U, 3125318951U, | ||
173 | 1431517754U, 545492359U, 4268468663U, 3499529547U, | ||
174 | 1437099964U, 2702547544U, 3433638243U, 2581715763U, | ||
175 | 2787789398U, 1060185593U, 1593081372U, 2418618748U, | ||
176 | 4260947970U, 69676912U, 2159744348U, 86519011U, | ||
177 | 2512459080U, 3838209314U, 1220612927U, 3339683548U, | ||
178 | 133810670U, 1090789135U, 1078426020U, 1569222167U, | ||
179 | 845107691U, 3583754449U, 4072456591U, 1091646820U, | ||
180 | 628848692U, 1613405280U, 3757631651U, 526609435U, | ||
181 | 236106946U, 48312990U, 2942717905U, 3402727701U, | ||
182 | 1797494240U, 859738849U, 992217954U, 4005476642U, | ||
183 | 2243076622U, 3870952857U, 3732016268U, 765654824U, | ||
184 | 3490871365U, 2511836413U, 1685915746U, 3888969200U, | ||
185 | 1414112111U, 2273134842U, 3281911079U, 4080962846U, | ||
186 | 172450625U, 2569994100U, 980381355U, 4109958455U, | ||
187 | 2819808352U, 2716589560U, 2568741196U, 3681446669U, | ||
188 | 3329971472U, 1835478071U, 660984891U, 3704678404U, | ||
189 | 4045999559U, 3422617507U, 3040415634U, 1762651403U, | ||
190 | 1719377915U, 3470491036U, 2693910283U, 3642056355U, | ||
191 | 3138596744U, 1364962596U, 2073328063U, 1983633131U, | ||
192 | 926494387U, 3423689081U, 2150032023U, 4096667949U, | ||
193 | 1749200295U, 3328846651U, 309677260U, 2016342300U, | ||
194 | 1779581495U, 3079819751U, 111262694U, 1274766160U, | ||
195 | 443224088U, 298511866U, 1025883608U, 3806446537U, | ||
196 | 1145181785U, 168956806U, 3641502830U, 3584813610U, | ||
197 | 1689216846U, 3666258015U, 3200248200U, 1692713982U, | ||
198 | 2646376535U, 4042768518U, 1618508792U, 1610833997U, | ||
199 | 3523052358U, 4130873264U, 2001055236U, 3610705100U, | ||
200 | 2202168115U, 4028541809U, 2961195399U, 1006657119U, | ||
201 | 2006996926U, 3186142756U, 1430667929U, 3210227297U, | ||
202 | 1314452623U, 4074634658U, 4101304120U, 2273951170U, | ||
203 | 1399257539U, 3367210612U, 3027628629U, 1190975929U, | ||
204 | 2062231137U, 2333990788U, 2221543033U, 2438960610U, | ||
205 | 1181637006U, 548689776U, 2362791313U, 3372408396U, | ||
206 | 3104550113U, 3145860560U, 296247880U, 1970579870U, | ||
207 | 3078560182U, 3769228297U, 1714227617U, 3291629107U, | ||
208 | 3898220290U, 166772364U, 1251581989U, 493813264U, | ||
209 | 448347421U, 195405023U, 2709975567U, 677966185U, | ||
210 | 3703036547U, 1463355134U, 2715995803U, 1338867538U, | ||
211 | 1343315457U, 2802222074U, 2684532164U, 233230375U, | ||
212 | 2599980071U, 2000651841U, 3277868038U, 1638401717U, | ||
213 | 4028070440U, 3237316320U, 6314154U, 819756386U, | ||
214 | 300326615U, 590932579U, 1405279636U, 3267499572U, | ||
215 | 3150704214U, 2428286686U, 3959192993U, 3461946742U, | ||
216 | 1862657033U, 1266418056U, 963775037U, 2089974820U, | ||
217 | 2263052895U, 1917689273U, 448879540U, 3550394620U, | ||
218 | 3981727096U, 150775221U, 3627908307U, 1303187396U, | ||
219 | 508620638U, 2975983352U, 2726630617U, 1817252668U, | ||
220 | 1876281319U, 1457606340U, 908771278U, 3720792119U, | ||
221 | 3617206836U, 2455994898U, 1729034894U, 1080033504U, | ||
222 | |||
223 | 976866871U, 3556439503U, 2881648439U, 1522871579U, | ||
224 | 1555064734U, 1336096578U, 3548522304U, 2579274686U, | ||
225 | 3574697629U, 3205460757U, 3593280638U, 3338716283U, | ||
226 | 3079412587U, 564236357U, 2993598910U, 1781952180U, | ||
227 | 1464380207U, 3163844217U, 3332601554U, 1699332808U, | ||
228 | 1393555694U, 1183702653U, 3581086237U, 1288719814U, | ||
229 | 691649499U, 2847557200U, 2895455976U, 3193889540U, | ||
230 | 2717570544U, 1781354906U, 1676643554U, 2592534050U, | ||
231 | 3230253752U, 1126444790U, 2770207658U, 2633158820U, | ||
232 | 2210423226U, 2615765581U, 2414155088U, 3127139286U, | ||
233 | 673620729U, 2805611233U, 1269405062U, 4015350505U, | ||
234 | 3341807571U, 4149409754U, 1057255273U, 2012875353U, | ||
235 | 2162469141U, 2276492801U, 2601117357U, 993977747U, | ||
236 | 3918593370U, 2654263191U, 753973209U, 36408145U, | ||
237 | 2530585658U, 25011837U, 3520020182U, 2088578344U, | ||
238 | 530523599U, 2918365339U, 1524020338U, 1518925132U, | ||
239 | 3760827505U, 3759777254U, 1202760957U, 3985898139U, | ||
240 | 3906192525U, 674977740U, 4174734889U, 2031300136U, | ||
241 | 2019492241U, 3983892565U, 4153806404U, 3822280332U, | ||
242 | 352677332U, 2297720250U, 60907813U, 90501309U, | ||
243 | 3286998549U, 1016092578U, 2535922412U, 2839152426U, | ||
244 | 457141659U, 509813237U, 4120667899U, 652014361U, | ||
245 | 1966332200U, 2975202805U, 55981186U, 2327461051U, | ||
246 | 676427537U, 3255491064U, 2882294119U, 3433927263U, | ||
247 | 1307055953U, 942726286U, 933058658U, 2468411793U, | ||
248 | 3933900994U, 4215176142U, 1361170020U, 2001714738U, | ||
249 | 2830558078U, 3274259782U, 1222529897U, 1679025792U, | ||
250 | 2729314320U, 3714953764U, 1770335741U, 151462246U, | ||
251 | 3013232138U, 1682292957U, 1483529935U, 471910574U, | ||
252 | 1539241949U, 458788160U, 3436315007U, 1807016891U, | ||
253 | 3718408830U, 978976581U, 1043663428U, 3165965781U, | ||
254 | 1927990952U, 4200891579U, 2372276910U, 3208408903U, | ||
255 | 3533431907U, 1412390302U, 2931980059U, 4132332400U, | ||
256 | 1947078029U, 3881505623U, 4168226417U, 2941484381U, | ||
257 | 1077988104U, 1320477388U, 886195818U, 18198404U, | ||
258 | 3786409000U, 2509781533U, 112762804U, 3463356488U, | ||
259 | 1866414978U, 891333506U, 18488651U, 661792760U, | ||
260 | 1628790961U, 3885187036U, 3141171499U, 876946877U, | ||
261 | 2693282273U, 1372485963U, 791857591U, 2686433993U, | ||
262 | 3759982718U, 3167212022U, 3472953795U, 2716379847U, | ||
263 | 445679433U, 3561995674U, 3504004811U, 3574258232U, | ||
264 | 54117162U, 3331405415U, 2381918588U, 3769707343U, | ||
265 | 4154350007U, 1140177722U, 4074052095U, 668550556U, | ||
266 | 3214352940U, 367459370U, 261225585U, 2610173221U, | ||
267 | 4209349473U, 3468074219U, 3265815641U, 314222801U, | ||
268 | 3066103646U, 3808782860U, 282218597U, 3406013506U, | ||
269 | 3773591054U, 379116347U, 1285071038U, 846784868U, | ||
270 | 2669647154U, 3771962079U, 3550491691U, 2305946142U, | ||
271 | 453669953U, 1268987020U, 3317592352U, 3279303384U, | ||
272 | 3744833421U, 2610507566U, 3859509063U, 266596637U, | ||
273 | 3847019092U, 517658769U, 3462560207U, 3443424879U, | ||
274 | 370717030U, 4247526661U, 2224018117U, 4143653529U, | ||
275 | 4112773975U, 2788324899U, 2477274417U, 1456262402U, | ||
276 | 2901442914U, 1517677493U, 1846949527U, 2295493580U, | ||
277 | 3734397586U, 2176403920U, 1280348187U, 1908823572U, | ||
278 | 3871786941U, 846861322U, 1172426758U, 3287448474U, | ||
279 | 3383383037U, 1655181056U, 3139813346U, 901632758U, | ||
280 | 1897031941U, 2986607138U, 3066810236U, 3447102507U, | ||
281 | 1393639104U, 373351379U, 950779232U, 625454576U, | ||
282 | 3124240540U, 4148612726U, 2007998917U, 544563296U, | ||
283 | 2244738638U, 2330496472U, 2058025392U, 1291430526U, | ||
284 | 424198748U, 50039436U, 29584100U, 3605783033U, | ||
285 | 2429876329U, 2791104160U, 1057563949U, 3255363231U, | ||
286 | 3075367218U, 3463963227U, 1469046755U, 985887462U | ||
287 | }; | ||
288 | |||
289 | |||
290 | // this version is only used to make pbox and sbox | ||
291 | static void crypt_block(BF_KEY *key, const word32 in[2], word32 out[2]) | ||
292 | { | ||
293 | word32 left = in[0]; | ||
294 | word32 right = in[1]; | ||
295 | |||
296 | const word32 *const s=key->sbox; | ||
297 | const word32 *p=key->pbox; | ||
298 | |||
299 | unsigned i; | ||
300 | |||
301 | left ^= p[0]; | ||
302 | |||
303 | for (i=0; i<ROUNDS/2; i++) | ||
304 | { | ||
305 | right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)]) | ||
306 | ^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)]) | ||
307 | ^ p[2*i+1]; | ||
308 | |||
309 | left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)]) | ||
310 | ^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)]) | ||
311 | ^ p[2*i+2]; | ||
312 | } | ||
313 | |||
314 | right ^= p[ROUNDS+1]; | ||
315 | |||
316 | out[0] = right; | ||
317 | out[1] = left; | ||
318 | } | ||
319 | |||
320 | |||
321 | void BlowfishSetKey (BF_KEY *key, int keylength, unsigned char *key_string) | ||
322 | { | ||
323 | unsigned i, j=0, k; | ||
324 | word32 data, dspace[2] = {0, 0}; | ||
325 | word32 *sbox = key->sbox; | ||
326 | word32 *pbox = key->pbox; | ||
327 | |||
328 | memcpy(pbox, p_init, sizeof(p_init)); | ||
329 | memcpy(sbox, s_init, sizeof(s_init)); | ||
330 | |||
331 | // Xor key string into encryption key vector | ||
332 | for (i=0 ; i<ROUNDS+2 ; ++i) | ||
333 | { | ||
334 | data = 0 ; | ||
335 | for (k=0 ; k<4 ; ++k ) | ||
336 | data = (data << 8) | key_string[j++ % keylength]; | ||
337 | pbox[i] ^= data; | ||
338 | } | ||
339 | |||
340 | crypt_block(key, dspace, pbox); | ||
341 | |||
342 | for (i=0; i<ROUNDS; i+=2) | ||
343 | crypt_block(key, pbox+i, pbox+i+2); | ||
344 | |||
345 | crypt_block(key, pbox+ROUNDS, sbox); | ||
346 | |||
347 | for (i=0; i<4*256-2; i+=2) | ||
348 | crypt_block(key, sbox+i, sbox+i+2); | ||
349 | |||
350 | for (i=0; i < ROUNDS+2; i++) | ||
351 | key->pbox_dec[ROUNDS+1-i] = pbox[i]; | ||
352 | } | ||
353 | |||
354 | |||
355 | void BlowfishEncryptLE (unsigned char *inBlock, unsigned char *outBlock, BF_KEY *key, int encrypt) | ||
356 | { | ||
357 | word32 left = LE32 (((word32 *) inBlock)[0]); | ||
358 | word32 right = LE32 (((word32 *) inBlock)[1]); | ||
359 | |||
360 | const word32 *const s = key->sbox; | ||
361 | const word32 * p = encrypt ? key->pbox : key->pbox_dec; | ||
362 | |||
363 | unsigned i; | ||
364 | |||
365 | left ^= p[0]; | ||
366 | |||
367 | for (i=0; i<ROUNDS/2; i++) | ||
368 | { | ||
369 | right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)]) | ||
370 | ^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)]) | ||
371 | ^ p[2*i+1]; | ||
372 | |||
373 | left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)]) | ||
374 | ^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)]) | ||
375 | ^ p[2*i+2]; | ||
376 | } | ||
377 | |||
378 | right ^= p[ROUNDS+1]; | ||
379 | |||
380 | ((word32 *) outBlock)[0] = LE32 (right); | ||
381 | ((word32 *) outBlock)[1] = LE32 (left); | ||
382 | } | ||
diff --git a/src/Crypto/Blowfish.h b/src/Crypto/Blowfish.h deleted file mode 100644 index d9cf4bc5..00000000 --- a/src/Crypto/Blowfish.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | #ifndef TC_HEADER_Crypto_Blowfish | ||
5 | #define TC_HEADER_Crypto_Blowfish | ||
6 | |||
7 | #ifdef __cplusplus | ||
8 | extern "C" { | ||
9 | #endif | ||
10 | |||
11 | typedef struct BF_KEY_STRUCT | ||
12 | { | ||
13 | unsigned __int32 pbox[18]; | ||
14 | unsigned __int32 pbox_dec[18]; | ||
15 | unsigned __int32 sbox[4*256]; | ||
16 | } BF_KEY; | ||
17 | |||
18 | void BlowfishSetKey (BF_KEY *key, int keylength, unsigned char *key_string); | ||
19 | void BlowfishEncryptLE (unsigned char *in, unsigned char *out, BF_KEY *ks, int encrypt); | ||
20 | |||
21 | #ifdef __cplusplus | ||
22 | } | ||
23 | #endif | ||
24 | |||
25 | #endif // TC_HEADER_Crypto_Blowfish | ||
diff --git a/src/Crypto/Cast.c b/src/Crypto/Cast.c deleted file mode 100644 index 1edceaec..00000000 --- a/src/Crypto/Cast.c +++ /dev/null | |||
@@ -1,703 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | // cast.cpp - written and placed in the public domain by Wei Dai and Leonard Janke | ||
5 | // based on Steve Reid's public domain cast.c | ||
6 | |||
7 | /* Adapted for TrueCrypt */ | ||
8 | |||
9 | #include <memory.h> | ||
10 | #include "Common/Tcdefs.h" | ||
11 | #include "Common/Endian.h" | ||
12 | #include "Cast.h" | ||
13 | |||
14 | #define word32 unsigned __int32 | ||
15 | #define byte unsigned __int8 | ||
16 | #define GETBYTE(x, y) (unsigned int)(byte)((x)>>(8*(y))) | ||
17 | |||
18 | /* Macros to access 8-bit bytes out of a 32-bit word */ | ||
19 | #define U8a(x) GETBYTE(x,3) | ||
20 | #define U8b(x) GETBYTE(x,2) | ||
21 | #define U8c(x) GETBYTE(x,1) | ||
22 | #define U8d(x) GETBYTE(x,0) | ||
23 | |||
24 | static word32 rotlVariable (word32 x, unsigned int y) | ||
25 | { | ||
26 | return (word32)((x<<y) | (x>>(sizeof(word32)*8-y))); | ||
27 | } | ||
28 | |||
29 | |||
30 | // CAST S-boxes | ||
31 | |||
32 | static const word32 S[8][256] = { | ||
33 | { | ||
34 | 0x30FB40D4UL, 0x9FA0FF0BUL, 0x6BECCD2FUL, 0x3F258C7AUL, | ||
35 | 0x1E213F2FUL, 0x9C004DD3UL, 0x6003E540UL, 0xCF9FC949UL, | ||
36 | 0xBFD4AF27UL, 0x88BBBDB5UL, 0xE2034090UL, 0x98D09675UL, | ||
37 | 0x6E63A0E0UL, 0x15C361D2UL, 0xC2E7661DUL, 0x22D4FF8EUL, | ||
38 | 0x28683B6FUL, 0xC07FD059UL, 0xFF2379C8UL, 0x775F50E2UL, | ||
39 | 0x43C340D3UL, 0xDF2F8656UL, 0x887CA41AUL, 0xA2D2BD2DUL, | ||
40 | 0xA1C9E0D6UL, 0x346C4819UL, 0x61B76D87UL, 0x22540F2FUL, | ||
41 | 0x2ABE32E1UL, 0xAA54166BUL, 0x22568E3AUL, 0xA2D341D0UL, | ||
42 | 0x66DB40C8UL, 0xA784392FUL, 0x004DFF2FUL, 0x2DB9D2DEUL, | ||
43 | 0x97943FACUL, 0x4A97C1D8UL, 0x527644B7UL, 0xB5F437A7UL, | ||
44 | 0xB82CBAEFUL, 0xD751D159UL, 0x6FF7F0EDUL, 0x5A097A1FUL, | ||
45 | 0x827B68D0UL, 0x90ECF52EUL, 0x22B0C054UL, 0xBC8E5935UL, | ||
46 | 0x4B6D2F7FUL, 0x50BB64A2UL, 0xD2664910UL, 0xBEE5812DUL, | ||
47 | 0xB7332290UL, 0xE93B159FUL, 0xB48EE411UL, 0x4BFF345DUL, | ||
48 | 0xFD45C240UL, 0xAD31973FUL, 0xC4F6D02EUL, 0x55FC8165UL, | ||
49 | 0xD5B1CAADUL, 0xA1AC2DAEUL, 0xA2D4B76DUL, 0xC19B0C50UL, | ||
50 | 0x882240F2UL, 0x0C6E4F38UL, 0xA4E4BFD7UL, 0x4F5BA272UL, | ||
51 | 0x564C1D2FUL, 0xC59C5319UL, 0xB949E354UL, 0xB04669FEUL, | ||
52 | 0xB1B6AB8AUL, 0xC71358DDUL, 0x6385C545UL, 0x110F935DUL, | ||
53 | 0x57538AD5UL, 0x6A390493UL, 0xE63D37E0UL, 0x2A54F6B3UL, | ||
54 | 0x3A787D5FUL, 0x6276A0B5UL, 0x19A6FCDFUL, 0x7A42206AUL, | ||
55 | 0x29F9D4D5UL, 0xF61B1891UL, 0xBB72275EUL, 0xAA508167UL, | ||
56 | 0x38901091UL, 0xC6B505EBUL, 0x84C7CB8CUL, 0x2AD75A0FUL, | ||
57 | 0x874A1427UL, 0xA2D1936BUL, 0x2AD286AFUL, 0xAA56D291UL, | ||
58 | 0xD7894360UL, 0x425C750DUL, 0x93B39E26UL, 0x187184C9UL, | ||
59 | 0x6C00B32DUL, 0x73E2BB14UL, 0xA0BEBC3CUL, 0x54623779UL, | ||
60 | 0x64459EABUL, 0x3F328B82UL, 0x7718CF82UL, 0x59A2CEA6UL, | ||
61 | 0x04EE002EUL, 0x89FE78E6UL, 0x3FAB0950UL, 0x325FF6C2UL, | ||
62 | 0x81383F05UL, 0x6963C5C8UL, 0x76CB5AD6UL, 0xD49974C9UL, | ||
63 | 0xCA180DCFUL, 0x380782D5UL, 0xC7FA5CF6UL, 0x8AC31511UL, | ||
64 | 0x35E79E13UL, 0x47DA91D0UL, 0xF40F9086UL, 0xA7E2419EUL, | ||
65 | 0x31366241UL, 0x051EF495UL, 0xAA573B04UL, 0x4A805D8DUL, | ||
66 | 0x548300D0UL, 0x00322A3CUL, 0xBF64CDDFUL, 0xBA57A68EUL, | ||
67 | 0x75C6372BUL, 0x50AFD341UL, 0xA7C13275UL, 0x915A0BF5UL, | ||
68 | 0x6B54BFABUL, 0x2B0B1426UL, 0xAB4CC9D7UL, 0x449CCD82UL, | ||
69 | 0xF7FBF265UL, 0xAB85C5F3UL, 0x1B55DB94UL, 0xAAD4E324UL, | ||
70 | 0xCFA4BD3FUL, 0x2DEAA3E2UL, 0x9E204D02UL, 0xC8BD25ACUL, | ||
71 | 0xEADF55B3UL, 0xD5BD9E98UL, 0xE31231B2UL, 0x2AD5AD6CUL, | ||
72 | 0x954329DEUL, 0xADBE4528UL, 0xD8710F69UL, 0xAA51C90FUL, | ||
73 | 0xAA786BF6UL, 0x22513F1EUL, 0xAA51A79BUL, 0x2AD344CCUL, | ||
74 | 0x7B5A41F0UL, 0xD37CFBADUL, 0x1B069505UL, 0x41ECE491UL, | ||
75 | 0xB4C332E6UL, 0x032268D4UL, 0xC9600ACCUL, 0xCE387E6DUL, | ||
76 | 0xBF6BB16CUL, 0x6A70FB78UL, 0x0D03D9C9UL, 0xD4DF39DEUL, | ||
77 | 0xE01063DAUL, 0x4736F464UL, 0x5AD328D8UL, 0xB347CC96UL, | ||
78 | 0x75BB0FC3UL, 0x98511BFBUL, 0x4FFBCC35UL, 0xB58BCF6AUL, | ||
79 | 0xE11F0ABCUL, 0xBFC5FE4AUL, 0xA70AEC10UL, 0xAC39570AUL, | ||
80 | 0x3F04442FUL, 0x6188B153UL, 0xE0397A2EUL, 0x5727CB79UL, | ||
81 | 0x9CEB418FUL, 0x1CACD68DUL, 0x2AD37C96UL, 0x0175CB9DUL, | ||
82 | 0xC69DFF09UL, 0xC75B65F0UL, 0xD9DB40D8UL, 0xEC0E7779UL, | ||
83 | 0x4744EAD4UL, 0xB11C3274UL, 0xDD24CB9EUL, 0x7E1C54BDUL, | ||
84 | 0xF01144F9UL, 0xD2240EB1UL, 0x9675B3FDUL, 0xA3AC3755UL, | ||
85 | 0xD47C27AFUL, 0x51C85F4DUL, 0x56907596UL, 0xA5BB15E6UL, | ||
86 | 0x580304F0UL, 0xCA042CF1UL, 0x011A37EAUL, 0x8DBFAADBUL, | ||
87 | 0x35BA3E4AUL, 0x3526FFA0UL, 0xC37B4D09UL, 0xBC306ED9UL, | ||
88 | 0x98A52666UL, 0x5648F725UL, 0xFF5E569DUL, 0x0CED63D0UL, | ||
89 | 0x7C63B2CFUL, 0x700B45E1UL, 0xD5EA50F1UL, 0x85A92872UL, | ||
90 | 0xAF1FBDA7UL, 0xD4234870UL, 0xA7870BF3UL, 0x2D3B4D79UL, | ||
91 | 0x42E04198UL, 0x0CD0EDE7UL, 0x26470DB8UL, 0xF881814CUL, | ||
92 | 0x474D6AD7UL, 0x7C0C5E5CUL, 0xD1231959UL, 0x381B7298UL, | ||
93 | 0xF5D2F4DBUL, 0xAB838653UL, 0x6E2F1E23UL, 0x83719C9EUL, | ||
94 | 0xBD91E046UL, 0x9A56456EUL, 0xDC39200CUL, 0x20C8C571UL, | ||
95 | 0x962BDA1CUL, 0xE1E696FFUL, 0xB141AB08UL, 0x7CCA89B9UL, | ||
96 | 0x1A69E783UL, 0x02CC4843UL, 0xA2F7C579UL, 0x429EF47DUL, | ||
97 | 0x427B169CUL, 0x5AC9F049UL, 0xDD8F0F00UL, 0x5C8165BFUL | ||
98 | }, | ||
99 | |||
100 | { | ||
101 | 0x1F201094UL, 0xEF0BA75BUL, 0x69E3CF7EUL, 0x393F4380UL, | ||
102 | 0xFE61CF7AUL, 0xEEC5207AUL, 0x55889C94UL, 0x72FC0651UL, | ||
103 | 0xADA7EF79UL, 0x4E1D7235UL, 0xD55A63CEUL, 0xDE0436BAUL, | ||
104 | 0x99C430EFUL, 0x5F0C0794UL, 0x18DCDB7DUL, 0xA1D6EFF3UL, | ||
105 | 0xA0B52F7BUL, 0x59E83605UL, 0xEE15B094UL, 0xE9FFD909UL, | ||
106 | 0xDC440086UL, 0xEF944459UL, 0xBA83CCB3UL, 0xE0C3CDFBUL, | ||
107 | 0xD1DA4181UL, 0x3B092AB1UL, 0xF997F1C1UL, 0xA5E6CF7BUL, | ||
108 | 0x01420DDBUL, 0xE4E7EF5BUL, 0x25A1FF41UL, 0xE180F806UL, | ||
109 | 0x1FC41080UL, 0x179BEE7AUL, 0xD37AC6A9UL, 0xFE5830A4UL, | ||
110 | 0x98DE8B7FUL, 0x77E83F4EUL, 0x79929269UL, 0x24FA9F7BUL, | ||
111 | 0xE113C85BUL, 0xACC40083UL, 0xD7503525UL, 0xF7EA615FUL, | ||
112 | 0x62143154UL, 0x0D554B63UL, 0x5D681121UL, 0xC866C359UL, | ||
113 | 0x3D63CF73UL, 0xCEE234C0UL, 0xD4D87E87UL, 0x5C672B21UL, | ||
114 | 0x071F6181UL, 0x39F7627FUL, 0x361E3084UL, 0xE4EB573BUL, | ||
115 | 0x602F64A4UL, 0xD63ACD9CUL, 0x1BBC4635UL, 0x9E81032DUL, | ||
116 | 0x2701F50CUL, 0x99847AB4UL, 0xA0E3DF79UL, 0xBA6CF38CUL, | ||
117 | 0x10843094UL, 0x2537A95EUL, 0xF46F6FFEUL, 0xA1FF3B1FUL, | ||
118 | 0x208CFB6AUL, 0x8F458C74UL, 0xD9E0A227UL, 0x4EC73A34UL, | ||
119 | 0xFC884F69UL, 0x3E4DE8DFUL, 0xEF0E0088UL, 0x3559648DUL, | ||
120 | 0x8A45388CUL, 0x1D804366UL, 0x721D9BFDUL, 0xA58684BBUL, | ||
121 | 0xE8256333UL, 0x844E8212UL, 0x128D8098UL, 0xFED33FB4UL, | ||
122 | 0xCE280AE1UL, 0x27E19BA5UL, 0xD5A6C252UL, 0xE49754BDUL, | ||
123 | 0xC5D655DDUL, 0xEB667064UL, 0x77840B4DUL, 0xA1B6A801UL, | ||
124 | 0x84DB26A9UL, 0xE0B56714UL, 0x21F043B7UL, 0xE5D05860UL, | ||
125 | 0x54F03084UL, 0x066FF472UL, 0xA31AA153UL, 0xDADC4755UL, | ||
126 | 0xB5625DBFUL, 0x68561BE6UL, 0x83CA6B94UL, 0x2D6ED23BUL, | ||
127 | 0xECCF01DBUL, 0xA6D3D0BAUL, 0xB6803D5CUL, 0xAF77A709UL, | ||
128 | 0x33B4A34CUL, 0x397BC8D6UL, 0x5EE22B95UL, 0x5F0E5304UL, | ||
129 | 0x81ED6F61UL, 0x20E74364UL, 0xB45E1378UL, 0xDE18639BUL, | ||
130 | 0x881CA122UL, 0xB96726D1UL, 0x8049A7E8UL, 0x22B7DA7BUL, | ||
131 | 0x5E552D25UL, 0x5272D237UL, 0x79D2951CUL, 0xC60D894CUL, | ||
132 | 0x488CB402UL, 0x1BA4FE5BUL, 0xA4B09F6BUL, 0x1CA815CFUL, | ||
133 | 0xA20C3005UL, 0x8871DF63UL, 0xB9DE2FCBUL, 0x0CC6C9E9UL, | ||
134 | 0x0BEEFF53UL, 0xE3214517UL, 0xB4542835UL, 0x9F63293CUL, | ||
135 | 0xEE41E729UL, 0x6E1D2D7CUL, 0x50045286UL, 0x1E6685F3UL, | ||
136 | 0xF33401C6UL, 0x30A22C95UL, 0x31A70850UL, 0x60930F13UL, | ||
137 | 0x73F98417UL, 0xA1269859UL, 0xEC645C44UL, 0x52C877A9UL, | ||
138 | 0xCDFF33A6UL, 0xA02B1741UL, 0x7CBAD9A2UL, 0x2180036FUL, | ||
139 | 0x50D99C08UL, 0xCB3F4861UL, 0xC26BD765UL, 0x64A3F6ABUL, | ||
140 | 0x80342676UL, 0x25A75E7BUL, 0xE4E6D1FCUL, 0x20C710E6UL, | ||
141 | 0xCDF0B680UL, 0x17844D3BUL, 0x31EEF84DUL, 0x7E0824E4UL, | ||
142 | 0x2CCB49EBUL, 0x846A3BAEUL, 0x8FF77888UL, 0xEE5D60F6UL, | ||
143 | 0x7AF75673UL, 0x2FDD5CDBUL, 0xA11631C1UL, 0x30F66F43UL, | ||
144 | 0xB3FAEC54UL, 0x157FD7FAUL, 0xEF8579CCUL, 0xD152DE58UL, | ||
145 | 0xDB2FFD5EUL, 0x8F32CE19UL, 0x306AF97AUL, 0x02F03EF8UL, | ||
146 | 0x99319AD5UL, 0xC242FA0FUL, 0xA7E3EBB0UL, 0xC68E4906UL, | ||
147 | 0xB8DA230CUL, 0x80823028UL, 0xDCDEF3C8UL, 0xD35FB171UL, | ||
148 | 0x088A1BC8UL, 0xBEC0C560UL, 0x61A3C9E8UL, 0xBCA8F54DUL, | ||
149 | 0xC72FEFFAUL, 0x22822E99UL, 0x82C570B4UL, 0xD8D94E89UL, | ||
150 | 0x8B1C34BCUL, 0x301E16E6UL, 0x273BE979UL, 0xB0FFEAA6UL, | ||
151 | 0x61D9B8C6UL, 0x00B24869UL, 0xB7FFCE3FUL, 0x08DC283BUL, | ||
152 | 0x43DAF65AUL, 0xF7E19798UL, 0x7619B72FUL, 0x8F1C9BA4UL, | ||
153 | 0xDC8637A0UL, 0x16A7D3B1UL, 0x9FC393B7UL, 0xA7136EEBUL, | ||
154 | 0xC6BCC63EUL, 0x1A513742UL, 0xEF6828BCUL, 0x520365D6UL, | ||
155 | 0x2D6A77ABUL, 0x3527ED4BUL, 0x821FD216UL, 0x095C6E2EUL, | ||
156 | 0xDB92F2FBUL, 0x5EEA29CBUL, 0x145892F5UL, 0x91584F7FUL, | ||
157 | 0x5483697BUL, 0x2667A8CCUL, 0x85196048UL, 0x8C4BACEAUL, | ||
158 | 0x833860D4UL, 0x0D23E0F9UL, 0x6C387E8AUL, 0x0AE6D249UL, | ||
159 | 0xB284600CUL, 0xD835731DUL, 0xDCB1C647UL, 0xAC4C56EAUL, | ||
160 | 0x3EBD81B3UL, 0x230EABB0UL, 0x6438BC87UL, 0xF0B5B1FAUL, | ||
161 | 0x8F5EA2B3UL, 0xFC184642UL, 0x0A036B7AUL, 0x4FB089BDUL, | ||
162 | 0x649DA589UL, 0xA345415EUL, 0x5C038323UL, 0x3E5D3BB9UL, | ||
163 | 0x43D79572UL, 0x7E6DD07CUL, 0x06DFDF1EUL, 0x6C6CC4EFUL, | ||
164 | 0x7160A539UL, 0x73BFBE70UL, 0x83877605UL, 0x4523ECF1UL | ||
165 | }, | ||
166 | |||
167 | { | ||
168 | 0x8DEFC240UL, 0x25FA5D9FUL, 0xEB903DBFUL, 0xE810C907UL, | ||
169 | 0x47607FFFUL, 0x369FE44BUL, 0x8C1FC644UL, 0xAECECA90UL, | ||
170 | 0xBEB1F9BFUL, 0xEEFBCAEAUL, 0xE8CF1950UL, 0x51DF07AEUL, | ||
171 | 0x920E8806UL, 0xF0AD0548UL, 0xE13C8D83UL, 0x927010D5UL, | ||
172 | 0x11107D9FUL, 0x07647DB9UL, 0xB2E3E4D4UL, 0x3D4F285EUL, | ||
173 | 0xB9AFA820UL, 0xFADE82E0UL, 0xA067268BUL, 0x8272792EUL, | ||
174 | 0x553FB2C0UL, 0x489AE22BUL, 0xD4EF9794UL, 0x125E3FBCUL, | ||
175 | 0x21FFFCEEUL, 0x825B1BFDUL, 0x9255C5EDUL, 0x1257A240UL, | ||
176 | 0x4E1A8302UL, 0xBAE07FFFUL, 0x528246E7UL, 0x8E57140EUL, | ||
177 | 0x3373F7BFUL, 0x8C9F8188UL, 0xA6FC4EE8UL, 0xC982B5A5UL, | ||
178 | 0xA8C01DB7UL, 0x579FC264UL, 0x67094F31UL, 0xF2BD3F5FUL, | ||
179 | 0x40FFF7C1UL, 0x1FB78DFCUL, 0x8E6BD2C1UL, 0x437BE59BUL, | ||
180 | 0x99B03DBFUL, 0xB5DBC64BUL, 0x638DC0E6UL, 0x55819D99UL, | ||
181 | 0xA197C81CUL, 0x4A012D6EUL, 0xC5884A28UL, 0xCCC36F71UL, | ||
182 | 0xB843C213UL, 0x6C0743F1UL, 0x8309893CUL, 0x0FEDDD5FUL, | ||
183 | 0x2F7FE850UL, 0xD7C07F7EUL, 0x02507FBFUL, 0x5AFB9A04UL, | ||
184 | 0xA747D2D0UL, 0x1651192EUL, 0xAF70BF3EUL, 0x58C31380UL, | ||
185 | 0x5F98302EUL, 0x727CC3C4UL, 0x0A0FB402UL, 0x0F7FEF82UL, | ||
186 | 0x8C96FDADUL, 0x5D2C2AAEUL, 0x8EE99A49UL, 0x50DA88B8UL, | ||
187 | 0x8427F4A0UL, 0x1EAC5790UL, 0x796FB449UL, 0x8252DC15UL, | ||
188 | 0xEFBD7D9BUL, 0xA672597DUL, 0xADA840D8UL, 0x45F54504UL, | ||
189 | 0xFA5D7403UL, 0xE83EC305UL, 0x4F91751AUL, 0x925669C2UL, | ||
190 | 0x23EFE941UL, 0xA903F12EUL, 0x60270DF2UL, 0x0276E4B6UL, | ||
191 | 0x94FD6574UL, 0x927985B2UL, 0x8276DBCBUL, 0x02778176UL, | ||
192 | 0xF8AF918DUL, 0x4E48F79EUL, 0x8F616DDFUL, 0xE29D840EUL, | ||
193 | 0x842F7D83UL, 0x340CE5C8UL, 0x96BBB682UL, 0x93B4B148UL, | ||
194 | 0xEF303CABUL, 0x984FAF28UL, 0x779FAF9BUL, 0x92DC560DUL, | ||
195 | 0x224D1E20UL, 0x8437AA88UL, 0x7D29DC96UL, 0x2756D3DCUL, | ||
196 | 0x8B907CEEUL, 0xB51FD240UL, 0xE7C07CE3UL, 0xE566B4A1UL, | ||
197 | 0xC3E9615EUL, 0x3CF8209DUL, 0x6094D1E3UL, 0xCD9CA341UL, | ||
198 | 0x5C76460EUL, 0x00EA983BUL, 0xD4D67881UL, 0xFD47572CUL, | ||
199 | 0xF76CEDD9UL, 0xBDA8229CUL, 0x127DADAAUL, 0x438A074EUL, | ||
200 | 0x1F97C090UL, 0x081BDB8AUL, 0x93A07EBEUL, 0xB938CA15UL, | ||
201 | 0x97B03CFFUL, 0x3DC2C0F8UL, 0x8D1AB2ECUL, 0x64380E51UL, | ||
202 | 0x68CC7BFBUL, 0xD90F2788UL, 0x12490181UL, 0x5DE5FFD4UL, | ||
203 | 0xDD7EF86AUL, 0x76A2E214UL, 0xB9A40368UL, 0x925D958FUL, | ||
204 | 0x4B39FFFAUL, 0xBA39AEE9UL, 0xA4FFD30BUL, 0xFAF7933BUL, | ||
205 | 0x6D498623UL, 0x193CBCFAUL, 0x27627545UL, 0x825CF47AUL, | ||
206 | 0x61BD8BA0UL, 0xD11E42D1UL, 0xCEAD04F4UL, 0x127EA392UL, | ||
207 | 0x10428DB7UL, 0x8272A972UL, 0x9270C4A8UL, 0x127DE50BUL, | ||
208 | 0x285BA1C8UL, 0x3C62F44FUL, 0x35C0EAA5UL, 0xE805D231UL, | ||
209 | 0x428929FBUL, 0xB4FCDF82UL, 0x4FB66A53UL, 0x0E7DC15BUL, | ||
210 | 0x1F081FABUL, 0x108618AEUL, 0xFCFD086DUL, 0xF9FF2889UL, | ||
211 | 0x694BCC11UL, 0x236A5CAEUL, 0x12DECA4DUL, 0x2C3F8CC5UL, | ||
212 | 0xD2D02DFEUL, 0xF8EF5896UL, 0xE4CF52DAUL, 0x95155B67UL, | ||
213 | 0x494A488CUL, 0xB9B6A80CUL, 0x5C8F82BCUL, 0x89D36B45UL, | ||
214 | 0x3A609437UL, 0xEC00C9A9UL, 0x44715253UL, 0x0A874B49UL, | ||
215 | 0xD773BC40UL, 0x7C34671CUL, 0x02717EF6UL, 0x4FEB5536UL, | ||
216 | 0xA2D02FFFUL, 0xD2BF60C4UL, 0xD43F03C0UL, 0x50B4EF6DUL, | ||
217 | 0x07478CD1UL, 0x006E1888UL, 0xA2E53F55UL, 0xB9E6D4BCUL, | ||
218 | 0xA2048016UL, 0x97573833UL, 0xD7207D67UL, 0xDE0F8F3DUL, | ||
219 | 0x72F87B33UL, 0xABCC4F33UL, 0x7688C55DUL, 0x7B00A6B0UL, | ||
220 | 0x947B0001UL, 0x570075D2UL, 0xF9BB88F8UL, 0x8942019EUL, | ||
221 | 0x4264A5FFUL, 0x856302E0UL, 0x72DBD92BUL, 0xEE971B69UL, | ||
222 | 0x6EA22FDEUL, 0x5F08AE2BUL, 0xAF7A616DUL, 0xE5C98767UL, | ||
223 | 0xCF1FEBD2UL, 0x61EFC8C2UL, 0xF1AC2571UL, 0xCC8239C2UL, | ||
224 | 0x67214CB8UL, 0xB1E583D1UL, 0xB7DC3E62UL, 0x7F10BDCEUL, | ||
225 | 0xF90A5C38UL, 0x0FF0443DUL, 0x606E6DC6UL, 0x60543A49UL, | ||
226 | 0x5727C148UL, 0x2BE98A1DUL, 0x8AB41738UL, 0x20E1BE24UL, | ||
227 | 0xAF96DA0FUL, 0x68458425UL, 0x99833BE5UL, 0x600D457DUL, | ||
228 | 0x282F9350UL, 0x8334B362UL, 0xD91D1120UL, 0x2B6D8DA0UL, | ||
229 | 0x642B1E31UL, 0x9C305A00UL, 0x52BCE688UL, 0x1B03588AUL, | ||
230 | 0xF7BAEFD5UL, 0x4142ED9CUL, 0xA4315C11UL, 0x83323EC5UL, | ||
231 | 0xDFEF4636UL, 0xA133C501UL, 0xE9D3531CUL, 0xEE353783UL | ||
232 | }, | ||
233 | |||
234 | { | ||
235 | 0x9DB30420UL, 0x1FB6E9DEUL, 0xA7BE7BEFUL, 0xD273A298UL, | ||
236 | 0x4A4F7BDBUL, 0x64AD8C57UL, 0x85510443UL, 0xFA020ED1UL, | ||
237 | 0x7E287AFFUL, 0xE60FB663UL, 0x095F35A1UL, 0x79EBF120UL, | ||
238 | 0xFD059D43UL, 0x6497B7B1UL, 0xF3641F63UL, 0x241E4ADFUL, | ||
239 | 0x28147F5FUL, 0x4FA2B8CDUL, 0xC9430040UL, 0x0CC32220UL, | ||
240 | 0xFDD30B30UL, 0xC0A5374FUL, 0x1D2D00D9UL, 0x24147B15UL, | ||
241 | 0xEE4D111AUL, 0x0FCA5167UL, 0x71FF904CUL, 0x2D195FFEUL, | ||
242 | 0x1A05645FUL, 0x0C13FEFEUL, 0x081B08CAUL, 0x05170121UL, | ||
243 | 0x80530100UL, 0xE83E5EFEUL, 0xAC9AF4F8UL, 0x7FE72701UL, | ||
244 | 0xD2B8EE5FUL, 0x06DF4261UL, 0xBB9E9B8AUL, 0x7293EA25UL, | ||
245 | 0xCE84FFDFUL, 0xF5718801UL, 0x3DD64B04UL, 0xA26F263BUL, | ||
246 | 0x7ED48400UL, 0x547EEBE6UL, 0x446D4CA0UL, 0x6CF3D6F5UL, | ||
247 | 0x2649ABDFUL, 0xAEA0C7F5UL, 0x36338CC1UL, 0x503F7E93UL, | ||
248 | 0xD3772061UL, 0x11B638E1UL, 0x72500E03UL, 0xF80EB2BBUL, | ||
249 | 0xABE0502EUL, 0xEC8D77DEUL, 0x57971E81UL, 0xE14F6746UL, | ||
250 | 0xC9335400UL, 0x6920318FUL, 0x081DBB99UL, 0xFFC304A5UL, | ||
251 | 0x4D351805UL, 0x7F3D5CE3UL, 0xA6C866C6UL, 0x5D5BCCA9UL, | ||
252 | 0xDAEC6FEAUL, 0x9F926F91UL, 0x9F46222FUL, 0x3991467DUL, | ||
253 | 0xA5BF6D8EUL, 0x1143C44FUL, 0x43958302UL, 0xD0214EEBUL, | ||
254 | 0x022083B8UL, 0x3FB6180CUL, 0x18F8931EUL, 0x281658E6UL, | ||
255 | 0x26486E3EUL, 0x8BD78A70UL, 0x7477E4C1UL, 0xB506E07CUL, | ||
256 | 0xF32D0A25UL, 0x79098B02UL, 0xE4EABB81UL, 0x28123B23UL, | ||
257 | 0x69DEAD38UL, 0x1574CA16UL, 0xDF871B62UL, 0x211C40B7UL, | ||
258 | 0xA51A9EF9UL, 0x0014377BUL, 0x041E8AC8UL, 0x09114003UL, | ||
259 | 0xBD59E4D2UL, 0xE3D156D5UL, 0x4FE876D5UL, 0x2F91A340UL, | ||
260 | 0x557BE8DEUL, 0x00EAE4A7UL, 0x0CE5C2ECUL, 0x4DB4BBA6UL, | ||
261 | 0xE756BDFFUL, 0xDD3369ACUL, 0xEC17B035UL, 0x06572327UL, | ||
262 | 0x99AFC8B0UL, 0x56C8C391UL, 0x6B65811CUL, 0x5E146119UL, | ||
263 | 0x6E85CB75UL, 0xBE07C002UL, 0xC2325577UL, 0x893FF4ECUL, | ||
264 | 0x5BBFC92DUL, 0xD0EC3B25UL, 0xB7801AB7UL, 0x8D6D3B24UL, | ||
265 | 0x20C763EFUL, 0xC366A5FCUL, 0x9C382880UL, 0x0ACE3205UL, | ||
266 | 0xAAC9548AUL, 0xECA1D7C7UL, 0x041AFA32UL, 0x1D16625AUL, | ||
267 | 0x6701902CUL, 0x9B757A54UL, 0x31D477F7UL, 0x9126B031UL, | ||
268 | 0x36CC6FDBUL, 0xC70B8B46UL, 0xD9E66A48UL, 0x56E55A79UL, | ||
269 | 0x026A4CEBUL, 0x52437EFFUL, 0x2F8F76B4UL, 0x0DF980A5UL, | ||
270 | 0x8674CDE3UL, 0xEDDA04EBUL, 0x17A9BE04UL, 0x2C18F4DFUL, | ||
271 | 0xB7747F9DUL, 0xAB2AF7B4UL, 0xEFC34D20UL, 0x2E096B7CUL, | ||
272 | 0x1741A254UL, 0xE5B6A035UL, 0x213D42F6UL, 0x2C1C7C26UL, | ||
273 | 0x61C2F50FUL, 0x6552DAF9UL, 0xD2C231F8UL, 0x25130F69UL, | ||
274 | 0xD8167FA2UL, 0x0418F2C8UL, 0x001A96A6UL, 0x0D1526ABUL, | ||
275 | 0x63315C21UL, 0x5E0A72ECUL, 0x49BAFEFDUL, 0x187908D9UL, | ||
276 | 0x8D0DBD86UL, 0x311170A7UL, 0x3E9B640CUL, 0xCC3E10D7UL, | ||
277 | 0xD5CAD3B6UL, 0x0CAEC388UL, 0xF73001E1UL, 0x6C728AFFUL, | ||
278 | 0x71EAE2A1UL, 0x1F9AF36EUL, 0xCFCBD12FUL, 0xC1DE8417UL, | ||
279 | 0xAC07BE6BUL, 0xCB44A1D8UL, 0x8B9B0F56UL, 0x013988C3UL, | ||
280 | 0xB1C52FCAUL, 0xB4BE31CDUL, 0xD8782806UL, 0x12A3A4E2UL, | ||
281 | 0x6F7DE532UL, 0x58FD7EB6UL, 0xD01EE900UL, 0x24ADFFC2UL, | ||
282 | 0xF4990FC5UL, 0x9711AAC5UL, 0x001D7B95UL, 0x82E5E7D2UL, | ||
283 | 0x109873F6UL, 0x00613096UL, 0xC32D9521UL, 0xADA121FFUL, | ||
284 | 0x29908415UL, 0x7FBB977FUL, 0xAF9EB3DBUL, 0x29C9ED2AUL, | ||
285 | 0x5CE2A465UL, 0xA730F32CUL, 0xD0AA3FE8UL, 0x8A5CC091UL, | ||
286 | 0xD49E2CE7UL, 0x0CE454A9UL, 0xD60ACD86UL, 0x015F1919UL, | ||
287 | 0x77079103UL, 0xDEA03AF6UL, 0x78A8565EUL, 0xDEE356DFUL, | ||
288 | 0x21F05CBEUL, 0x8B75E387UL, 0xB3C50651UL, 0xB8A5C3EFUL, | ||
289 | 0xD8EEB6D2UL, 0xE523BE77UL, 0xC2154529UL, 0x2F69EFDFUL, | ||
290 | 0xAFE67AFBUL, 0xF470C4B2UL, 0xF3E0EB5BUL, 0xD6CC9876UL, | ||
291 | 0x39E4460CUL, 0x1FDA8538UL, 0x1987832FUL, 0xCA007367UL, | ||
292 | 0xA99144F8UL, 0x296B299EUL, 0x492FC295UL, 0x9266BEABUL, | ||
293 | 0xB5676E69UL, 0x9BD3DDDAUL, 0xDF7E052FUL, 0xDB25701CUL, | ||
294 | 0x1B5E51EEUL, 0xF65324E6UL, 0x6AFCE36CUL, 0x0316CC04UL, | ||
295 | 0x8644213EUL, 0xB7DC59D0UL, 0x7965291FUL, 0xCCD6FD43UL, | ||
296 | 0x41823979UL, 0x932BCDF6UL, 0xB657C34DUL, 0x4EDFD282UL, | ||
297 | 0x7AE5290CUL, 0x3CB9536BUL, 0x851E20FEUL, 0x9833557EUL, | ||
298 | 0x13ECF0B0UL, 0xD3FFB372UL, 0x3F85C5C1UL, 0x0AEF7ED2UL | ||
299 | }, | ||
300 | |||
301 | { | ||
302 | 0x7EC90C04UL, 0x2C6E74B9UL, 0x9B0E66DFUL, 0xA6337911UL, | ||
303 | 0xB86A7FFFUL, 0x1DD358F5UL, 0x44DD9D44UL, 0x1731167FUL, | ||
304 | 0x08FBF1FAUL, 0xE7F511CCUL, 0xD2051B00UL, 0x735ABA00UL, | ||
305 | 0x2AB722D8UL, 0x386381CBUL, 0xACF6243AUL, 0x69BEFD7AUL, | ||
306 | 0xE6A2E77FUL, 0xF0C720CDUL, 0xC4494816UL, 0xCCF5C180UL, | ||
307 | 0x38851640UL, 0x15B0A848UL, 0xE68B18CBUL, 0x4CAADEFFUL, | ||
308 | 0x5F480A01UL, 0x0412B2AAUL, 0x259814FCUL, 0x41D0EFE2UL, | ||
309 | 0x4E40B48DUL, 0x248EB6FBUL, 0x8DBA1CFEUL, 0x41A99B02UL, | ||
310 | 0x1A550A04UL, 0xBA8F65CBUL, 0x7251F4E7UL, 0x95A51725UL, | ||
311 | 0xC106ECD7UL, 0x97A5980AUL, 0xC539B9AAUL, 0x4D79FE6AUL, | ||
312 | 0xF2F3F763UL, 0x68AF8040UL, 0xED0C9E56UL, 0x11B4958BUL, | ||
313 | 0xE1EB5A88UL, 0x8709E6B0UL, 0xD7E07156UL, 0x4E29FEA7UL, | ||
314 | 0x6366E52DUL, 0x02D1C000UL, 0xC4AC8E05UL, 0x9377F571UL, | ||
315 | 0x0C05372AUL, 0x578535F2UL, 0x2261BE02UL, 0xD642A0C9UL, | ||
316 | 0xDF13A280UL, 0x74B55BD2UL, 0x682199C0UL, 0xD421E5ECUL, | ||
317 | 0x53FB3CE8UL, 0xC8ADEDB3UL, 0x28A87FC9UL, 0x3D959981UL, | ||
318 | 0x5C1FF900UL, 0xFE38D399UL, 0x0C4EFF0BUL, 0x062407EAUL, | ||
319 | 0xAA2F4FB1UL, 0x4FB96976UL, 0x90C79505UL, 0xB0A8A774UL, | ||
320 | 0xEF55A1FFUL, 0xE59CA2C2UL, 0xA6B62D27UL, 0xE66A4263UL, | ||
321 | 0xDF65001FUL, 0x0EC50966UL, 0xDFDD55BCUL, 0x29DE0655UL, | ||
322 | 0x911E739AUL, 0x17AF8975UL, 0x32C7911CUL, 0x89F89468UL, | ||
323 | 0x0D01E980UL, 0x524755F4UL, 0x03B63CC9UL, 0x0CC844B2UL, | ||
324 | 0xBCF3F0AAUL, 0x87AC36E9UL, 0xE53A7426UL, 0x01B3D82BUL, | ||
325 | 0x1A9E7449UL, 0x64EE2D7EUL, 0xCDDBB1DAUL, 0x01C94910UL, | ||
326 | 0xB868BF80UL, 0x0D26F3FDUL, 0x9342EDE7UL, 0x04A5C284UL, | ||
327 | 0x636737B6UL, 0x50F5B616UL, 0xF24766E3UL, 0x8ECA36C1UL, | ||
328 | 0x136E05DBUL, 0xFEF18391UL, 0xFB887A37UL, 0xD6E7F7D4UL, | ||
329 | 0xC7FB7DC9UL, 0x3063FCDFUL, 0xB6F589DEUL, 0xEC2941DAUL, | ||
330 | 0x26E46695UL, 0xB7566419UL, 0xF654EFC5UL, 0xD08D58B7UL, | ||
331 | 0x48925401UL, 0xC1BACB7FUL, 0xE5FF550FUL, 0xB6083049UL, | ||
332 | 0x5BB5D0E8UL, 0x87D72E5AUL, 0xAB6A6EE1UL, 0x223A66CEUL, | ||
333 | 0xC62BF3CDUL, 0x9E0885F9UL, 0x68CB3E47UL, 0x086C010FUL, | ||
334 | 0xA21DE820UL, 0xD18B69DEUL, 0xF3F65777UL, 0xFA02C3F6UL, | ||
335 | 0x407EDAC3UL, 0xCBB3D550UL, 0x1793084DUL, 0xB0D70EBAUL, | ||
336 | 0x0AB378D5UL, 0xD951FB0CUL, 0xDED7DA56UL, 0x4124BBE4UL, | ||
337 | 0x94CA0B56UL, 0x0F5755D1UL, 0xE0E1E56EUL, 0x6184B5BEUL, | ||
338 | 0x580A249FUL, 0x94F74BC0UL, 0xE327888EUL, 0x9F7B5561UL, | ||
339 | 0xC3DC0280UL, 0x05687715UL, 0x646C6BD7UL, 0x44904DB3UL, | ||
340 | 0x66B4F0A3UL, 0xC0F1648AUL, 0x697ED5AFUL, 0x49E92FF6UL, | ||
341 | 0x309E374FUL, 0x2CB6356AUL, 0x85808573UL, 0x4991F840UL, | ||
342 | 0x76F0AE02UL, 0x083BE84DUL, 0x28421C9AUL, 0x44489406UL, | ||
343 | 0x736E4CB8UL, 0xC1092910UL, 0x8BC95FC6UL, 0x7D869CF4UL, | ||
344 | 0x134F616FUL, 0x2E77118DUL, 0xB31B2BE1UL, 0xAA90B472UL, | ||
345 | 0x3CA5D717UL, 0x7D161BBAUL, 0x9CAD9010UL, 0xAF462BA2UL, | ||
346 | 0x9FE459D2UL, 0x45D34559UL, 0xD9F2DA13UL, 0xDBC65487UL, | ||
347 | 0xF3E4F94EUL, 0x176D486FUL, 0x097C13EAUL, 0x631DA5C7UL, | ||
348 | 0x445F7382UL, 0x175683F4UL, 0xCDC66A97UL, 0x70BE0288UL, | ||
349 | 0xB3CDCF72UL, 0x6E5DD2F3UL, 0x20936079UL, 0x459B80A5UL, | ||
350 | 0xBE60E2DBUL, 0xA9C23101UL, 0xEBA5315CUL, 0x224E42F2UL, | ||
351 | 0x1C5C1572UL, 0xF6721B2CUL, 0x1AD2FFF3UL, 0x8C25404EUL, | ||
352 | 0x324ED72FUL, 0x4067B7FDUL, 0x0523138EUL, 0x5CA3BC78UL, | ||
353 | 0xDC0FD66EUL, 0x75922283UL, 0x784D6B17UL, 0x58EBB16EUL, | ||
354 | 0x44094F85UL, 0x3F481D87UL, 0xFCFEAE7BUL, 0x77B5FF76UL, | ||
355 | 0x8C2302BFUL, 0xAAF47556UL, 0x5F46B02AUL, 0x2B092801UL, | ||
356 | 0x3D38F5F7UL, 0x0CA81F36UL, 0x52AF4A8AUL, 0x66D5E7C0UL, | ||
357 | 0xDF3B0874UL, 0x95055110UL, 0x1B5AD7A8UL, 0xF61ED5ADUL, | ||
358 | 0x6CF6E479UL, 0x20758184UL, 0xD0CEFA65UL, 0x88F7BE58UL, | ||
359 | 0x4A046826UL, 0x0FF6F8F3UL, 0xA09C7F70UL, 0x5346ABA0UL, | ||
360 | 0x5CE96C28UL, 0xE176EDA3UL, 0x6BAC307FUL, 0x376829D2UL, | ||
361 | 0x85360FA9UL, 0x17E3FE2AUL, 0x24B79767UL, 0xF5A96B20UL, | ||
362 | 0xD6CD2595UL, 0x68FF1EBFUL, 0x7555442CUL, 0xF19F06BEUL, | ||
363 | 0xF9E0659AUL, 0xEEB9491DUL, 0x34010718UL, 0xBB30CAB8UL, | ||
364 | 0xE822FE15UL, 0x88570983UL, 0x750E6249UL, 0xDA627E55UL, | ||
365 | 0x5E76FFA8UL, 0xB1534546UL, 0x6D47DE08UL, 0xEFE9E7D4UL | ||
366 | }, | ||
367 | |||
368 | { | ||
369 | 0xF6FA8F9DUL, 0x2CAC6CE1UL, 0x4CA34867UL, 0xE2337F7CUL, | ||
370 | 0x95DB08E7UL, 0x016843B4UL, 0xECED5CBCUL, 0x325553ACUL, | ||
371 | 0xBF9F0960UL, 0xDFA1E2EDUL, 0x83F0579DUL, 0x63ED86B9UL, | ||
372 | 0x1AB6A6B8UL, 0xDE5EBE39UL, 0xF38FF732UL, 0x8989B138UL, | ||
373 | 0x33F14961UL, 0xC01937BDUL, 0xF506C6DAUL, 0xE4625E7EUL, | ||
374 | 0xA308EA99UL, 0x4E23E33CUL, 0x79CBD7CCUL, 0x48A14367UL, | ||
375 | 0xA3149619UL, 0xFEC94BD5UL, 0xA114174AUL, 0xEAA01866UL, | ||
376 | 0xA084DB2DUL, 0x09A8486FUL, 0xA888614AUL, 0x2900AF98UL, | ||
377 | 0x01665991UL, 0xE1992863UL, 0xC8F30C60UL, 0x2E78EF3CUL, | ||
378 | 0xD0D51932UL, 0xCF0FEC14UL, 0xF7CA07D2UL, 0xD0A82072UL, | ||
379 | 0xFD41197EUL, 0x9305A6B0UL, 0xE86BE3DAUL, 0x74BED3CDUL, | ||
380 | 0x372DA53CUL, 0x4C7F4448UL, 0xDAB5D440UL, 0x6DBA0EC3UL, | ||
381 | 0x083919A7UL, 0x9FBAEED9UL, 0x49DBCFB0UL, 0x4E670C53UL, | ||
382 | 0x5C3D9C01UL, 0x64BDB941UL, 0x2C0E636AUL, 0xBA7DD9CDUL, | ||
383 | 0xEA6F7388UL, 0xE70BC762UL, 0x35F29ADBUL, 0x5C4CDD8DUL, | ||
384 | 0xF0D48D8CUL, 0xB88153E2UL, 0x08A19866UL, 0x1AE2EAC8UL, | ||
385 | 0x284CAF89UL, 0xAA928223UL, 0x9334BE53UL, 0x3B3A21BFUL, | ||
386 | 0x16434BE3UL, 0x9AEA3906UL, 0xEFE8C36EUL, 0xF890CDD9UL, | ||
387 | 0x80226DAEUL, 0xC340A4A3UL, 0xDF7E9C09UL, 0xA694A807UL, | ||
388 | 0x5B7C5ECCUL, 0x221DB3A6UL, 0x9A69A02FUL, 0x68818A54UL, | ||
389 | 0xCEB2296FUL, 0x53C0843AUL, 0xFE893655UL, 0x25BFE68AUL, | ||
390 | 0xB4628ABCUL, 0xCF222EBFUL, 0x25AC6F48UL, 0xA9A99387UL, | ||
391 | 0x53BDDB65UL, 0xE76FFBE7UL, 0xE967FD78UL, 0x0BA93563UL, | ||
392 | 0x8E342BC1UL, 0xE8A11BE9UL, 0x4980740DUL, 0xC8087DFCUL, | ||
393 | 0x8DE4BF99UL, 0xA11101A0UL, 0x7FD37975UL, 0xDA5A26C0UL, | ||
394 | 0xE81F994FUL, 0x9528CD89UL, 0xFD339FEDUL, 0xB87834BFUL, | ||
395 | 0x5F04456DUL, 0x22258698UL, 0xC9C4C83BUL, 0x2DC156BEUL, | ||
396 | 0x4F628DAAUL, 0x57F55EC5UL, 0xE2220ABEUL, 0xD2916EBFUL, | ||
397 | 0x4EC75B95UL, 0x24F2C3C0UL, 0x42D15D99UL, 0xCD0D7FA0UL, | ||
398 | 0x7B6E27FFUL, 0xA8DC8AF0UL, 0x7345C106UL, 0xF41E232FUL, | ||
399 | 0x35162386UL, 0xE6EA8926UL, 0x3333B094UL, 0x157EC6F2UL, | ||
400 | 0x372B74AFUL, 0x692573E4UL, 0xE9A9D848UL, 0xF3160289UL, | ||
401 | 0x3A62EF1DUL, 0xA787E238UL, 0xF3A5F676UL, 0x74364853UL, | ||
402 | 0x20951063UL, 0x4576698DUL, 0xB6FAD407UL, 0x592AF950UL, | ||
403 | 0x36F73523UL, 0x4CFB6E87UL, 0x7DA4CEC0UL, 0x6C152DAAUL, | ||
404 | 0xCB0396A8UL, 0xC50DFE5DUL, 0xFCD707ABUL, 0x0921C42FUL, | ||
405 | 0x89DFF0BBUL, 0x5FE2BE78UL, 0x448F4F33UL, 0x754613C9UL, | ||
406 | 0x2B05D08DUL, 0x48B9D585UL, 0xDC049441UL, 0xC8098F9BUL, | ||
407 | 0x7DEDE786UL, 0xC39A3373UL, 0x42410005UL, 0x6A091751UL, | ||
408 | 0x0EF3C8A6UL, 0x890072D6UL, 0x28207682UL, 0xA9A9F7BEUL, | ||
409 | 0xBF32679DUL, 0xD45B5B75UL, 0xB353FD00UL, 0xCBB0E358UL, | ||
410 | 0x830F220AUL, 0x1F8FB214UL, 0xD372CF08UL, 0xCC3C4A13UL, | ||
411 | 0x8CF63166UL, 0x061C87BEUL, 0x88C98F88UL, 0x6062E397UL, | ||
412 | 0x47CF8E7AUL, 0xB6C85283UL, 0x3CC2ACFBUL, 0x3FC06976UL, | ||
413 | 0x4E8F0252UL, 0x64D8314DUL, 0xDA3870E3UL, 0x1E665459UL, | ||
414 | 0xC10908F0UL, 0x513021A5UL, 0x6C5B68B7UL, 0x822F8AA0UL, | ||
415 | 0x3007CD3EUL, 0x74719EEFUL, 0xDC872681UL, 0x073340D4UL, | ||
416 | 0x7E432FD9UL, 0x0C5EC241UL, 0x8809286CUL, 0xF592D891UL, | ||
417 | 0x08A930F6UL, 0x957EF305UL, 0xB7FBFFBDUL, 0xC266E96FUL, | ||
418 | 0x6FE4AC98UL, 0xB173ECC0UL, 0xBC60B42AUL, 0x953498DAUL, | ||
419 | 0xFBA1AE12UL, 0x2D4BD736UL, 0x0F25FAABUL, 0xA4F3FCEBUL, | ||
420 | 0xE2969123UL, 0x257F0C3DUL, 0x9348AF49UL, 0x361400BCUL, | ||
421 | 0xE8816F4AUL, 0x3814F200UL, 0xA3F94043UL, 0x9C7A54C2UL, | ||
422 | 0xBC704F57UL, 0xDA41E7F9UL, 0xC25AD33AUL, 0x54F4A084UL, | ||
423 | 0xB17F5505UL, 0x59357CBEUL, 0xEDBD15C8UL, 0x7F97C5ABUL, | ||
424 | 0xBA5AC7B5UL, 0xB6F6DEAFUL, 0x3A479C3AUL, 0x5302DA25UL, | ||
425 | 0x653D7E6AUL, 0x54268D49UL, 0x51A477EAUL, 0x5017D55BUL, | ||
426 | 0xD7D25D88UL, 0x44136C76UL, 0x0404A8C8UL, 0xB8E5A121UL, | ||
427 | 0xB81A928AUL, 0x60ED5869UL, 0x97C55B96UL, 0xEAEC991BUL, | ||
428 | 0x29935913UL, 0x01FDB7F1UL, 0x088E8DFAUL, 0x9AB6F6F5UL, | ||
429 | 0x3B4CBF9FUL, 0x4A5DE3ABUL, 0xE6051D35UL, 0xA0E1D855UL, | ||
430 | 0xD36B4CF1UL, 0xF544EDEBUL, 0xB0E93524UL, 0xBEBB8FBDUL, | ||
431 | 0xA2D762CFUL, 0x49C92F54UL, 0x38B5F331UL, 0x7128A454UL, | ||
432 | 0x48392905UL, 0xA65B1DB8UL, 0x851C97BDUL, 0xD675CF2FUL | ||
433 | }, | ||
434 | |||
435 | { | ||
436 | 0x85E04019UL, 0x332BF567UL, 0x662DBFFFUL, 0xCFC65693UL, | ||
437 | 0x2A8D7F6FUL, 0xAB9BC912UL, 0xDE6008A1UL, 0x2028DA1FUL, | ||
438 | 0x0227BCE7UL, 0x4D642916UL, 0x18FAC300UL, 0x50F18B82UL, | ||
439 | 0x2CB2CB11UL, 0xB232E75CUL, 0x4B3695F2UL, 0xB28707DEUL, | ||
440 | 0xA05FBCF6UL, 0xCD4181E9UL, 0xE150210CUL, 0xE24EF1BDUL, | ||
441 | 0xB168C381UL, 0xFDE4E789UL, 0x5C79B0D8UL, 0x1E8BFD43UL, | ||
442 | 0x4D495001UL, 0x38BE4341UL, 0x913CEE1DUL, 0x92A79C3FUL, | ||
443 | 0x089766BEUL, 0xBAEEADF4UL, 0x1286BECFUL, 0xB6EACB19UL, | ||
444 | 0x2660C200UL, 0x7565BDE4UL, 0x64241F7AUL, 0x8248DCA9UL, | ||
445 | 0xC3B3AD66UL, 0x28136086UL, 0x0BD8DFA8UL, 0x356D1CF2UL, | ||
446 | 0x107789BEUL, 0xB3B2E9CEUL, 0x0502AA8FUL, 0x0BC0351EUL, | ||
447 | 0x166BF52AUL, 0xEB12FF82UL, 0xE3486911UL, 0xD34D7516UL, | ||
448 | 0x4E7B3AFFUL, 0x5F43671BUL, 0x9CF6E037UL, 0x4981AC83UL, | ||
449 | 0x334266CEUL, 0x8C9341B7UL, 0xD0D854C0UL, 0xCB3A6C88UL, | ||
450 | 0x47BC2829UL, 0x4725BA37UL, 0xA66AD22BUL, 0x7AD61F1EUL, | ||
451 | 0x0C5CBAFAUL, 0x4437F107UL, 0xB6E79962UL, 0x42D2D816UL, | ||
452 | 0x0A961288UL, 0xE1A5C06EUL, 0x13749E67UL, 0x72FC081AUL, | ||
453 | 0xB1D139F7UL, 0xF9583745UL, 0xCF19DF58UL, 0xBEC3F756UL, | ||
454 | 0xC06EBA30UL, 0x07211B24UL, 0x45C28829UL, 0xC95E317FUL, | ||
455 | 0xBC8EC511UL, 0x38BC46E9UL, 0xC6E6FA14UL, 0xBAE8584AUL, | ||
456 | 0xAD4EBC46UL, 0x468F508BUL, 0x7829435FUL, 0xF124183BUL, | ||
457 | 0x821DBA9FUL, 0xAFF60FF4UL, 0xEA2C4E6DUL, 0x16E39264UL, | ||
458 | 0x92544A8BUL, 0x009B4FC3UL, 0xABA68CEDUL, 0x9AC96F78UL, | ||
459 | 0x06A5B79AUL, 0xB2856E6EUL, 0x1AEC3CA9UL, 0xBE838688UL, | ||
460 | 0x0E0804E9UL, 0x55F1BE56UL, 0xE7E5363BUL, 0xB3A1F25DUL, | ||
461 | 0xF7DEBB85UL, 0x61FE033CUL, 0x16746233UL, 0x3C034C28UL, | ||
462 | 0xDA6D0C74UL, 0x79AAC56CUL, 0x3CE4E1ADUL, 0x51F0C802UL, | ||
463 | 0x98F8F35AUL, 0x1626A49FUL, 0xEED82B29UL, 0x1D382FE3UL, | ||
464 | 0x0C4FB99AUL, 0xBB325778UL, 0x3EC6D97BUL, 0x6E77A6A9UL, | ||
465 | 0xCB658B5CUL, 0xD45230C7UL, 0x2BD1408BUL, 0x60C03EB7UL, | ||
466 | 0xB9068D78UL, 0xA33754F4UL, 0xF430C87DUL, 0xC8A71302UL, | ||
467 | 0xB96D8C32UL, 0xEBD4E7BEUL, 0xBE8B9D2DUL, 0x7979FB06UL, | ||
468 | 0xE7225308UL, 0x8B75CF77UL, 0x11EF8DA4UL, 0xE083C858UL, | ||
469 | 0x8D6B786FUL, 0x5A6317A6UL, 0xFA5CF7A0UL, 0x5DDA0033UL, | ||
470 | 0xF28EBFB0UL, 0xF5B9C310UL, 0xA0EAC280UL, 0x08B9767AUL, | ||
471 | 0xA3D9D2B0UL, 0x79D34217UL, 0x021A718DUL, 0x9AC6336AUL, | ||
472 | 0x2711FD60UL, 0x438050E3UL, 0x069908A8UL, 0x3D7FEDC4UL, | ||
473 | 0x826D2BEFUL, 0x4EEB8476UL, 0x488DCF25UL, 0x36C9D566UL, | ||
474 | 0x28E74E41UL, 0xC2610ACAUL, 0x3D49A9CFUL, 0xBAE3B9DFUL, | ||
475 | 0xB65F8DE6UL, 0x92AEAF64UL, 0x3AC7D5E6UL, 0x9EA80509UL, | ||
476 | 0xF22B017DUL, 0xA4173F70UL, 0xDD1E16C3UL, 0x15E0D7F9UL, | ||
477 | 0x50B1B887UL, 0x2B9F4FD5UL, 0x625ABA82UL, 0x6A017962UL, | ||
478 | 0x2EC01B9CUL, 0x15488AA9UL, 0xD716E740UL, 0x40055A2CUL, | ||
479 | 0x93D29A22UL, 0xE32DBF9AUL, 0x058745B9UL, 0x3453DC1EUL, | ||
480 | 0xD699296EUL, 0x496CFF6FUL, 0x1C9F4986UL, 0xDFE2ED07UL, | ||
481 | 0xB87242D1UL, 0x19DE7EAEUL, 0x053E561AUL, 0x15AD6F8CUL, | ||
482 | 0x66626C1CUL, 0x7154C24CUL, 0xEA082B2AUL, 0x93EB2939UL, | ||
483 | 0x17DCB0F0UL, 0x58D4F2AEUL, 0x9EA294FBUL, 0x52CF564CUL, | ||
484 | 0x9883FE66UL, 0x2EC40581UL, 0x763953C3UL, 0x01D6692EUL, | ||
485 | 0xD3A0C108UL, 0xA1E7160EUL, 0xE4F2DFA6UL, 0x693ED285UL, | ||
486 | 0x74904698UL, 0x4C2B0EDDUL, 0x4F757656UL, 0x5D393378UL, | ||
487 | 0xA132234FUL, 0x3D321C5DUL, 0xC3F5E194UL, 0x4B269301UL, | ||
488 | 0xC79F022FUL, 0x3C997E7EUL, 0x5E4F9504UL, 0x3FFAFBBDUL, | ||
489 | 0x76F7AD0EUL, 0x296693F4UL, 0x3D1FCE6FUL, 0xC61E45BEUL, | ||
490 | 0xD3B5AB34UL, 0xF72BF9B7UL, 0x1B0434C0UL, 0x4E72B567UL, | ||
491 | 0x5592A33DUL, 0xB5229301UL, 0xCFD2A87FUL, 0x60AEB767UL, | ||
492 | 0x1814386BUL, 0x30BCC33DUL, 0x38A0C07DUL, 0xFD1606F2UL, | ||
493 | 0xC363519BUL, 0x589DD390UL, 0x5479F8E6UL, 0x1CB8D647UL, | ||
494 | 0x97FD61A9UL, 0xEA7759F4UL, 0x2D57539DUL, 0x569A58CFUL, | ||
495 | 0xE84E63ADUL, 0x462E1B78UL, 0x6580F87EUL, 0xF3817914UL, | ||
496 | 0x91DA55F4UL, 0x40A230F3UL, 0xD1988F35UL, 0xB6E318D2UL, | ||
497 | 0x3FFA50BCUL, 0x3D40F021UL, 0xC3C0BDAEUL, 0x4958C24CUL, | ||
498 | 0x518F36B2UL, 0x84B1D370UL, 0x0FEDCE83UL, 0x878DDADAUL, | ||
499 | 0xF2A279C7UL, 0x94E01BE8UL, 0x90716F4BUL, 0x954B8AA3UL | ||
500 | }, | ||
501 | |||
502 | { | ||
503 | 0xE216300DUL, 0xBBDDFFFCUL, 0xA7EBDABDUL, 0x35648095UL, | ||
504 | 0x7789F8B7UL, 0xE6C1121BUL, 0x0E241600UL, 0x052CE8B5UL, | ||
505 | 0x11A9CFB0UL, 0xE5952F11UL, 0xECE7990AUL, 0x9386D174UL, | ||
506 | 0x2A42931CUL, 0x76E38111UL, 0xB12DEF3AUL, 0x37DDDDFCUL, | ||
507 | 0xDE9ADEB1UL, 0x0A0CC32CUL, 0xBE197029UL, 0x84A00940UL, | ||
508 | 0xBB243A0FUL, 0xB4D137CFUL, 0xB44E79F0UL, 0x049EEDFDUL, | ||
509 | 0x0B15A15DUL, 0x480D3168UL, 0x8BBBDE5AUL, 0x669DED42UL, | ||
510 | 0xC7ECE831UL, 0x3F8F95E7UL, 0x72DF191BUL, 0x7580330DUL, | ||
511 | 0x94074251UL, 0x5C7DCDFAUL, 0xABBE6D63UL, 0xAA402164UL, | ||
512 | 0xB301D40AUL, 0x02E7D1CAUL, 0x53571DAEUL, 0x7A3182A2UL, | ||
513 | 0x12A8DDECUL, 0xFDAA335DUL, 0x176F43E8UL, 0x71FB46D4UL, | ||
514 | 0x38129022UL, 0xCE949AD4UL, 0xB84769ADUL, 0x965BD862UL, | ||
515 | 0x82F3D055UL, 0x66FB9767UL, 0x15B80B4EUL, 0x1D5B47A0UL, | ||
516 | 0x4CFDE06FUL, 0xC28EC4B8UL, 0x57E8726EUL, 0x647A78FCUL, | ||
517 | 0x99865D44UL, 0x608BD593UL, 0x6C200E03UL, 0x39DC5FF6UL, | ||
518 | 0x5D0B00A3UL, 0xAE63AFF2UL, 0x7E8BD632UL, 0x70108C0CUL, | ||
519 | 0xBBD35049UL, 0x2998DF04UL, 0x980CF42AUL, 0x9B6DF491UL, | ||
520 | 0x9E7EDD53UL, 0x06918548UL, 0x58CB7E07UL, 0x3B74EF2EUL, | ||
521 | 0x522FFFB1UL, 0xD24708CCUL, 0x1C7E27CDUL, 0xA4EB215BUL, | ||
522 | 0x3CF1D2E2UL, 0x19B47A38UL, 0x424F7618UL, 0x35856039UL, | ||
523 | 0x9D17DEE7UL, 0x27EB35E6UL, 0xC9AFF67BUL, 0x36BAF5B8UL, | ||
524 | 0x09C467CDUL, 0xC18910B1UL, 0xE11DBF7BUL, 0x06CD1AF8UL, | ||
525 | 0x7170C608UL, 0x2D5E3354UL, 0xD4DE495AUL, 0x64C6D006UL, | ||
526 | 0xBCC0C62CUL, 0x3DD00DB3UL, 0x708F8F34UL, 0x77D51B42UL, | ||
527 | 0x264F620FUL, 0x24B8D2BFUL, 0x15C1B79EUL, 0x46A52564UL, | ||
528 | 0xF8D7E54EUL, 0x3E378160UL, 0x7895CDA5UL, 0x859C15A5UL, | ||
529 | 0xE6459788UL, 0xC37BC75FUL, 0xDB07BA0CUL, 0x0676A3ABUL, | ||
530 | 0x7F229B1EUL, 0x31842E7BUL, 0x24259FD7UL, 0xF8BEF472UL, | ||
531 | 0x835FFCB8UL, 0x6DF4C1F2UL, 0x96F5B195UL, 0xFD0AF0FCUL, | ||
532 | 0xB0FE134CUL, 0xE2506D3DUL, 0x4F9B12EAUL, 0xF215F225UL, | ||
533 | 0xA223736FUL, 0x9FB4C428UL, 0x25D04979UL, 0x34C713F8UL, | ||
534 | 0xC4618187UL, 0xEA7A6E98UL, 0x7CD16EFCUL, 0x1436876CUL, | ||
535 | 0xF1544107UL, 0xBEDEEE14UL, 0x56E9AF27UL, 0xA04AA441UL, | ||
536 | 0x3CF7C899UL, 0x92ECBAE6UL, 0xDD67016DUL, 0x151682EBUL, | ||
537 | 0xA842EEDFUL, 0xFDBA60B4UL, 0xF1907B75UL, 0x20E3030FUL, | ||
538 | 0x24D8C29EUL, 0xE139673BUL, 0xEFA63FB8UL, 0x71873054UL, | ||
539 | 0xB6F2CF3BUL, 0x9F326442UL, 0xCB15A4CCUL, 0xB01A4504UL, | ||
540 | 0xF1E47D8DUL, 0x844A1BE5UL, 0xBAE7DFDCUL, 0x42CBDA70UL, | ||
541 | 0xCD7DAE0AUL, 0x57E85B7AUL, 0xD53F5AF6UL, 0x20CF4D8CUL, | ||
542 | 0xCEA4D428UL, 0x79D130A4UL, 0x3486EBFBUL, 0x33D3CDDCUL, | ||
543 | 0x77853B53UL, 0x37EFFCB5UL, 0xC5068778UL, 0xE580B3E6UL, | ||
544 | 0x4E68B8F4UL, 0xC5C8B37EUL, 0x0D809EA2UL, 0x398FEB7CUL, | ||
545 | 0x132A4F94UL, 0x43B7950EUL, 0x2FEE7D1CUL, 0x223613BDUL, | ||
546 | 0xDD06CAA2UL, 0x37DF932BUL, 0xC4248289UL, 0xACF3EBC3UL, | ||
547 | 0x5715F6B7UL, 0xEF3478DDUL, 0xF267616FUL, 0xC148CBE4UL, | ||
548 | 0x9052815EUL, 0x5E410FABUL, 0xB48A2465UL, 0x2EDA7FA4UL, | ||
549 | 0xE87B40E4UL, 0xE98EA084UL, 0x5889E9E1UL, 0xEFD390FCUL, | ||
550 | 0xDD07D35BUL, 0xDB485694UL, 0x38D7E5B2UL, 0x57720101UL, | ||
551 | 0x730EDEBCUL, 0x5B643113UL, 0x94917E4FUL, 0x503C2FBAUL, | ||
552 | 0x646F1282UL, 0x7523D24AUL, 0xE0779695UL, 0xF9C17A8FUL, | ||
553 | 0x7A5B2121UL, 0xD187B896UL, 0x29263A4DUL, 0xBA510CDFUL, | ||
554 | 0x81F47C9FUL, 0xAD1163EDUL, 0xEA7B5965UL, 0x1A00726EUL, | ||
555 | 0x11403092UL, 0x00DA6D77UL, 0x4A0CDD61UL, 0xAD1F4603UL, | ||
556 | 0x605BDFB0UL, 0x9EEDC364UL, 0x22EBE6A8UL, 0xCEE7D28AUL, | ||
557 | 0xA0E736A0UL, 0x5564A6B9UL, 0x10853209UL, 0xC7EB8F37UL, | ||
558 | 0x2DE705CAUL, 0x8951570FUL, 0xDF09822BUL, 0xBD691A6CUL, | ||
559 | 0xAA12E4F2UL, 0x87451C0FUL, 0xE0F6A27AUL, 0x3ADA4819UL, | ||
560 | 0x4CF1764FUL, 0x0D771C2BUL, 0x67CDB156UL, 0x350D8384UL, | ||
561 | 0x5938FA0FUL, 0x42399EF3UL, 0x36997B07UL, 0x0E84093DUL, | ||
562 | 0x4AA93E61UL, 0x8360D87BUL, 0x1FA98B0CUL, 0x1149382CUL, | ||
563 | 0xE97625A5UL, 0x0614D1B7UL, 0x0E25244BUL, 0x0C768347UL, | ||
564 | 0x589E8D82UL, 0x0D2059D1UL, 0xA466BB1EUL, 0xF8DA0A82UL, | ||
565 | 0x04F19130UL, 0xBA6E4EC0UL, 0x99265164UL, 0x1EE7230DUL, | ||
566 | 0x50B2AD80UL, 0xEAEE6801UL, 0x8DB2A283UL, 0xEA8BF59EUL | ||
567 | }}; | ||
568 | |||
569 | /* CAST uses three different round functions */ | ||
570 | #define f1(l, r, km, kr) \ | ||
571 | t = rotlVariable(km + r, kr); \ | ||
572 | l ^= ((S[0][U8a(t)] ^ S[1][U8b(t)]) - \ | ||
573 | S[2][U8c(t)]) + S[3][U8d(t)]; | ||
574 | #define f2(l, r, km, kr) \ | ||
575 | t = rotlVariable(km ^ r, kr); \ | ||
576 | l ^= ((S[0][U8a(t)] - S[1][U8b(t)]) + \ | ||
577 | S[2][U8c(t)]) ^ S[3][U8d(t)]; | ||
578 | #define f3(l, r, km, kr) \ | ||
579 | t = rotlVariable(km - r, kr); \ | ||
580 | l ^= ((S[0][U8a(t)] + S[1][U8b(t)]) ^ \ | ||
581 | S[2][U8c(t)]) - S[3][U8d(t)]; | ||
582 | |||
583 | #define F1(l, r, i, j) f1(l, r, K[i], K[i+j]) | ||
584 | #define F2(l, r, i, j) f2(l, r, K[i], K[i+j]) | ||
585 | #define F3(l, r, i, j) f3(l, r, K[i], K[i+j]) | ||
586 | |||
587 | |||
588 | void Cast5Encrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key) | ||
589 | { | ||
590 | word32 l = BE32 (((word32 *)inBlock)[0]); | ||
591 | word32 r = BE32 (((word32 *)inBlock)[1]); | ||
592 | word32 *K = key->K; | ||
593 | word32 t; | ||
594 | |||
595 | /* Do the work */ | ||
596 | F1(l, r, 0, 16); | ||
597 | F2(r, l, 1, 16); | ||
598 | F3(l, r, 2, 16); | ||
599 | F1(r, l, 3, 16); | ||
600 | F2(l, r, 4, 16); | ||
601 | F3(r, l, 5, 16); | ||
602 | F1(l, r, 6, 16); | ||
603 | F2(r, l, 7, 16); | ||
604 | F3(l, r, 8, 16); | ||
605 | F1(r, l, 9, 16); | ||
606 | F2(l, r, 10, 16); | ||
607 | F3(r, l, 11, 16); | ||
608 | F1(l, r, 12, 16); | ||
609 | F2(r, l, 13, 16); | ||
610 | F3(l, r, 14, 16); | ||
611 | F1(r, l, 15, 16); | ||
612 | |||
613 | /* Put l,r into outblock */ | ||
614 | ((word32 *)outBlock)[0] = BE32 (r); | ||
615 | ((word32 *)outBlock)[1] = BE32 (l); | ||
616 | } | ||
617 | |||
618 | |||
619 | void Cast5Decrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key) | ||
620 | { | ||
621 | word32 r = BE32 (((word32 *)inBlock)[0]); | ||
622 | word32 l = BE32 (((word32 *)inBlock)[1]); | ||
623 | word32 *K = key->K; | ||
624 | word32 t; | ||
625 | |||
626 | /* Only do full 16 rounds if key length > 80 bits */ | ||
627 | F1(r, l, 15, 16); | ||
628 | F3(l, r, 14, 16); | ||
629 | F2(r, l, 13, 16); | ||
630 | F1(l, r, 12, 16); | ||
631 | F3(r, l, 11, 16); | ||
632 | F2(l, r, 10, 16); | ||
633 | F1(r, l, 9, 16); | ||
634 | F3(l, r, 8, 16); | ||
635 | F2(r, l, 7, 16); | ||
636 | F1(l, r, 6, 16); | ||
637 | F3(r, l, 5, 16); | ||
638 | F2(l, r, 4, 16); | ||
639 | F1(r, l, 3, 16); | ||
640 | F3(l, r, 2, 16); | ||
641 | F2(r, l, 1, 16); | ||
642 | F1(l, r, 0, 16); | ||
643 | /* Put l,r into outblock */ | ||
644 | ((word32 *)outBlock)[0] = BE32 (l); | ||
645 | ((word32 *)outBlock)[1] = BE32 (r); | ||
646 | /* Wipe clean */ | ||
647 | t = l = r = 0; | ||
648 | } | ||
649 | |||
650 | void Cast5SetKey (CAST_KEY *key, unsigned int keylength, const byte *userKey) | ||
651 | { | ||
652 | unsigned int i; | ||
653 | word32 *K = key->K; | ||
654 | word32 X[4], Z[4]; | ||
655 | |||
656 | X[0] = BE32 (((word32 *)userKey)[0]); | ||
657 | X[1] = BE32 (((word32 *)userKey)[1]); | ||
658 | X[2] = BE32 (((word32 *)userKey)[2]); | ||
659 | X[3] = BE32 (((word32 *)userKey)[3]); | ||
660 | |||
661 | #define x(i) GETBYTE(X[i/4], 3-i%4) | ||
662 | #define z(i) GETBYTE(Z[i/4], 3-i%4) | ||
663 | |||
664 | for (i=0; i<=16; i+=16) | ||
665 | { | ||
666 | // this part is copied directly from RFC 2144 (with some search and replace) by Wei Dai | ||
667 | Z[0] = X[0] ^ S[4][x(0xD)] ^ S[5][x(0xF)] ^ S[6][x(0xC)] ^ S[7][x(0xE)] ^ S[6][x(0x8)]; | ||
668 | Z[1] = X[2] ^ S[4][z(0x0)] ^ S[5][z(0x2)] ^ S[6][z(0x1)] ^ S[7][z(0x3)] ^ S[7][x(0xA)]; | ||
669 | Z[2] = X[3] ^ S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[4][x(0x9)]; | ||
670 | Z[3] = X[1] ^ S[4][z(0xA)] ^ S[5][z(0x9)] ^ S[6][z(0xB)] ^ S[7][z(0x8)] ^ S[5][x(0xB)]; | ||
671 | K[i+0] = S[4][z(0x8)] ^ S[5][z(0x9)] ^ S[6][z(0x7)] ^ S[7][z(0x6)] ^ S[4][z(0x2)]; | ||
672 | K[i+1] = S[4][z(0xA)] ^ S[5][z(0xB)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[5][z(0x6)]; | ||
673 | K[i+2] = S[4][z(0xC)] ^ S[5][z(0xD)] ^ S[6][z(0x3)] ^ S[7][z(0x2)] ^ S[6][z(0x9)]; | ||
674 | K[i+3] = S[4][z(0xE)] ^ S[5][z(0xF)] ^ S[6][z(0x1)] ^ S[7][z(0x0)] ^ S[7][z(0xC)]; | ||
675 | X[0] = Z[2] ^ S[4][z(0x5)] ^ S[5][z(0x7)] ^ S[6][z(0x4)] ^ S[7][z(0x6)] ^ S[6][z(0x0)]; | ||
676 | X[1] = Z[0] ^ S[4][x(0x0)] ^ S[5][x(0x2)] ^ S[6][x(0x1)] ^ S[7][x(0x3)] ^ S[7][z(0x2)]; | ||
677 | X[2] = Z[1] ^ S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[4][z(0x1)]; | ||
678 | X[3] = Z[3] ^ S[4][x(0xA)] ^ S[5][x(0x9)] ^ S[6][x(0xB)] ^ S[7][x(0x8)] ^ S[5][z(0x3)]; | ||
679 | K[i+4] = S[4][x(0x3)] ^ S[5][x(0x2)] ^ S[6][x(0xC)] ^ S[7][x(0xD)] ^ S[4][x(0x8)]; | ||
680 | K[i+5] = S[4][x(0x1)] ^ S[5][x(0x0)] ^ S[6][x(0xE)] ^ S[7][x(0xF)] ^ S[5][x(0xD)]; | ||
681 | K[i+6] = S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x8)] ^ S[7][x(0x9)] ^ S[6][x(0x3)]; | ||
682 | K[i+7] = S[4][x(0x5)] ^ S[5][x(0x4)] ^ S[6][x(0xA)] ^ S[7][x(0xB)] ^ S[7][x(0x7)]; | ||
683 | Z[0] = X[0] ^ S[4][x(0xD)] ^ S[5][x(0xF)] ^ S[6][x(0xC)] ^ S[7][x(0xE)] ^ S[6][x(0x8)]; | ||
684 | Z[1] = X[2] ^ S[4][z(0x0)] ^ S[5][z(0x2)] ^ S[6][z(0x1)] ^ S[7][z(0x3)] ^ S[7][x(0xA)]; | ||
685 | Z[2] = X[3] ^ S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[4][x(0x9)]; | ||
686 | Z[3] = X[1] ^ S[4][z(0xA)] ^ S[5][z(0x9)] ^ S[6][z(0xB)] ^ S[7][z(0x8)] ^ S[5][x(0xB)]; | ||
687 | K[i+8] = S[4][z(0x3)] ^ S[5][z(0x2)] ^ S[6][z(0xC)] ^ S[7][z(0xD)] ^ S[4][z(0x9)]; | ||
688 | K[i+9] = S[4][z(0x1)] ^ S[5][z(0x0)] ^ S[6][z(0xE)] ^ S[7][z(0xF)] ^ S[5][z(0xC)]; | ||
689 | K[i+10] = S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x8)] ^ S[7][z(0x9)] ^ S[6][z(0x2)]; | ||
690 | K[i+11] = S[4][z(0x5)] ^ S[5][z(0x4)] ^ S[6][z(0xA)] ^ S[7][z(0xB)] ^ S[7][z(0x6)]; | ||
691 | X[0] = Z[2] ^ S[4][z(0x5)] ^ S[5][z(0x7)] ^ S[6][z(0x4)] ^ S[7][z(0x6)] ^ S[6][z(0x0)]; | ||
692 | X[1] = Z[0] ^ S[4][x(0x0)] ^ S[5][x(0x2)] ^ S[6][x(0x1)] ^ S[7][x(0x3)] ^ S[7][z(0x2)]; | ||
693 | X[2] = Z[1] ^ S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[4][z(0x1)]; | ||
694 | X[3] = Z[3] ^ S[4][x(0xA)] ^ S[5][x(0x9)] ^ S[6][x(0xB)] ^ S[7][x(0x8)] ^ S[5][z(0x3)]; | ||
695 | K[i+12] = S[4][x(0x8)] ^ S[5][x(0x9)] ^ S[6][x(0x7)] ^ S[7][x(0x6)] ^ S[4][x(0x3)]; | ||
696 | K[i+13] = S[4][x(0xA)] ^ S[5][x(0xB)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[5][x(0x7)]; | ||
697 | K[i+14] = S[4][x(0xC)] ^ S[5][x(0xD)] ^ S[6][x(0x3)] ^ S[7][x(0x2)] ^ S[6][x(0x8)]; | ||
698 | K[i+15] = S[4][x(0xE)] ^ S[5][x(0xF)] ^ S[6][x(0x1)] ^ S[7][x(0x0)] ^ S[7][x(0xD)]; | ||
699 | } | ||
700 | |||
701 | for (i=16; i<32; i++) | ||
702 | K[i] &= 0x1f; | ||
703 | } | ||
diff --git a/src/Crypto/Cast.h b/src/Crypto/Cast.h deleted file mode 100644 index 5c744494..00000000 --- a/src/Crypto/Cast.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | #ifndef HEADER_CAST_H | ||
5 | #define HEADER_CAST_H | ||
6 | |||
7 | #ifdef __cplusplus | ||
8 | extern "C" { | ||
9 | #endif | ||
10 | |||
11 | typedef struct CAST_KEY_STRUCT | ||
12 | { | ||
13 | unsigned __int32 K[32]; | ||
14 | } CAST_KEY; | ||
15 | |||
16 | void Cast5Decrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key); | ||
17 | void Cast5Encrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key); | ||
18 | void Cast5SetKey (CAST_KEY *key, unsigned int keylength, const byte *userKey); | ||
19 | |||
20 | #ifdef __cplusplus | ||
21 | } | ||
22 | #endif | ||
23 | |||
24 | #endif | ||
diff --git a/src/Crypto/Crypto.vcproj b/src/Crypto/Crypto.vcproj index e1d2e410..72e6f645 100644 --- a/src/Crypto/Crypto.vcproj +++ b/src/Crypto/Crypto.vcproj | |||
@@ -212,18 +212,6 @@ | |||
212 | > | 212 | > |
213 | </File> | 213 | </File> |
214 | <File | 214 | <File |
215 | RelativePath=".\Blowfish.c" | ||
216 | > | ||
217 | </File> | ||
218 | <File | ||
219 | RelativePath=".\Cast.c" | ||
220 | > | ||
221 | </File> | ||
222 | <File | ||
223 | RelativePath=".\Des.c" | ||
224 | > | ||
225 | </File> | ||
226 | <File | ||
227 | RelativePath=".\Rmd160.c" | 215 | RelativePath=".\Rmd160.c" |
228 | > | 216 | > |
229 | </File> | 217 | </File> |
@@ -232,10 +220,6 @@ | |||
232 | > | 220 | > |
233 | </File> | 221 | </File> |
234 | <File | 222 | <File |
235 | RelativePath=".\Sha1.c" | ||
236 | > | ||
237 | </File> | ||
238 | <File | ||
239 | RelativePath=".\Sha2.c" | 223 | RelativePath=".\Sha2.c" |
240 | > | 224 | > |
241 | </File> | 225 | </File> |
diff --git a/src/Crypto/Des.c b/src/Crypto/Des.c deleted file mode 100644 index 8f14d6c0..00000000 --- a/src/Crypto/Des.c +++ /dev/null | |||
@@ -1,406 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | // des.cpp - modified by Wei Dai from Phil Karn's des.c | ||
5 | // The original code and all modifications are in the public domain. | ||
6 | |||
7 | /* | ||
8 | * This is a major rewrite of my old public domain DES code written | ||
9 | * circa 1987, which in turn borrowed heavily from Jim Gillogly's 1977 | ||
10 | * public domain code. I pretty much kept my key scheduling code, but | ||
11 | * the actual encrypt/decrypt routines are taken from from Richard | ||
12 | * Outerbridge's DES code as printed in Schneier's "Applied Cryptography." | ||
13 | * | ||
14 | * This code is in the public domain. I would appreciate bug reports and | ||
15 | * enhancements. | ||
16 | * | ||
17 | * Phil Karn KA9Q, karn@unix.ka9q.ampr.org, August 1994. | ||
18 | */ | ||
19 | |||
20 | /* Adapted for TrueCrypt */ | ||
21 | |||
22 | #include <memory.h> | ||
23 | #include "Common/Tcdefs.h" | ||
24 | #include "Common/Endian.h" | ||
25 | #include "Des.h" | ||
26 | |||
27 | #define word32 unsigned __int32 | ||
28 | #define byte unsigned __int8 | ||
29 | |||
30 | static word32 rotlFixed (word32 x, unsigned int y) | ||
31 | { | ||
32 | return (word32)((x<<y) | (x>>(sizeof(word32)*8-y))); | ||
33 | } | ||
34 | |||
35 | static word32 rotrFixed (word32 x, unsigned int y) | ||
36 | { | ||
37 | return (word32)((x>>y) | (x<<(sizeof(word32)*8-y))); | ||
38 | } | ||
39 | |||
40 | |||
41 | /* Tables defined in the Data Encryption Standard documents | ||
42 | * Three of these tables, the initial permutation, the final | ||
43 | * permutation and the expansion operator, are regular enough that | ||
44 | * for speed, we hard-code them. They're here for reference only. | ||
45 | * Also, the S and P boxes are used by a separate program, gensp.c, | ||
46 | * to build the combined SP box, Spbox[]. They're also here just | ||
47 | * for reference. | ||
48 | */ | ||
49 | #ifdef notdef | ||
50 | /* initial permutation IP */ | ||
51 | static byte ip[] = { | ||
52 | 58, 50, 42, 34, 26, 18, 10, 2, | ||
53 | 60, 52, 44, 36, 28, 20, 12, 4, | ||
54 | 62, 54, 46, 38, 30, 22, 14, 6, | ||
55 | 64, 56, 48, 40, 32, 24, 16, 8, | ||
56 | 57, 49, 41, 33, 25, 17, 9, 1, | ||
57 | 59, 51, 43, 35, 27, 19, 11, 3, | ||
58 | 61, 53, 45, 37, 29, 21, 13, 5, | ||
59 | 63, 55, 47, 39, 31, 23, 15, 7 | ||
60 | }; | ||
61 | |||
62 | /* final permutation IP^-1 */ | ||
63 | static byte fp[] = { | ||
64 | 40, 8, 48, 16, 56, 24, 64, 32, | ||
65 | 39, 7, 47, 15, 55, 23, 63, 31, | ||
66 | 38, 6, 46, 14, 54, 22, 62, 30, | ||
67 | 37, 5, 45, 13, 53, 21, 61, 29, | ||
68 | 36, 4, 44, 12, 52, 20, 60, 28, | ||
69 | 35, 3, 43, 11, 51, 19, 59, 27, | ||
70 | 34, 2, 42, 10, 50, 18, 58, 26, | ||
71 | 33, 1, 41, 9, 49, 17, 57, 25 | ||
72 | }; | ||
73 | /* expansion operation matrix */ | ||
74 | static byte ei[] = { | ||
75 | 32, 1, 2, 3, 4, 5, | ||
76 | 4, 5, 6, 7, 8, 9, | ||
77 | 8, 9, 10, 11, 12, 13, | ||
78 | 12, 13, 14, 15, 16, 17, | ||
79 | 16, 17, 18, 19, 20, 21, | ||
80 | 20, 21, 22, 23, 24, 25, | ||
81 | 24, 25, 26, 27, 28, 29, | ||
82 | 28, 29, 30, 31, 32, 1 | ||
83 | }; | ||
84 | /* The (in)famous S-boxes */ | ||
85 | static byte sbox[8][64] = { | ||
86 | /* S1 */ | ||
87 | 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, | ||
88 | 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, | ||
89 | 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, | ||
90 | 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, | ||
91 | |||
92 | /* S2 */ | ||
93 | 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, | ||
94 | 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, | ||
95 | 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, | ||
96 | 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, | ||
97 | |||
98 | /* S3 */ | ||
99 | 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, | ||
100 | 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, | ||
101 | 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, | ||
102 | 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, | ||
103 | |||
104 | /* S4 */ | ||
105 | 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, | ||
106 | 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, | ||
107 | 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, | ||
108 | 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14, | ||
109 | |||
110 | /* S5 */ | ||
111 | 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, | ||
112 | 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, | ||
113 | 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, | ||
114 | 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, | ||
115 | |||
116 | /* S6 */ | ||
117 | 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, | ||
118 | 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, | ||
119 | 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, | ||
120 | 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, | ||
121 | |||
122 | /* S7 */ | ||
123 | 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, | ||
124 | 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, | ||
125 | 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, | ||
126 | 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12, | ||
127 | |||
128 | /* S8 */ | ||
129 | 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, | ||
130 | 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, | ||
131 | 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8, | ||
132 | 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 | ||
133 | }; | ||
134 | |||
135 | /* 32-bit permutation function P used on the output of the S-boxes */ | ||
136 | static byte p32i[] = { | ||
137 | 16, 7, 20, 21, | ||
138 | 29, 12, 28, 17, | ||
139 | 1, 15, 23, 26, | ||
140 | 5, 18, 31, 10, | ||
141 | 2, 8, 24, 14, | ||
142 | 32, 27, 3, 9, | ||
143 | 19, 13, 30, 6, | ||
144 | 22, 11, 4, 25 | ||
145 | }; | ||
146 | #endif | ||
147 | |||
148 | /* permuted choice table (key) */ | ||
149 | static const byte pc1[] = { | ||
150 | 57, 49, 41, 33, 25, 17, 9, | ||
151 | 1, 58, 50, 42, 34, 26, 18, | ||
152 | 10, 2, 59, 51, 43, 35, 27, | ||
153 | 19, 11, 3, 60, 52, 44, 36, | ||
154 | |||
155 | 63, 55, 47, 39, 31, 23, 15, | ||
156 | 7, 62, 54, 46, 38, 30, 22, | ||
157 | 14, 6, 61, 53, 45, 37, 29, | ||
158 | 21, 13, 5, 28, 20, 12, 4 | ||
159 | }; | ||
160 | |||
161 | /* number left rotations of pc1 */ | ||
162 | static const byte totrot[] = { | ||
163 | 1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 | ||
164 | }; | ||
165 | |||
166 | /* permuted choice key (table) */ | ||
167 | static const byte pc2[] = { | ||
168 | 14, 17, 11, 24, 1, 5, | ||
169 | 3, 28, 15, 6, 21, 10, | ||
170 | 23, 19, 12, 4, 26, 8, | ||
171 | 16, 7, 27, 20, 13, 2, | ||
172 | 41, 52, 31, 37, 47, 55, | ||
173 | 30, 40, 51, 45, 33, 48, | ||
174 | 44, 49, 39, 56, 34, 53, | ||
175 | 46, 42, 50, 36, 29, 32 | ||
176 | }; | ||
177 | |||
178 | /* End of DES-defined tables */ | ||
179 | |||
180 | /* bit 0 is left-most in byte */ | ||
181 | static const int bytebit[] = { | ||
182 | 0200,0100,040,020,010,04,02,01 | ||
183 | }; | ||
184 | |||
185 | static const word32 Spbox[8][64] = { | ||
186 | { | ||
187 | 0x01010400,0x00000000,0x00010000,0x01010404, 0x01010004,0x00010404,0x00000004,0x00010000, | ||
188 | 0x00000400,0x01010400,0x01010404,0x00000400, 0x01000404,0x01010004,0x01000000,0x00000004, | ||
189 | 0x00000404,0x01000400,0x01000400,0x00010400, 0x00010400,0x01010000,0x01010000,0x01000404, | ||
190 | 0x00010004,0x01000004,0x01000004,0x00010004, 0x00000000,0x00000404,0x00010404,0x01000000, | ||
191 | 0x00010000,0x01010404,0x00000004,0x01010000, 0x01010400,0x01000000,0x01000000,0x00000400, | ||
192 | 0x01010004,0x00010000,0x00010400,0x01000004, 0x00000400,0x00000004,0x01000404,0x00010404, | ||
193 | 0x01010404,0x00010004,0x01010000,0x01000404, 0x01000004,0x00000404,0x00010404,0x01010400, | ||
194 | 0x00000404,0x01000400,0x01000400,0x00000000, 0x00010004,0x00010400,0x00000000,0x01010004}, | ||
195 | { | ||
196 | 0x80108020,0x80008000,0x00008000,0x00108020, 0x00100000,0x00000020,0x80100020,0x80008020, | ||
197 | 0x80000020,0x80108020,0x80108000,0x80000000, 0x80008000,0x00100000,0x00000020,0x80100020, | ||
198 | 0x00108000,0x00100020,0x80008020,0x00000000, 0x80000000,0x00008000,0x00108020,0x80100000, | ||
199 | 0x00100020,0x80000020,0x00000000,0x00108000, 0x00008020,0x80108000,0x80100000,0x00008020, | ||
200 | 0x00000000,0x00108020,0x80100020,0x00100000, 0x80008020,0x80100000,0x80108000,0x00008000, | ||
201 | 0x80100000,0x80008000,0x00000020,0x80108020, 0x00108020,0x00000020,0x00008000,0x80000000, | ||
202 | 0x00008020,0x80108000,0x00100000,0x80000020, 0x00100020,0x80008020,0x80000020,0x00100020, | ||
203 | 0x00108000,0x00000000,0x80008000,0x00008020, 0x80000000,0x80100020,0x80108020,0x00108000}, | ||
204 | { | ||
205 | 0x00000208,0x08020200,0x00000000,0x08020008, 0x08000200,0x00000000,0x00020208,0x08000200, | ||
206 | 0x00020008,0x08000008,0x08000008,0x00020000, 0x08020208,0x00020008,0x08020000,0x00000208, | ||
207 | 0x08000000,0x00000008,0x08020200,0x00000200, 0x00020200,0x08020000,0x08020008,0x00020208, | ||
208 | 0x08000208,0x00020200,0x00020000,0x08000208, 0x00000008,0x08020208,0x00000200,0x08000000, | ||
209 | 0x08020200,0x08000000,0x00020008,0x00000208, 0x00020000,0x08020200,0x08000200,0x00000000, | ||
210 | 0x00000200,0x00020008,0x08020208,0x08000200, 0x08000008,0x00000200,0x00000000,0x08020008, | ||
211 | 0x08000208,0x00020000,0x08000000,0x08020208, 0x00000008,0x00020208,0x00020200,0x08000008, | ||
212 | 0x08020000,0x08000208,0x00000208,0x08020000, 0x00020208,0x00000008,0x08020008,0x00020200}, | ||
213 | { | ||
214 | 0x00802001,0x00002081,0x00002081,0x00000080, 0x00802080,0x00800081,0x00800001,0x00002001, | ||
215 | 0x00000000,0x00802000,0x00802000,0x00802081, 0x00000081,0x00000000,0x00800080,0x00800001, | ||
216 | 0x00000001,0x00002000,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002001,0x00002080, | ||
217 | 0x00800081,0x00000001,0x00002080,0x00800080, 0x00002000,0x00802080,0x00802081,0x00000081, | ||
218 | 0x00800080,0x00800001,0x00802000,0x00802081, 0x00000081,0x00000000,0x00000000,0x00802000, | ||
219 | 0x00002080,0x00800080,0x00800081,0x00000001, 0x00802001,0x00002081,0x00002081,0x00000080, | ||
220 | 0x00802081,0x00000081,0x00000001,0x00002000, 0x00800001,0x00002001,0x00802080,0x00800081, | ||
221 | 0x00002001,0x00002080,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002000,0x00802080}, | ||
222 | { | ||
223 | 0x00000100,0x02080100,0x02080000,0x42000100, 0x00080000,0x00000100,0x40000000,0x02080000, | ||
224 | 0x40080100,0x00080000,0x02000100,0x40080100, 0x42000100,0x42080000,0x00080100,0x40000000, | ||
225 | 0x02000000,0x40080000,0x40080000,0x00000000, 0x40000100,0x42080100,0x42080100,0x02000100, | ||
226 | 0x42080000,0x40000100,0x00000000,0x42000000, 0x02080100,0x02000000,0x42000000,0x00080100, | ||
227 | 0x00080000,0x42000100,0x00000100,0x02000000, 0x40000000,0x02080000,0x42000100,0x40080100, | ||
228 | 0x02000100,0x40000000,0x42080000,0x02080100, 0x40080100,0x00000100,0x02000000,0x42080000, | ||
229 | 0x42080100,0x00080100,0x42000000,0x42080100, 0x02080000,0x00000000,0x40080000,0x42000000, | ||
230 | 0x00080100,0x02000100,0x40000100,0x00080000, 0x00000000,0x40080000,0x02080100,0x40000100}, | ||
231 | { | ||
232 | 0x20000010,0x20400000,0x00004000,0x20404010, 0x20400000,0x00000010,0x20404010,0x00400000, | ||
233 | 0x20004000,0x00404010,0x00400000,0x20000010, 0x00400010,0x20004000,0x20000000,0x00004010, | ||
234 | 0x00000000,0x00400010,0x20004010,0x00004000, 0x00404000,0x20004010,0x00000010,0x20400010, | ||
235 | 0x20400010,0x00000000,0x00404010,0x20404000, 0x00004010,0x00404000,0x20404000,0x20000000, | ||
236 | 0x20004000,0x00000010,0x20400010,0x00404000, 0x20404010,0x00400000,0x00004010,0x20000010, | ||
237 | 0x00400000,0x20004000,0x20000000,0x00004010, 0x20000010,0x20404010,0x00404000,0x20400000, | ||
238 | 0x00404010,0x20404000,0x00000000,0x20400010, 0x00000010,0x00004000,0x20400000,0x00404010, | ||
239 | 0x00004000,0x00400010,0x20004010,0x00000000, 0x20404000,0x20000000,0x00400010,0x20004010}, | ||
240 | { | ||
241 | 0x00200000,0x04200002,0x04000802,0x00000000, 0x00000800,0x04000802,0x00200802,0x04200800, | ||
242 | 0x04200802,0x00200000,0x00000000,0x04000002, 0x00000002,0x04000000,0x04200002,0x00000802, | ||
243 | 0x04000800,0x00200802,0x00200002,0x04000800, 0x04000002,0x04200000,0x04200800,0x00200002, | ||
244 | 0x04200000,0x00000800,0x00000802,0x04200802, 0x00200800,0x00000002,0x04000000,0x00200800, | ||
245 | 0x04000000,0x00200800,0x00200000,0x04000802, 0x04000802,0x04200002,0x04200002,0x00000002, | ||
246 | 0x00200002,0x04000000,0x04000800,0x00200000, 0x04200800,0x00000802,0x00200802,0x04200800, | ||
247 | 0x00000802,0x04000002,0x04200802,0x04200000, 0x00200800,0x00000000,0x00000002,0x04200802, | ||
248 | 0x00000000,0x00200802,0x04200000,0x00000800, 0x04000002,0x04000800,0x00000800,0x00200002}, | ||
249 | { | ||
250 | 0x10001040,0x00001000,0x00040000,0x10041040, 0x10000000,0x10001040,0x00000040,0x10000000, | ||
251 | 0x00040040,0x10040000,0x10041040,0x00041000, 0x10041000,0x00041040,0x00001000,0x00000040, | ||
252 | 0x10040000,0x10000040,0x10001000,0x00001040, 0x00041000,0x00040040,0x10040040,0x10041000, | ||
253 | 0x00001040,0x00000000,0x00000000,0x10040040, 0x10000040,0x10001000,0x00041040,0x00040000, | ||
254 | 0x00041040,0x00040000,0x10041000,0x00001000, 0x00000040,0x10040040,0x00001000,0x00041040, | ||
255 | 0x10001000,0x00000040,0x10000040,0x10040000, 0x10040040,0x10000000,0x00040000,0x10001040, | ||
256 | 0x00000000,0x10041040,0x00040040,0x10000040, 0x10040000,0x10001000,0x10001040,0x00000000, | ||
257 | 0x10041040,0x00041000,0x00041000,0x00001040, 0x00001040,0x00040040,0x10000000,0x10041000} | ||
258 | }; | ||
259 | |||
260 | /* Set key (initialize key schedule array) */ | ||
261 | static void RawSetKey (int encryption, const byte *key, word32 *scheduledKey) | ||
262 | { | ||
263 | byte buffer[56+56+8]; | ||
264 | byte *const pc1m=buffer; /* place to modify pc1 into */ | ||
265 | byte *const pcr=pc1m+56; /* place to rotate pc1 into */ | ||
266 | byte *const ks=pcr+56; | ||
267 | register int i,j,l; | ||
268 | int m; | ||
269 | |||
270 | for (j=0; j<56; j++) { /* convert pc1 to bits of key */ | ||
271 | l=pc1[j]-1; /* integer bit location */ | ||
272 | m = l & 07; /* find bit */ | ||
273 | pc1m[j]=(key[l>>3] & /* find which key byte l is in */ | ||
274 | bytebit[m]) /* and which bit of that byte */ | ||
275 | ? 1 : 0; /* and store 1-bit result */ | ||
276 | } | ||
277 | for (i=0; i<16; i++) { /* key chunk for each iteration */ | ||
278 | memset(ks,0,8); /* Clear key schedule */ | ||
279 | for (j=0; j<56; j++) /* rotate pc1 the right amount */ | ||
280 | pcr[j] = pc1m[(l=j+totrot[i])<(j<28? 28 : 56) ? l: l-28]; | ||
281 | /* rotate left and right halves independently */ | ||
282 | for (j=0; j<48; j++){ /* select bits individually */ | ||
283 | /* check bit that goes to ks[j] */ | ||
284 | if (pcr[pc2[j]-1]){ | ||
285 | /* mask it in if it's there */ | ||
286 | l= j % 6; | ||
287 | ks[j/6] |= bytebit[l] >> 2; | ||
288 | } | ||
289 | } | ||
290 | /* Now convert to odd/even interleaved form for use in F */ | ||
291 | scheduledKey[2*i] = ((word32)ks[0] << 24) | ||
292 | | ((word32)ks[2] << 16) | ||
293 | | ((word32)ks[4] << 8) | ||
294 | | ((word32)ks[6]); | ||
295 | scheduledKey[2*i+1] = ((word32)ks[1] << 24) | ||
296 | | ((word32)ks[3] << 16) | ||
297 | | ((word32)ks[5] << 8) | ||
298 | | ((word32)ks[7]); | ||
299 | } | ||
300 | |||
301 | if (!encryption) // reverse key schedule order | ||
302 | for (i=0; i<16; i+=2) | ||
303 | { | ||
304 | word32 b = scheduledKey[i]; | ||
305 | scheduledKey[i] = scheduledKey[32-2-i]; | ||
306 | scheduledKey[32-2-i] = b; | ||
307 | |||
308 | b = scheduledKey[i+1]; | ||
309 | scheduledKey[i+1] = scheduledKey[32-1-i]; | ||
310 | scheduledKey[32-1-i] = b; | ||
311 | } | ||
312 | |||
313 | burn (buffer, sizeof (buffer)); | ||
314 | } | ||
315 | |||
316 | static void RawProcessBlock(word32 *l_, word32 *r_, const word32 *k) | ||
317 | { | ||
318 | word32 l = *l_, r = *r_; | ||
319 | const word32 *kptr=k; | ||
320 | unsigned i; | ||
321 | |||
322 | for (i=0; i<8; i++) | ||
323 | { | ||
324 | word32 work = rotrFixed(r, 4U) ^ kptr[4*i+0]; | ||
325 | l ^= Spbox[6][(work) & 0x3f] | ||
326 | ^ Spbox[4][(work >> 8) & 0x3f] | ||
327 | ^ Spbox[2][(work >> 16) & 0x3f] | ||
328 | ^ Spbox[0][(work >> 24) & 0x3f]; | ||
329 | work = r ^ kptr[4*i+1]; | ||
330 | l ^= Spbox[7][(work) & 0x3f] | ||
331 | ^ Spbox[5][(work >> 8) & 0x3f] | ||
332 | ^ Spbox[3][(work >> 16) & 0x3f] | ||
333 | ^ Spbox[1][(work >> 24) & 0x3f]; | ||
334 | |||
335 | work = rotrFixed(l, 4U) ^ kptr[4*i+2]; | ||
336 | r ^= Spbox[6][(work) & 0x3f] | ||
337 | ^ Spbox[4][(work >> 8) & 0x3f] | ||
338 | ^ Spbox[2][(work >> 16) & 0x3f] | ||
339 | ^ Spbox[0][(work >> 24) & 0x3f]; | ||
340 | work = l ^ kptr[4*i+3]; | ||
341 | r ^= Spbox[7][(work) & 0x3f] | ||
342 | ^ Spbox[5][(work >> 8) & 0x3f] | ||
343 | ^ Spbox[3][(work >> 16) & 0x3f] | ||
344 | ^ Spbox[1][(work >> 24) & 0x3f]; | ||
345 | } | ||
346 | |||
347 | *l_ = l; *r_ = r; | ||
348 | } | ||
349 | |||
350 | void TripleDesSetKey (const byte *userKey, unsigned int length, TDES_KEY *ks) | ||
351 | { | ||
352 | RawSetKey (1, userKey + 0, ks->k1); | ||
353 | RawSetKey (1, userKey + 8, ks->k2); | ||
354 | RawSetKey (1, userKey + 16, ks->k3); | ||
355 | RawSetKey (0, userKey + 16, ks->k1d); | ||
356 | RawSetKey (0, userKey + 8, ks->k2d); | ||
357 | RawSetKey (0, userKey + 0, ks->k3d); | ||
358 | } | ||
359 | |||
360 | void TripleDesEncrypt (byte *inBlock, byte *outBlock, TDES_KEY *key, int encrypt) | ||
361 | { | ||
362 | word32 left = BE32 (((word32 *)inBlock)[0]); | ||
363 | word32 right = BE32 (((word32 *)inBlock)[1]); | ||
364 | word32 work; | ||
365 | |||
366 | right = rotlFixed(right, 4U); | ||
367 | work = (left ^ right) & 0xf0f0f0f0; | ||
368 | left ^= work; | ||
369 | right = rotrFixed(right^work, 20U); | ||
370 | work = (left ^ right) & 0xffff0000; | ||
371 | left ^= work; | ||
372 | right = rotrFixed(right^work, 18U); | ||
373 | work = (left ^ right) & 0x33333333; | ||
374 | left ^= work; | ||
375 | right = rotrFixed(right^work, 6U); | ||
376 | work = (left ^ right) & 0x00ff00ff; | ||
377 | left ^= work; | ||
378 | right = rotlFixed(right^work, 9U); | ||
379 | work = (left ^ right) & 0xaaaaaaaa; | ||
380 | left = rotlFixed(left^work, 1U); | ||
381 | right ^= work; | ||
382 | |||
383 | RawProcessBlock (&left, &right, encrypt ? key->k1 : key->k1d); | ||
384 | RawProcessBlock (&right, &left, !encrypt ? key->k2 : key->k2d); | ||
385 | RawProcessBlock (&left, &right, encrypt ? key->k3 : key->k3d); | ||
386 | |||
387 | right = rotrFixed(right, 1U); | ||
388 | work = (left ^ right) & 0xaaaaaaaa; | ||
389 | right ^= work; | ||
390 | left = rotrFixed(left^work, 9U); | ||
391 | work = (left ^ right) & 0x00ff00ff; | ||
392 | right ^= work; | ||
393 | left = rotlFixed(left^work, 6U); | ||
394 | work = (left ^ right) & 0x33333333; | ||
395 | right ^= work; | ||
396 | left = rotlFixed(left^work, 18U); | ||
397 | work = (left ^ right) & 0xffff0000; | ||
398 | right ^= work; | ||
399 | left = rotlFixed(left^work, 20U); | ||
400 | work = (left ^ right) & 0xf0f0f0f0; | ||
401 | right ^= work; | ||
402 | left = rotrFixed(left^work, 4U); | ||
403 | |||
404 | ((word32 *)outBlock)[0] = BE32 (right); | ||
405 | ((word32 *)outBlock)[1] = BE32 (left); | ||
406 | } | ||
diff --git a/src/Crypto/Des.h b/src/Crypto/Des.h deleted file mode 100644 index 5fc2633a..00000000 --- a/src/Crypto/Des.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | |||
4 | #ifndef HEADER_Crypto_DES | ||
5 | #define HEADER_Crypto_DES | ||
6 | |||
7 | #ifdef __cplusplus | ||
8 | extern "C" { | ||
9 | #endif | ||
10 | |||
11 | typedef struct TRIPLE_DES_KEY_STRUCT | ||
12 | { | ||
13 | unsigned __int32 k1[32]; | ||
14 | unsigned __int32 k2[32]; | ||
15 | unsigned __int32 k3[32]; | ||
16 | unsigned __int32 k1d[32]; | ||
17 | unsigned __int32 k2d[32]; | ||
18 | unsigned __int32 k3d[32]; | ||
19 | } TDES_KEY; | ||
20 | |||
21 | void TripleDesEncrypt (byte *inBlock, byte *outBlock, TDES_KEY *key, int encrypt); | ||
22 | void TripleDesSetKey (const byte *userKey, unsigned int length, TDES_KEY *ks); | ||
23 | |||
24 | #ifdef __cplusplus | ||
25 | } | ||
26 | #endif | ||
27 | |||
28 | #endif // HEADER_Crypto_DES | ||
diff --git a/src/Crypto/Sha1.c b/src/Crypto/Sha1.c deleted file mode 100644 index d2e451c6..00000000 --- a/src/Crypto/Sha1.c +++ /dev/null | |||
@@ -1,282 +0,0 @@ | |||
1 | /* Deprecated/legacy */ | ||
2 | |||
3 | /* | ||
4 | --------------------------------------------------------------------------- | ||
5 | Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. | ||
6 | |||
7 | LICENSE TERMS | ||
8 | |||
9 | The free distribution and use of this software is allowed (with or without | ||
10 | changes) provided that: | ||
11 | |||
12 | 1. source code distributions include the above copyright notice, this | ||
13 | list of conditions and the following disclaimer; | ||
14 | |||
15 | 2. binary distributions include the above copyright notice, this list | ||
16 | of conditions and the following disclaimer in their documentation; | ||
17 | |||
18 | 3. the name of the copyright holder is not used to endorse products | ||
19 | built using this software without specific written permission. | ||
20 | |||
21 | DISCLAIMER | ||
22 | |||
23 | This software is provided 'as is' with no explicit or implied warranties | ||
24 | in respect of its properties, including, but not limited to, correctness | ||
25 | and/or fitness for purpose. | ||
26 | --------------------------------------------------------------------------- | ||
27 | Issue Date: 18/06/2004 | ||
28 | |||
29 | This is a byte oriented version of SHA1 that operates on arrays of bytes | ||
30 | stored in memory. | ||
31 | */ | ||
32 | |||
33 | /* Adapted for TrueCrypt */ | ||
34 | |||
35 | #include <string.h> /* for memcpy() etc. */ | ||
36 | #include <stdlib.h> /* for _lrotl with VC++ */ | ||
37 | |||
38 | #include "Sha1.h" | ||
39 | |||
40 | #if defined(__cplusplus) | ||
41 | extern "C" | ||
42 | { | ||
43 | #endif | ||
44 | |||
45 | /* | ||
46 | To obtain the highest speed on processors with 32-bit words, this code | ||
47 | needs to determine the order in which bytes are packed into such words. | ||
48 | The following block of code is an attempt to capture the most obvious | ||
49 | ways in which various environemnts specify their endian definitions. | ||
50 | It may well fail, in which case the definitions will need to be set by | ||
51 | editing at the points marked **** EDIT HERE IF NECESSARY **** below. | ||
52 | */ | ||
53 | |||
54 | /* PLATFORM SPECIFIC INCLUDES */ | ||
55 | |||
56 | /* Original byte order detection removed */ | ||
57 | #include "../Common/Endian.h" | ||
58 | |||
59 | #define BRG_LITTLE_ENDIAN 1234 /* byte 0 is least significant (i386) */ | ||
60 | #define BRG_BIG_ENDIAN 4321 /* byte 0 is most significant (mc68k) */ | ||
61 | |||
62 | #if BYTE_ORDER == LITTLE_ENDIAN | ||
63 | # define PLATFORM_BYTE_ORDER BRG_LITTLE_ENDIAN | ||
64 | #endif | ||
65 | |||
66 | #if BYTE_ORDER == BIG_ENDIAN | ||
67 | # define PLATFORM_BYTE_ORDER BRG_BIG_ENDIAN | ||
68 | #endif | ||
69 | |||
70 | #ifdef _MSC_VER | ||
71 | #pragma intrinsic(memcpy) | ||
72 | #endif | ||
73 | |||
74 | #if 1 && defined(_MSC_VER) && !defined(_DEBUG) | ||
75 | #define rotl32 _rotl | ||
76 | #define rotr32 _rotr | ||
77 | #else | ||
78 | #define rotl32(x,n) (((x) << n) | ((x) >> (32 - n))) | ||
79 | #define rotr32(x,n) (((x) >> n) | ((x) << (32 - n))) | ||
80 | #endif | ||
81 | |||
82 | #if !defined(bswap_32) | ||
83 | #define bswap_32(x) ((rotr32((x), 24) & 0x00ff00ff) | (rotr32((x), 8) & 0xff00ff00)) | ||
84 | #endif | ||
85 | |||
86 | #if (PLATFORM_BYTE_ORDER == BRG_LITTLE_ENDIAN) | ||
87 | #define SWAP_BYTES | ||
88 | #else | ||
89 | #undef SWAP_BYTES | ||
90 | #endif | ||
91 | |||
92 | #if defined(SWAP_BYTES) | ||
93 | #define bsw_32(p,n) \ | ||
94 | { int _i = (n); while(_i--) ((sha1_32t*)p)[_i] = bswap_32(((sha1_32t*)p)[_i]); } | ||
95 | #else | ||
96 | #define bsw_32(p,n) | ||
97 | #endif | ||
98 | |||
99 | #define SHA1_MASK (SHA1_BLOCK_SIZE - 1) | ||
100 | |||
101 | #if 0 | ||
102 | |||
103 | #define ch(x,y,z) (((x) & (y)) ^ (~(x) & (z))) | ||
104 | #define parity(x,y,z) ((x) ^ (y) ^ (z)) | ||
105 | #define maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) | ||
106 | |||
107 | #else /* Discovered by Rich Schroeppel and Colin Plumb */ | ||
108 | |||
109 | #define ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) | ||
110 | #define parity(x,y,z) ((x) ^ (y) ^ (z)) | ||
111 | #define maj(x,y,z) (((x) & (y)) | ((z) & ((x) ^ (y)))) | ||
112 | |||
113 | #endif | ||
114 | |||
115 | /* Compile 64 bytes of hash data into SHA1 context. Note */ | ||
116 | /* that this routine assumes that the byte order in the */ | ||
117 | /* ctx->wbuf[] at this point is in such an order that low */ | ||
118 | /* address bytes in the ORIGINAL byte stream will go in */ | ||
119 | /* this buffer to the high end of 32-bit words on BOTH big */ | ||
120 | /* and little endian systems */ | ||
121 | |||
122 | #ifdef ARRAY | ||
123 | #define q(v,n) v[n] | ||
124 | #else | ||
125 | #define q(v,n) v##n | ||
126 | #endif | ||
127 | |||
128 | #define one_cycle(v,a,b,c,d,e,f,k,h) \ | ||
129 | q(v,e) += rotr32(q(v,a),27) + \ | ||
130 | f(q(v,b),q(v,c),q(v,d)) + k + h; \ | ||
131 | q(v,b) = rotr32(q(v,b), 2) | ||
132 | |||
133 | #define five_cycle(v,f,k,i) \ | ||
134 | one_cycle(v, 0,1,2,3,4, f,k,hf(i )); \ | ||
135 | one_cycle(v, 4,0,1,2,3, f,k,hf(i+1)); \ | ||
136 | one_cycle(v, 3,4,0,1,2, f,k,hf(i+2)); \ | ||
137 | one_cycle(v, 2,3,4,0,1, f,k,hf(i+3)); \ | ||
138 | one_cycle(v, 1,2,3,4,0, f,k,hf(i+4)) | ||
139 | |||
140 | void sha1_compile(sha1_ctx ctx[1]) | ||
141 | { sha1_32t *w = ctx->wbuf; | ||
142 | |||
143 | #ifdef ARRAY | ||
144 | sha1_32t v[5]; | ||
145 | memcpy(v, ctx->hash, 5 * sizeof(sha1_32t)); | ||
146 | #else | ||
147 | sha1_32t v0, v1, v2, v3, v4; | ||
148 | v0 = ctx->hash[0]; v1 = ctx->hash[1]; | ||
149 | v2 = ctx->hash[2]; v3 = ctx->hash[3]; | ||
150 | v4 = ctx->hash[4]; | ||
151 | #endif | ||
152 | |||
153 | #define hf(i) w[i] | ||
154 | |||
155 | five_cycle(v, ch, 0x5a827999, 0); | ||
156 | five_cycle(v, ch, 0x5a827999, 5); | ||
157 | five_cycle(v, ch, 0x5a827999, 10); | ||
158 | one_cycle(v,0,1,2,3,4, ch, 0x5a827999, hf(15)); \ | ||
159 | |||
160 | #undef hf | ||
161 | #define hf(i) (w[(i) & 15] = rotl32( \ | ||
162 | w[((i) + 13) & 15] ^ w[((i) + 8) & 15] \ | ||
163 | ^ w[((i) + 2) & 15] ^ w[(i) & 15], 1)) | ||
164 | |||
165 | one_cycle(v,4,0,1,2,3, ch, 0x5a827999, hf(16)); | ||
166 | one_cycle(v,3,4,0,1,2, ch, 0x5a827999, hf(17)); | ||
167 | one_cycle(v,2,3,4,0,1, ch, 0x5a827999, hf(18)); | ||
168 | one_cycle(v,1,2,3,4,0, ch, 0x5a827999, hf(19)); | ||
169 | |||
170 | five_cycle(v, parity, 0x6ed9eba1, 20); | ||
171 | five_cycle(v, parity, 0x6ed9eba1, 25); | ||
172 | five_cycle(v, parity, 0x6ed9eba1, 30); | ||
173 | five_cycle(v, parity, 0x6ed9eba1, 35); | ||
174 | |||
175 | five_cycle(v, maj, 0x8f1bbcdc, 40); | ||
176 | five_cycle(v, maj, 0x8f1bbcdc, 45); | ||
177 | five_cycle(v, maj, 0x8f1bbcdc, 50); | ||
178 | five_cycle(v, maj, 0x8f1bbcdc, 55); | ||
179 | |||
180 | five_cycle(v, parity, 0xca62c1d6, 60); | ||
181 | five_cycle(v, parity, 0xca62c1d6, 65); | ||
182 | five_cycle(v, parity, 0xca62c1d6, 70); | ||
183 | five_cycle(v, parity, 0xca62c1d6, 75); | ||
184 | |||
185 | #ifdef ARRAY | ||
186 | ctx->hash[0] += v[0]; ctx->hash[1] += v[1]; | ||
187 | ctx->hash[2] += v[2]; ctx->hash[3] += v[3]; | ||
188 | ctx->hash[4] += v[4]; | ||
189 | #else | ||
190 | ctx->hash[0] += v0; ctx->hash[1] += v1; | ||
191 | ctx->hash[2] += v2; ctx->hash[3] += v3; | ||
192 | ctx->hash[4] += v4; | ||
193 | #endif | ||
194 | } | ||
195 | |||
196 | void sha1_begin(sha1_ctx ctx[1]) | ||
197 | { | ||
198 | ctx->count[0] = ctx->count[1] = 0; | ||
199 | ctx->hash[0] = 0x67452301; | ||
200 | ctx->hash[1] = 0xefcdab89; | ||
201 | ctx->hash[2] = 0x98badcfe; | ||
202 | ctx->hash[3] = 0x10325476; | ||
203 | ctx->hash[4] = 0xc3d2e1f0; | ||
204 | } | ||
205 | |||
206 | /* SHA1 hash data in an array of bytes into hash buffer and */ | ||
207 | /* call the hash_compile function as required. */ | ||
208 | |||
209 | void sha1_hash(const unsigned char data[], unsigned __int32 len, sha1_ctx ctx[1]) | ||
210 | { sha1_32t pos = (sha1_32t)(ctx->count[0] & SHA1_MASK), | ||
211 | space = SHA1_BLOCK_SIZE - pos; | ||
212 | const unsigned char *sp = data; | ||
213 | |||
214 | if((ctx->count[0] += len) < len) | ||
215 | ++(ctx->count[1]); | ||
216 | |||
217 | while(len >= space) /* tranfer whole blocks if possible */ | ||
218 | { | ||
219 | memcpy(((unsigned char*)ctx->wbuf) + pos, sp, space); | ||
220 | sp += space; len -= space; space = SHA1_BLOCK_SIZE; pos = 0; | ||
221 | bsw_32(ctx->wbuf, SHA1_BLOCK_SIZE >> 2); | ||
222 | sha1_compile(ctx); | ||
223 | } | ||
224 | |||
225 | memcpy(((unsigned char*)ctx->wbuf) + pos, sp, len); | ||
226 | } | ||
227 | |||
228 | /* SHA1 final padding and digest calculation */ | ||
229 | |||
230 | void sha1_end(unsigned char hval[], sha1_ctx ctx[1]) | ||
231 | { sha1_32t i = (sha1_32t)(ctx->count[0] & SHA1_MASK); | ||
232 | |||
233 | /* put bytes in the buffer in an order in which references to */ | ||
234 | /* 32-bit words will put bytes with lower addresses into the */ | ||
235 | /* top of 32 bit words on BOTH big and little endian machines */ | ||
236 | bsw_32(ctx->wbuf, (i + 3) >> 2); | ||
237 | |||
238 | /* we now need to mask valid bytes and add the padding which is */ | ||
239 | /* a single 1 bit and as many zero bits as necessary. Note that */ | ||
240 | /* we can always add the first padding byte here because the */ | ||
241 | /* buffer always has at least one empty slot */ | ||
242 | ctx->wbuf[i >> 2] &= 0xffffff80 << 8 * (~i & 3); | ||
243 | ctx->wbuf[i >> 2] |= 0x00000080 << 8 * (~i & 3); | ||
244 | |||
245 | /* we need 9 or more empty positions, one for the padding byte */ | ||
246 | /* (above) and eight for the length count. If there is not */ | ||
247 | /* enough space, pad and empty the buffer */ | ||
248 | if(i > SHA1_BLOCK_SIZE - 9) | ||
249 | { | ||
250 | if(i < 60) ctx->wbuf[15] = 0; | ||
251 | sha1_compile(ctx); | ||
252 | i = 0; | ||
253 | } | ||
254 | else /* compute a word index for the empty buffer positions */ | ||
255 | i = (i >> 2) + 1; | ||
256 | |||
257 | while(i < 14) /* and zero pad all but last two positions */ | ||
258 | ctx->wbuf[i++] = 0; | ||
259 | |||
260 | /* the following 32-bit length fields are assembled in the */ | ||
261 | /* wrong byte order on little endian machines but this is */ | ||
262 | /* corrected later since they are only ever used as 32-bit */ | ||
263 | /* word values. */ | ||
264 | ctx->wbuf[14] = (ctx->count[1] << 3) | (ctx->count[0] >> 29); | ||
265 | ctx->wbuf[15] = ctx->count[0] << 3; | ||
266 | sha1_compile(ctx); | ||
267 | |||
268 | /* extract the hash value as bytes in case the hash buffer is */ | ||
269 | /* misaligned for 32-bit words */ | ||
270 | for(i = 0; i < SHA1_DIGEST_SIZE; ++i) | ||
271 | hval[i] = (unsigned char)(ctx->hash[i >> 2] >> (8 * (~i & 3))); | ||
272 | } | ||
273 | |||
274 | void sha1(unsigned char hval[], const unsigned char data[], unsigned __int32 len) | ||
275 | { sha1_ctx cx[1]; | ||
276 | |||
277 | sha1_begin(cx); sha1_hash(data, len, cx); sha1_end(hval, cx); | ||
278 | } | ||
279 | |||
280 | #if defined(__cplusplus) | ||
281 | } | ||
282 | #endif | ||
diff --git a/src/Crypto/Sha1.h b/src/Crypto/Sha1.h deleted file mode 100644 index 130a1a41..00000000 --- a/src/Crypto/Sha1.h +++ /dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | /* | ||
2 | --------------------------------------------------------------------------- | ||
3 | Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. | ||
4 | |||
5 | LICENSE TERMS | ||
6 | |||
7 | The free distribution and use of this software is allowed (with or without | ||
8 | changes) provided that: | ||
9 | |||
10 | 1. source code distributions include the above copyright notice, this | ||
11 | list of conditions and the following disclaimer; | ||
12 | |||
13 | 2. binary distributions include the above copyright notice, this list | ||
14 | of conditions and the following disclaimer in their documentation; | ||
15 | |||
16 | 3. the name of the copyright holder is not used to endorse products | ||
17 | built using this software without specific written permission. | ||
18 | |||
19 | DISCLAIMER | ||
20 | |||
21 | This software is provided 'as is' with no explicit or implied warranties | ||
22 | in respect of its properties, including, but not limited to, correctness | ||
23 | and/or fitness for purpose. | ||
24 | --------------------------------------------------------------------------- | ||
25 | Issue Date: 26/08/2003 | ||
26 | */ | ||
27 | |||
28 | #ifndef _SHA1_H | ||
29 | #define _SHA1_H | ||
30 | |||
31 | #include <limits.h> | ||
32 | #include "Common/Tcdefs.h" | ||
33 | |||
34 | #define SHA1_BLOCK_SIZE 64 | ||
35 | #define SHA1_DIGEST_SIZE 20 | ||
36 | |||
37 | #if defined(__cplusplus) | ||
38 | extern "C" | ||
39 | { | ||
40 | #endif | ||
41 | |||
42 | /* define an unsigned 32-bit type */ | ||
43 | |||
44 | #if defined(_MSC_VER) | ||
45 | typedef unsigned __int32 sha1_32t; | ||
46 | #elif defined(ULONG_MAX) && ULONG_MAX == 0xfffffffful | ||
47 | typedef unsigned __int32 sha1_32t; | ||
48 | #elif defined(UINT_MAX) && UINT_MAX == 0xffffffff | ||
49 | typedef unsigned int sha1_32t; | ||
50 | #else | ||
51 | # error Please define sha1_32t as an unsigned 32 bit type in sha1.h | ||
52 | #endif | ||
53 | |||
54 | /* type to hold the SHA256 context */ | ||
55 | |||
56 | typedef struct | ||
57 | { sha1_32t count[2]; | ||
58 | sha1_32t hash[5]; | ||
59 | sha1_32t wbuf[16]; | ||
60 | } sha1_ctx; | ||
61 | |||
62 | /* Note that these prototypes are the same for both bit and */ | ||
63 | /* byte oriented implementations. However the length fields */ | ||
64 | /* are in bytes or bits as appropriate for the version used */ | ||
65 | /* and bit sequences are input as arrays of bytes in which */ | ||
66 | /* bit sequences run from the most to the least significant */ | ||
67 | /* end of each byte */ | ||
68 | |||
69 | void sha1_compile(sha1_ctx ctx[1]); | ||
70 | |||
71 | void sha1_begin(sha1_ctx ctx[1]); | ||
72 | void sha1_hash(const unsigned char data[], unsigned __int32 len, sha1_ctx ctx[1]); | ||
73 | void sha1_end(unsigned char hval[], sha1_ctx ctx[1]); | ||
74 | void sha1(unsigned char hval[], const unsigned char data[], unsigned __int32 len); | ||
75 | |||
76 | #if defined(__cplusplus) | ||
77 | } | ||
78 | #endif | ||
79 | |||
80 | #endif | ||