diff options
Diffstat (limited to 'src/Crypto/Blowfish.c')
-rw-r--r-- | src/Crypto/Blowfish.c | 382 |
1 files changed, 0 insertions, 382 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 | } | ||