1 #define BOOST_TEST_MODULE STGCrypto
3 #include "stg/blowfish.h"
5 #pragma GCC diagnostic push
6 #pragma GCC diagnostic ignored "-Wold-style-cast"
7 #pragma GCC diagnostic ignored "-Wunused-parameter"
8 #pragma GCC diagnostic ignored "-Wsign-compare"
9 #pragma GCC diagnostic ignored "-Wparentheses"
10 #include <boost/test/unit_test.hpp>
11 #pragma GCC diagnostic pop
20 bool equalCtx(const BLOWFISH_CTX& a, const BLOWFISH_CTX& b)
22 for (size_t i = 0; i < 18; ++i)
25 printf("Failed for P at %ld: 0x%x != 0x%x\n", i, a.P[i], b.P[i]);
28 for (size_t i = 0; i < 4; ++i)
29 for (size_t j = 0; j < 256; ++j)
30 if (a.S[i][j] != b.S[i][j])
32 printf("Failed for S at %ld, %ld: 0x%x != 0x%x\n", i, j, a.S[i][j], b.S[i][j]);
38 bool equalString(const char* a, const char* b, size_t length)
40 for (size_t i = 0; i < length; ++i)
43 //printf("Failed at pos %d: %hhu != %hhu\n", i, a[i], b[i]);
49 const BLOWFISH_CTX testCtx =
52 0x84ddf841, 0xbbdc17f,
53 0x3dd821af, 0x66fdf0c,
54 0x426a2fff, 0x30223f2c,
55 0x8325f1a3, 0xf5c99ab9,
56 0x417ce6da, 0xba4c9637,
57 0xd226c646, 0xe50ea3b5,
58 0x3860f82c, 0x1565ecc8,
59 0xf4461621, 0x68058dd4,
60 0x217da3bb, 0xd6cd3ddc,
64 0x72f9dc5c, 0xf701a2e4, 0xf30e3ec3, 0x2f1c9683,
65 0x985b9801, 0xfb28c4f5, 0xf6f5c777, 0xfa7b5b24,
66 0xd761c693, 0xf53e1484, 0x8622da13, 0xb240d1b4,
67 0xd1bc58f8, 0x43f462ef, 0x6a4e97a3, 0xb0619beb,
68 0xff07b462, 0xd390c3b9, 0xe91f2840, 0x869566ae,
69 0xfebd249c, 0x567002c1, 0x342e0e8e, 0x31b01687,
70 0xd7e3a5bd, 0xa933de2e, 0xb4ef05f2, 0x33e4919f,
71 0x724e8b3e, 0xc6b9d44f, 0x849b1674, 0x90758946,
72 0x295986fa, 0xa2e11855, 0xf2099a4e, 0x42ed46f9,
73 0x597cbb6d, 0xc3691952, 0x408f873e, 0xdee0d6cf,
74 0x6570a45d, 0xc6a24b81, 0x2d3a1c24, 0x4a2edda4,
75 0x443dcfa5, 0x5971a9a5, 0xfd2258c0, 0x72c36b37,
76 0xf8696ce, 0xf2e84f7, 0xc543bf6d, 0x352818c5,
77 0xdc01f156, 0xc67bfce5, 0xdadf0cbf, 0x6194b6a9,
78 0xdb3cc22f, 0xc7873bcb, 0x9b9e622c, 0xa7869810,
79 0xcb1ba91, 0x137b1bf5, 0x3e71252b, 0x5229f33e,
80 0x30ded88f, 0x5763ef1f, 0xee7f01b8, 0xdac73dee,
81 0x2f4d1efb, 0x5f518b97, 0xe7c7d61e, 0x9d5ca3f3,
82 0xa196c020, 0x74634a7b, 0xdd1d0042, 0x454268aa,
83 0x5c610ac8, 0x277e8d2c, 0x4a8b4ee8, 0xf959f5a8,
84 0xc0c63a7e, 0xea9f2ed7, 0xaab4a699, 0x6f872358,
85 0x3927189a, 0x23ae56ac, 0xcfa5b09c, 0x9751e84,
86 0x7ec68c4b, 0x99f9502b, 0x886e764, 0x957c89a4,
87 0x48c5ddb0, 0x9f4d5b7e, 0xa84d5c52, 0xf2ae7bde,
88 0x75e6ddaf, 0xc2b45798, 0x5f846059, 0x5bf85e2a,
89 0x5f6c4382, 0xb621465a, 0x5bf2977c, 0x2c1eb17a,
90 0xbf3e5b18, 0x5f0bdcb7, 0xd6195c47, 0x2c61ec83,
91 0x2315c2da, 0x95195c86, 0x4c4f9855, 0xc5e3787d,
92 0xe5014918, 0x714dd230, 0xd2abd926, 0x9229a99e,
93 0x8306695a, 0x66f7bb54, 0x544affdc, 0x84aa830c,
94 0xad8c8db6, 0x48b29b2, 0xcf33d204, 0xc78ac51d,
95 0xacb18e60, 0x49b516ac, 0x614e2887, 0xe39e1a7c,
96 0xdb1f9652, 0x8c8378a3, 0x8cbe2070, 0x773fe7f,
97 0x899e1922, 0x12dd7b8b, 0xccf8198d, 0xcc48faff,
98 0x30ca9cab, 0x9ebd7129, 0xf254b601, 0x8ac97b38,
99 0x504804d1, 0x3568fbbe, 0x9a40bc99, 0x9c23761b,
100 0x28e26904, 0xe396e583, 0x2f2c4053, 0xa45caf19,
101 0xb7996794, 0x4c825669, 0x3f07f001, 0xf24a084b,
102 0x884888fd, 0xa7fc71f4, 0x21abeff4, 0x719ecba6,
103 0x90104162, 0x50c2b5f1, 0x86135070, 0xc9523fc,
104 0x9c219eca, 0xc12ef7f0, 0x6b3f6b8c, 0x288ee9ef,
105 0xe722f758, 0x229c0bac, 0x3d934d09, 0x4a5cf131,
106 0x14189fc9, 0x10c8aa2e, 0x74e9fe96, 0xcfc110d4,
107 0x35202bfb, 0x90bc66f1, 0x5d4c6616, 0x498927ea,
108 0x581934cc, 0x43e712a, 0x5f095b3c, 0xea0e1406,
109 0xa4921c29, 0xe8a306f0, 0xfec369ef, 0x992921c1,
110 0xcdc5abb6, 0x3ebd83fa, 0x8a7f16e9, 0xfaf73bb3,
111 0x3e8181, 0x34fc47c9, 0xdb92d725, 0x8b40795,
112 0x14273fa0, 0xd704e4f8, 0xd3435939, 0x3450c0a8,
113 0xce721627, 0x10d4a466, 0x7bc1a724, 0x5efc63b,
114 0x153ae5ef, 0xa0aa6945, 0xe5a3b8c9, 0xf0bec5ba,
115 0xde02619e, 0xd155e989, 0xf5e3a551, 0x951d9d74,
116 0x41544875, 0x6aa455e8, 0xda28a584, 0x72d17a11,
117 0x417c066c, 0xe6f82546, 0xbd258cd0, 0x8a3979b4,
118 0xe896e0d9, 0x76871921, 0x709842f1, 0x5dd3756b,
119 0x2ebe8dfb, 0x81ab8b0d, 0x4c9d635, 0x3fd75cf2,
120 0x37876ef8, 0x1c5a806f, 0x96de1b30, 0x2a8e971a,
121 0x89ac843a, 0x96c23371, 0x95ee2343, 0xffb1614f,
122 0x1116003c, 0x25b45917, 0xad0783c2, 0x4662ce95,
123 0xfc751ade, 0xa13e75ae, 0xc75010c3, 0x9170a859,
124 0x86ca62d6, 0x3acb094f, 0x87349773, 0x2765ba9b,
125 0xaaebd756, 0x7b3d6693, 0x92193a80, 0x765f4eb8,
126 0x42f88c21, 0x27ff9f9b, 0x9db88664, 0xe302e6d9,
127 0x2e8fb36e, 0xfc58b9bc, 0x3a649297, 0x76876ce1
130 0x8e3ea6e4, 0x1dd37803, 0xffd051c0, 0xec395f57,
131 0x2eae16f7, 0x821505b4, 0x7ab81f78, 0xf2c88c63,
132 0xa7655b7c, 0xc436644, 0x18e67d7c, 0xa5c8e283,
133 0x6e44a66e, 0xe7547024, 0x280ce7d0, 0x8ec06da2,
134 0x93683af4, 0x5e39165c, 0x77721743, 0x7b9d837e,
135 0x32fed2ef, 0x9726079b, 0x98a579a, 0xc51b8dc5,
136 0xedd45d61, 0xbf70e897, 0x5c8187f8, 0x83909156,
137 0x469c6dc2, 0xf6fb34f5, 0xf14e0646, 0x5e988165,
138 0x3dea4f92, 0x51b2d53c, 0xb543c4e, 0xae450075,
139 0xf9aaffee, 0x4bee49e7, 0x60ffe4f6, 0x395318e3,
140 0x8acb2b46, 0x6df56797, 0x52c9d67, 0x1ffd024a,
141 0x2499d763, 0x951c8244, 0x560ceb0, 0x5d0490a2,
142 0x7208da46, 0xfe40f9d7, 0xd2b96165, 0x696f3072,
143 0x2ba20225, 0x8758c6b4, 0x71f59b60, 0xd84d9bd3,
144 0x8bc05ab, 0xa09fa33, 0xd14769cf, 0x238c630a,
145 0x5635a041, 0x9af1f0bc, 0xa347515, 0xa90ac427,
146 0xdbcbc880, 0x9434490c, 0xcb041e0f, 0x4101f58,
147 0xcb057a30, 0x721e4a62, 0x8d59b73, 0x76d1c883,
148 0x724d675, 0x57833e73, 0xf65e3cc7, 0x4025c165,
149 0x61caa9fa, 0xecf3ffad, 0xc9ccba59, 0xbf1e78c0,
150 0xe7c9f808, 0x5f3ae0ad, 0xe338467, 0x5baf328,
151 0x77ea9442, 0x232d063c, 0x44c1f91f, 0xcfaaa06,
152 0xcd95c059, 0xf92f3f43, 0xd105984a, 0x4ea4eac2,
153 0xdb17fb06, 0xed567697, 0x896b421d, 0x40c3b884,
154 0xf3258ace, 0xbdb93689, 0xb75abba5, 0xc69f182c,
155 0x5798ae31, 0xff3ba2e7, 0x1ef383b4, 0xc689850c,
156 0xa0e850e, 0x7478b55d, 0xf0cd99e7, 0x78128b44,
157 0x99139a31, 0x191a4f69, 0x4dcb9de1, 0x80d9512c,
158 0x6dd3001a, 0xcb6f465e, 0xaa760561, 0x19cc07b3,
159 0x383c9dc4, 0x620f19d8, 0xbc621d05, 0x888061f0,
160 0x549fb42, 0xd21c5ac2, 0x4e37b133, 0xda38e932,
161 0x66ac40ae, 0x855de0db, 0x29c32890, 0xfc79f537,
162 0xea0bc017, 0xb30fd396, 0x9f6e65d0, 0x1fbd8e56,
163 0xa6a79b7b, 0x63871bcf, 0x977361fe, 0x572fc22e,
164 0xcac4d530, 0xee9631a1, 0xd66ca305, 0xd8648a0b,
165 0xa0fa4f44, 0x1b49d414, 0xb9b89101, 0xbb3dc53b,
166 0x9267697d, 0x998ee205, 0xca1a4a0b, 0x16e0c5d3,
167 0xb099860c, 0x3ec1b23b, 0x5d11b6a5, 0x78daf576,
168 0xd58d0926, 0x7e77c453, 0x42a2daf5, 0x6465314c,
169 0xa25d7243, 0x33eb1745, 0x9d662159, 0x61e86fcb,
170 0xedca8ac0, 0xc4afdc42, 0x866e5492, 0x9e72fe28,
171 0x9e5b7096, 0xb3121ab3, 0x9eafbc0d, 0xb03b48,
172 0x3a29c9d, 0x517d9ea7, 0xd12dd262, 0x8965c881,
173 0x3f1575bf, 0x811afeb2, 0xb8699338, 0xa49b7870,
174 0x8b72b9aa, 0xa56dbc23, 0xbdc66113, 0xc80baa85,
175 0x2f6e2fe2, 0xe2f32eaa, 0x4942b340, 0x3782424d,
176 0xc7f3fd93, 0x29c6dbac, 0x181c1bc1, 0x7db26d5e,
177 0x49ecc6f6, 0x7f600a7f, 0xf73b236a, 0x264d7fd1,
178 0x68bac57f, 0xd276c9e, 0x1784d004, 0xb98b5fc7,
179 0xd03f81ca, 0xd44d46a1, 0xcfbea6d1, 0x5c06d9d0,
180 0xbec1bad1, 0xa3bacc94, 0xaacc518c, 0xf8e20ef9,
181 0x8749c85a, 0xe4f865cd, 0x819fdb8a, 0x3c9924f6,
182 0xcb96ac1, 0x3a2bc069, 0x34b28508, 0xdb02aaf2,
183 0x231dccd0, 0xe088dc6a, 0x4d54c84, 0x9096e29f,
184 0x92db735a, 0x44ebca10, 0x8bbe55f2, 0x17287085,
185 0xf782f3b5, 0xc98a9a13, 0x117c0991, 0x69d34986,
186 0xa53303c9, 0x786c1b84, 0x5c174525, 0x4887510b,
187 0xaaf68a8e, 0xff4cba8f, 0xb6b66cc7, 0x1d5de8ea,
188 0xb98783a8, 0x82525dd6, 0x41200306, 0xaf354785,
189 0xb3479dc5, 0x508c2a19, 0x61a3104e, 0x5688a9f2,
190 0xca4bee32, 0x45df7f55, 0x2d2caedd, 0xdfdffc59,
191 0x911454c1, 0xd9dd2d80, 0x4e328041, 0x582ebac0,
192 0xbda7aab2, 0x10c52f26, 0x472690d0, 0x258304cf,
193 0x54e2e210, 0xd4482bf8, 0x22086561, 0x98407334
196 0x900aa5b7, 0x4e649e1f, 0xc9d635c9, 0x69ffda97,
197 0xdce34ccd, 0xf08ff29b, 0xee9360d3, 0xd9c59300,
198 0x7190589d, 0x69d75cc1, 0x9e3c3dc1, 0x45541e71,
199 0x6f1bccc2, 0x46f39b64, 0xc2622672, 0xfacf3cca,
200 0x867a7957, 0xd14995f, 0xfaa6011d, 0xaeaa8c37,
201 0x3d911958, 0x5f672f3a, 0x80ffb57, 0x7c27f22d,
202 0x295fd1f, 0x55f3a836, 0x55476bd5, 0x1d717b6b,
203 0x99b01c2, 0xf7a4359a, 0xfbf0d88f, 0x90f0a4fd,
204 0xdd1bed5d, 0x395e2267, 0x84473b44, 0x216d1700,
205 0xd91466b6, 0xf6723abc, 0xb58917f7, 0xe4055634,
206 0x5e5c94a9, 0x371a7adc, 0xa9444660, 0x9cd864c7,
207 0x942160f8, 0xfa57e367, 0x3ac900aa, 0xfed09d6c,
208 0xab1e8ce6, 0x1c3440b2, 0x2921f7ef, 0xcbc8aad9,
209 0xaee21a52, 0xb65bac8c, 0x4e24db59, 0xa0afe727,
210 0xd6a6a2ce, 0xcda6dc7c, 0xde7b8be, 0xac98135d,
211 0x61ebab33, 0xd6c91e9a, 0x42afb446, 0x5ffdebdd,
212 0x22d4df79, 0xd19e8fe7, 0xbc6b9029, 0x597ff071,
213 0xa4f6f069, 0xa41ed335, 0xa933f4c8, 0x3a4b5456,
214 0xca3df8d6, 0x91915bbd, 0x7c656515, 0x6ae7e70d,
215 0x517118c, 0x2a9565e0, 0x3046470a, 0x4d0b8c6,
216 0x788182c, 0x3bf3c684, 0x1e7a37f5, 0x45507790,
217 0xb9ab569e, 0x1d3927fe, 0x2aac516d, 0x8eb519e0,
218 0xc7563e93, 0x8572cdd1, 0xcfe62ded, 0x78eeb7d6,
219 0x152032bb, 0x5f480f75, 0xa1d06607, 0x51da64b0,
220 0xbc666eb1, 0x34ea7eec, 0x6ccff8b1, 0xd952ba,
221 0x32d16b6, 0xcbfe265e, 0x9daab452, 0xb12f4349,
222 0xceac2beb, 0x4b9787f9, 0x85719171, 0xf0b9c027,
223 0x7feeaa15, 0x990aebcc, 0x767bf1a9, 0xcd56802d,
224 0xe718ab1e, 0x661ef622, 0x3e217d8f, 0x8604b297,
225 0x712d7706, 0xff2a8240, 0xe149f2cd, 0x49c36be2,
226 0x3ac40571, 0xa041a748, 0xaa1580cb, 0x7a9a3e62,
227 0x9def968d, 0x908f3347, 0x40dddf27, 0xfd078597,
228 0x30b9d025, 0xd40d138, 0xde35af82, 0x5718e93,
229 0x529cd4ac, 0x41632ca0, 0x169c0ff3, 0xbac5b27a,
230 0x771b0fa7, 0xdcdf8bd, 0x4faf140e, 0x5aec8617,
231 0x24597031, 0x6407c4a6, 0x70fc5d31, 0x9085ff31,
232 0x8b1397d8, 0x99633b58, 0x91d5b56f, 0xfb451a1a,
233 0xe379e1fc, 0xe6ba2f3f, 0x462cb5c1, 0x1dd06ff4,
234 0x2cf546ba, 0x70800782, 0xdc27b1eb, 0x7965ad5d,
235 0x39ffac7a, 0x862ffce9, 0x569e938e, 0xd42c7cc3,
236 0x614f729b, 0x842ba8d5, 0xc4c56289, 0x77df9d86,
237 0xf51eb421, 0xec140c11, 0x2b891d79, 0x58b98151,
238 0x49955e, 0x6d2ae4cb, 0xdb9bd16f, 0x816ed489,
239 0x5187b66a, 0xe2428c32, 0x340ca67c, 0x6002c78f,
240 0xe7479dfd, 0xcc924e44, 0xc73ec342, 0xf17cfd8d,
241 0x8942a89b, 0x75d34569, 0xac22e545, 0x8375e876,
242 0x8395884a, 0x586698a6, 0x3f3d8f12, 0xdc5943d3,
243 0x66d1996b, 0xd06a5896, 0x6a8afde7, 0xb4d9accb,
244 0x17289e6a, 0xff9b64ef, 0x47c3dab, 0xfa2e58,
245 0x26790980, 0x5163e6f6, 0x65e17492, 0x62e55e79,
246 0x8af1b5a0, 0x2c72e6ba, 0x47da4a0a, 0x8a20bab4,
247 0xf3bcbd52, 0x16d2a483, 0xe5877bcf, 0x3cade4ba,
248 0xf65721a2, 0xb5815461, 0xb3fb53b5, 0xf74508db,
249 0x5c5c1af, 0x3b53868, 0xd9c6825d, 0x4a55bb36,
250 0x785ce186, 0xd5732f60, 0xd94fadb0, 0x1676d0cf,
251 0x1090d57f, 0x7bd7a227, 0xac20c78c, 0x2c68e495,
252 0xcd6478d2, 0xc7f4641c, 0x5ed5d389, 0x2cdc09ca,
253 0xff6d94d2, 0x47d4921c, 0xc3da6fc4, 0x6231f4c6,
254 0x28643ecd, 0x9367f303, 0x2319a3a2, 0x2f86fd8e,
255 0x7f13a567, 0x785e871a, 0xf88564cf, 0x27203f51,
256 0x7f7fe69a, 0xf0bbc1f4, 0x6ac32b0, 0xfa87113a,
257 0x1533dab5, 0x9e168c28, 0x621b244d, 0xc26cdca8,
258 0xe2b12ff1, 0xb1fb41d, 0x74abc0bf, 0x6faf66ed,
259 0x7f96eef7, 0x8dd96699, 0xe0afd88c, 0x5666ae1e
262 0x429f8c4d, 0x7a6f751a, 0xe1f9f104, 0x8f3352a2,
263 0xee11c98f, 0xd3e00903, 0x834b9614, 0x1ca1cd5f,
264 0xc5da95e5, 0x48aa87f9, 0xf3e28f3a, 0xb3d2f1cd,
265 0x11a99c75, 0x6fc626d4, 0x75c5dbf4, 0x9a055ab0,
266 0x878bd7d0, 0x797cb4fe, 0xb56af6f2, 0xd8dad771,
267 0xd79d651f, 0xecc885c2, 0xe36ba61b, 0x3af46b8b,
268 0xd4c4dec7, 0x1ef69803, 0x24c094f2, 0x4796f5ca,
269 0xd0b4f1a4, 0x35b71a50, 0xc93bda59, 0x88744ee4,
270 0xe435da7e, 0xc2add479, 0xf89eba5b, 0xeb7b3be7,
271 0x25abda16, 0x31bc2a9, 0xd46c3697, 0xbdab88a5,
272 0xaf765372, 0x776715c1, 0x91f39946, 0x5a46fca5,
273 0xb7345689, 0xe5ccffc6, 0x83094686, 0xd29b145,
274 0x947c5b14, 0xee6a48b9, 0xf80bcf7e, 0x80364978,
275 0x28785457, 0x7f01f829, 0x2480cb12, 0x1c4e853d,
276 0x9c5be553, 0xbc234906, 0xf48c6576, 0x20d7163e,
277 0xd13fb6aa, 0x7911e4f2, 0x74a4c545, 0xcd37db61,
278 0x923daabd, 0x3671e21f, 0x474b7b1, 0xd6c142a8,
279 0xfd74fe19, 0x967d3c94, 0x76507cd3, 0x1860dcdf,
280 0x40511fa8, 0x19feec2b, 0xa624cb9, 0x3125d93b,
281 0xc4bed3ba, 0xaa215b42, 0xa44f7c85, 0x63065ae5,
282 0xde95bfe, 0x6b6e92e8, 0xf3e516d1, 0x8bc680c8,
283 0x5fdc0cad, 0x6e7281d4, 0x1a4a5a56, 0x5edb95a3,
284 0xb91324c1, 0xbbfbce4c, 0x9e90028c, 0x4825c43d,
285 0xe5f599a4, 0xcacc8db0, 0xf1fd746b, 0x2d7baad9,
286 0xcc3148c4, 0xffefb22f, 0x9ec43aee, 0x7556ebfc,
287 0x7ce98693, 0x19eb04dd, 0xc5c3d0e2, 0x5d0c1bea,
288 0x801fe923, 0xcb47549d, 0xada4ca94, 0x953a3ff6,
289 0x92d8bc7e, 0x1a8b21fa, 0x7e7d47ca, 0x345de887,
290 0x668fc1d5, 0xb191b107, 0x29f30bbd, 0x669cdc3a,
291 0x907fad0c, 0xa8432d5d, 0x8125844d, 0x6f8ee014,
292 0x96fe6488, 0x6b812b55, 0x96e27fb5, 0xb68e0b09,
293 0x6d28e784, 0x370fff6c, 0x65c77431, 0xa6ba0fe6,
294 0x85ede90f, 0x6ebc916e, 0xd2927076, 0x8f7f7b17,
295 0x690c30f5, 0x88c8404e, 0x76b88278, 0x27eb857b,
296 0xfd20c71d, 0x53b63cc4, 0x93fb6326, 0xca3a6e63,
297 0x879e4bc7, 0x7e75fa05, 0x2dc60e82, 0xc4b2b95,
298 0xe6e17a43, 0x6e6c53a7, 0xe6baa075, 0x7b50f168,
299 0xf95e02a8, 0x3422dd2d, 0x4eb38261, 0xd17615c8,
300 0x238c1d99, 0x24def9f8, 0x250a45d1, 0xaeb97793,
301 0xd6bf65e6, 0xf4080ae1, 0x90814d9e, 0x2d9d8436,
302 0x2d742949, 0xa9afb64c, 0xdd4d18f8, 0x8855711e,
303 0x856bf7df, 0xbeb28a6b, 0xff5d789b, 0xd1e24c20,
304 0x92581004, 0xf9ee25e5, 0xdd445cff, 0xb5bc99cd,
305 0x2e90fb9d, 0x86e95fa6, 0x3ce3fc89, 0x2ccff4c9,
306 0x42b6541c, 0xf2cdb401, 0x76b6cd96, 0x5cbc0f31,
307 0x5d988c8e, 0x5535eb69, 0x1354397b, 0x5f105b42,
308 0x70359c13, 0x8053d6a9, 0x43ee0e25, 0x7279a17b,
309 0x23b44313, 0x99dbf710, 0x3671f4f1, 0x212fb10a,
310 0xd61b85ef, 0x5370eec8, 0xb03ac259, 0x53068883,
311 0x10325203, 0x2550b3b5, 0x3afa6580, 0x5945266f,
312 0xf8f21594, 0x1f2feef2, 0xcaebbffc, 0xcc55f93a,
313 0x21f277bf, 0x4e1c1b9c, 0xdd74f5a4, 0x34e84677,
314 0xb85d1834, 0xf9fdccaa, 0x5f13cc3, 0x8d1a00d9,
315 0xd3b7f623, 0x2d8886bf, 0x1505627e, 0x476ea29b,
316 0x7758fa96, 0xc59274f8, 0x5d6cd56, 0xf892f3ce,
317 0xc26a482c, 0xe00f252c, 0x38c981c3, 0x223869ac,
318 0xaa8bc73f, 0xe8ca1111, 0xed51fdd6, 0xeb0724d4,
319 0x61b05512, 0x290876c2, 0x50b855d1, 0x20cf2267,
320 0x894a6a06, 0xd87f0ab4, 0x5961c4f5, 0xdd7781a,
321 0x8f898f63, 0xe5bcfae8, 0x2ab999c3, 0x6d25c711,
322 0x11b0621c, 0x7a097422, 0xa7f23f1, 0x9fbfb450,
323 0xd5e5019b, 0xbe3427a9, 0x70967c5c, 0x18f65981,
324 0x2c9bde6b, 0xfe6f03c4, 0xc754ef9a, 0x637d1ff5,
325 0x9749ef7a, 0xae0c1da6, 0x4e05c89c, 0x87e4150a
330 const unsigned char testString[] = { 68, 100, 2, 115, 6, 54, 226, 228 };
332 } // namespace anonymous
334 BOOST_AUTO_TEST_SUITE(Crypto)
336 BOOST_AUTO_TEST_CASE(ContextCreation)
339 InitContext("pr7Hhen", 7, &ctx);
340 BOOST_CHECK(equalCtx(ctx, testCtx));
343 BOOST_AUTO_TEST_CASE(Encryption)
346 InitContext("pr7Hhen", 7, &ctx);
347 uint32_t a = 0x12345678;
348 uint32_t b = 0x87654321;
349 Blowfish_Encrypt(&ctx, &a, &b);
351 BOOST_CHECK_EQUAL(a, 0xd3988cd);
352 BOOST_CHECK_EQUAL(b, 0x7996c6d6);
355 BOOST_AUTO_TEST_CASE(Decryption)
358 InitContext("pr7Hhen", 7, &ctx);
359 uint32_t a = 0xd3988cd;
360 uint32_t b = 0x7996c6d6;
361 Blowfish_Decrypt(&ctx, &a, &b);
363 BOOST_CHECK_EQUAL(a, 0x12345678);
364 BOOST_CHECK_EQUAL(b, 0x87654321);
367 BOOST_AUTO_TEST_CASE(BlockEncryption)
370 InitContext("pr7Hhen", 7, &ctx);
371 uint32_t block[2] = {0x12345678, 0x87654321};
372 EncryptBlock(&block, &block, &ctx);
374 BOOST_CHECK_EQUAL(block[0], 0xd3988cd);
375 BOOST_CHECK_EQUAL(block[1], 0x7996c6d6);
378 BOOST_AUTO_TEST_CASE(BlockDecryption)
381 InitContext("pr7Hhen", 7, &ctx);
382 uint32_t block[2] = {0xd3988cd, 0x7996c6d6};
383 DecryptBlock(&block, &block, &ctx);
385 BOOST_CHECK_EQUAL(block[0], 0x12345678);
386 BOOST_CHECK_EQUAL(block[1], 0x87654321);
389 BOOST_AUTO_TEST_CASE(StringEncryption)
392 InitContext("pr7Hhen", 7, &ctx);
394 EncryptString(res, "testtest", 8, &ctx);
396 BOOST_CHECK(equalString(res, reinterpret_cast<const char*>(testString), 8));
399 BOOST_AUTO_TEST_CASE(LongStringEncryption)
402 InitContext("pr7Hhen", 7, &ctx);
403 const std::string source("abcdefghijklmnopqrstuvwxyz 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ");
404 std::vector<char> longTest(source.length() + 8);
405 EncryptString(longTest.data(), source.c_str(), source.length() + 1, &ctx);
406 DecryptString(longTest.data(), longTest.data(), longTest.size(), &ctx);
408 BOOST_CHECK_EQUAL(source, std::string(longTest.data()));
411 BOOST_AUTO_TEST_CASE(OldStringEncryption)
414 InitContext("123456", 7, &ctx);
415 const unsigned char source[] = {0xe9, 0xfe, 0xcb, 0xc5, 0xad, 0x3e, 0x87, 0x39,
416 0x3d, 0xd5, 0xf4, 0xed, 0xb0, 0x15, 0xe6, 0xcb,
417 0x3d, 0xd5, 0xf4, 0xed, 0xb0, 0x15, 0xe6, 0xcb,
418 0x3d, 0xd5, 0xf4, 0xed, 0xb0, 0x15, 0xe6, 0xcb};
419 std::array<char, 32> res{};
420 DecryptString(res.data(), source, res.size(), &ctx);
422 BOOST_CHECK_EQUAL(std::string(res.data()), "admin");
425 BOOST_AUTO_TEST_CASE(NewStringEncryption)
428 InitContext("123456", 7, &ctx);
429 const unsigned char source[] = {0xe9, 0xfe, 0xcb, 0xc5, 0xad, 0x3e, 0x87, 0x39,
430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
432 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
433 std::array<char, 32> res{};
434 DecryptString(res.data(), source, 32, &ctx);
436 BOOST_CHECK_EQUAL(std::string(res.data()), "admin");
439 BOOST_AUTO_TEST_SUITE_END()