- 89B1C405D92E249341BDC0BDDC5A98D8AE8DD0349E04A165063D938F01DF557A057BE544C51B0EFB6D72D505F1424A1AA3A6D7957E83F229711677240123E2FD
+ 4835EBBC34C00A3A78A2A4EE13C9F553697525A2A21CB137E629D65D8B7E70A7DD1283F395A2C4590024E522C82D1DC027BBCBBB26C27A7D844B4A1FBD6F2941
smg_comms/rsa/tests/tests.c
(409 . 152)(409 . 6)
175 mpi_free(sk.u);
176 }
177
178 void test_oaep_encr_decr( int nruns ) {
179 /* a set of RSA keys previously generated with eucrypt */
180 RSA_public_key pk;
181 pk.n = mpi_alloc(0);
182 pk.e = mpi_alloc(0);
183
184 RSA_secret_key sk;
185 sk.n = mpi_alloc(0);
186 sk.e = mpi_alloc(0);
187 sk.d = mpi_alloc(0);
188 sk.p = mpi_alloc(0);
189 sk.q = mpi_alloc(0);
190 sk.u = mpi_alloc(0);
191
192 mpi_fromstr(sk.n, "0x\
193 CD2C025323BEA46FFF2FA8D7A9D39817EA713421F4AE03FA8120641193892A70BFECF5\
194 83101635A432110D3DDE6339E3CC7ECC0AD91C026FCACE832DD3888A6FCA7BCE56C390\
195 5A5AC8C7BC921DA675E4B62489B254EB34659D547D71165BC998983A81937BD251AEE1\
196 2D985EC387D5376F5DCC5EF7EC530FBD6FD2AA7285EE1AF3335EA73163F0954F30402E\
197 D7B374EE84A97B1849B0674B0DA0A2050BD79B71ABB1559F3A9CFDB8557DED7BC90CF2\
198 09E8A847E9C226140845B7D03842162E7DA5DD16326CB1F71A248D841FE9076A09911F\
199 2F4F5E3EA44EA8DE40332BF00406990BCCF61C322A03C456EF3A98B341E0BDBC1088CE\
200 683E78510E76B72C2BCC1EE9AEDD80FFF18ABFC5923B2F36B581C25114AB2DF9F6C2B1\
201 9481703FD19E313DCD7ACE15FA11B27D25BCE5388C180A7E21167FB87750599E1ED7C7\
202 50F4A844E1DC2270C62D19671CF8F4C25B81E366B09FC850AE642136D204A9160AEECE\
203 575B57378AA439E9DD46DC990288CD54BAA35EEE1C02456CD39458A6F1CBF012DCEDF4\
204 27CCF3F3F53645658FC49C9C9D7F2856DB571D92B967AB5845514E0054DDB49099F5DD\
205 04A6F6F5C5CE642276834B932881AEB648D1F25E9223971F56E249EF40CF7D80F22621\
206 CDD0260E9E7D23746960ADB52CF2987584FB1DE95A69A39E5CB12B76E0F5C1A0529C0C\
207 065D2E35720810F7C7983180B9A9EA0E00C11B79DC3D");
208
209 mpi_fromstr(sk.e, "0x\
210 DD4856B4EE3D099A8604AE392D8EFEC094CDF01546A28BE87CB484F999E8E75CDFCD01\
211 D04D455A6A9254C60BD28C0B03611FC3E751CC27EF768C0B401C4FD2B27C092834A6F2\
212 49A145C4EDC47A3B3D363EC352462C945334D160AF9AA72202862912493AC6190AA3A6\
213 149D4D8B9996BA7927D3D0D2AD00D30FD630CF464E6CAF9CF49355B9A70E05DB7AE915\
214 F9F602772F8D11E5FCDFC7709210F248052615967090CC1F43D410C83724AA5912B2F0\
215 52E6B39449A89A97C79C92DC8CB8DEEFCF248C1E1D2FC5BFE85165ECA31839CAA9CEB3\
216 3A92EBDC0EB3BAC0F810938BB173C7DA21DCBB2220D44CBA0FD40A2C868FC93AC5243E\
217 C137C27B0A76D65634EBB3");
218
219 mpi_fromstr(sk.d, "0x\
220 7C8A6FA1199D99DCA45E9BDF567CA49D02B237340D7E999150BC4883AE29DEC5158521\
221 B338F35DC883792356BDDBB3C8B3030A6DD4C6522599A3254E751F9BA1CB1061C5633C\
222 81BBFACF6FCD64502614102DFED3F3FA284066C342D5E00953B415915331E30812E5FB\
223 CD6680ADCCDEE40B8376A3A225F2E160EA59C7566804526D73BB660A648A3EF9802313\
224 B2F841E8458B2AAACE7AACF31083E8F3F630298138393BC88BBD7D4AA4334949651D25\
225 365B10DBF4A4A08E20A6CC74BFDD37C1C38E2ADC2A283DF06590DF06B46F67F6ACA67F\
226 AC464C795261659A2F9558802D0BBAA05FD1E1AF2CDC70654723DF7EFAEA148B8CDBEB\
227 C89EA2320AB9BBB1BC4311475DF3D91446F02EF192368DFEBAC598CCFD4407DEC58FDC\
228 1A94CCDD6E5FBA9C52164ACEA8AEE633E557BCCEACB7A1AF656C379482D784A120A725\
229 32F9B2B35173D505F21D5AD4CB9511BC836DC923730B70291B70290A216CA3B21CFF79\
230 E895C35F4F7AF80E1BD9ED2773BD26919A76E4298D169160593E0335BE2A2A2D2E8516\
231 948F657E1B1260E18808A9D463C108535FB60B3B28F711C81E5DE24F40214134A53CE5\
232 9A952C8970A1D771EBEFFA2F4359DCF157995B3F1950DE3C6EC41B7FF837148F55F323\
233 372AF3F20CE8B8038E750C23D8F5041FA951327859B0E47483F0A47103EF808C72C251\
234 006FA526245291C8C84C12D2EF63FB2301EA3EEDA42B");
235
236 mpi_fromstr(sk.p, "0x\
237 E236732452039C14EC1D3B8095BDDCFB7625CE27B1EA5394CF4ED09D3CEECAA4FC0BF6\
238 2F7CE975E0C8929CE84B0259D773EA038396479BF15DA065BA70E549B248D77B4B23ED\
239 A267308510DBEE2FD44E35D880EE7CFB81E0646AA8630165BD8988C3A8776D9E704C20\
240 AA25CA0A3C32F27F592D5FD363B04DD57D8C61FFDCDFCCC59E2913DE0EE47769180340\
241 E1EA5A803AA2301A010FF553A380F002601F0853FCACDB82D76FE2FACBCD6E5F294439\
242 0799EA5AE9D7880D4E1D4AE146DC1D4E8495B9DD30E57E883923C5FC26682B7142D35C\
243 D8A0FC561FE725A6CF419B15341F40FE0C31132CBD81DD8E50697BD1EBFFA16B522E16\
244 F5B49A03B707218C7DA60B");
245
246 mpi_fromstr(sk.q, "0x\
247 E830482A3C4F5C3A7E59C10FF8BA760DB1C6D55880B796FFDA4A82E0B60E974E81D04B\
248 2A4AD417823EBFB4E8EFB13782943562B19B6C4A680E3BA0C8E37B5023470F4F1AC1F8\
249 A0B10672EF75CD58BCD45E6B14503B8A6A70AFE79F6201AF56E7364A1C742BE1453FD2\
250 24FDC9D66522EAF4466A084BCB9E46D455A2946E94CBF028770F38D0B741C2CC59308F\
251 71D8C2B4B9C928E0AE8D68DEB48A3E9EFD84A10301EBD55F8221CA32FC567B306B2A8E\
252 116350AFB995859FDF4378C5CFD06901494E8CFA5D8FAC564D6531FA8A2E4761F5EFBA\
253 F78750B6F4662BE9EA4C2FAD67AF73EEB36B41FC15CB678810C19A51DF23555695C4C1\
254 546F3FACA39CAA7BB8DBD7");
255
256 mpi_fromstr(sk.u, "0x\
257 846232322775C1CD7D5569DC59E2F3E61A885AE2E9C4A4F8CB3ACBE8C3A5441E5FE348\
258 A2A8AC9C2998FBF282222BF508AA1ECF66A76AEDD2D9C97028BFD3F6CA0542E38A5312\
259 603C70B95650CE73F80FDD729988FBDB5595A5BF8A007EA34E54994A697906CE56354C\
260 E00DF10EB711DEC274A62494E3D350D88736CF67A477FB600AC9F1D6580727585092BF\
261 5EBC092CC4D6CF75769051033A1197103BE269942F372168A53771746FBA18ED6972D5\
262 0B935A9B1D6B5B3DD50CD89A27FE93C10924E9103FACF7B4C5724A046C3D3B50CC1C78\
263 5F5C8E00DBE1D6561F120F5294C170914BC10F978ED4356EED67A9F3A60D70AFE540FC\
264 5373CBAE3D0A7FD1C87273");
265
266 /* copy the public key components */
267 pk.n = mpi_copy( sk.n );
268 pk.e = mpi_copy( sk.e );
269
270 /* some plain text message */
271 MPI msg = mpi_alloc(0);
272 mpi_fromstr(msg, "0x\
273 5B6A8A0ACF4F4DB3F82EAC2D20255E4DF3E4B7C799603210766F26EF87C8980E737579\
274 EC08E6505A51D19654C26D806BAF1B62F9C032E0B13D02AF99F7313BFCFD68DA46836E\
275 CA529D7360948550F982C6476C054A97FD01635AB44BFBDBE2A90BE06F7984AC8534C3\
276 28097EF92F6E78CAE0CB97");
277
278 /* actual testing */
279 printf("TEST verify oaep_encr_decr on message: \n");
280 mpi_print( stdout, msg, 1);
281 printf("\n");
282
283 int nlimbs_n = mpi_nlimb_hint_from_nbytes( KEY_LENGTH_OCTETS);
284 MPI encr = mpi_alloc( nlimbs_n );
285 MPI decr = mpi_alloc( nlimbs_n );
286 int success;
287
288 adainit();
289 rsa_oaep_encrypt( encr, msg, &pk );
290 rsa_oaep_decrypt( decr, encr, &sk, &success );
291
292 if (success <= 0 ||
293 mpi_cmp(encr, msg) == 0 ||
294 mpi_cmp(msg, decr) != 0)
295 printf("FAILED: success flag is %d\n", success);
296 else
297 printf("PASSED\n");
298
299 /* attempt to decrypt corrupted block */
300 mpi_clear( decr );
301 rsa_oaep_decrypt( decr, pk.n, &sk, &success);
302 if (success > 0)
303 printf("FAILED: attempt to decrypt non-/corrupted oaep block\n");
304 else
305 printf("PASSED: attempt to decrypt non-/corrupted oaep block\n");
306 adafinal();
307
308 /* clean up */
309 mpi_free( sk.n );
310 mpi_free( sk.e );
311 mpi_free( sk.d );
312 mpi_free( sk.p );
313 mpi_free( sk.q );
314 mpi_free( sk.u );
315
316 mpi_free( pk.n );
317 mpi_free( pk.e );
318
319 mpi_free( msg );
320 mpi_free( encr );
321 mpi_free( decr );
322 }
323
324 void test_mpi_buffer() {
325 unsigned int noctets = 10;
326 int nlimbs = mpi_nlimb_hint_from_nbytes( noctets );
(720 . 21)(574 . 18)
328 time_rsa_gen(nruns);
329 break;
330 case 9:
331 test_oaep_encr_decr(nruns);
332 break;
333 case 10:
334 test_mpi_buffer();
335 break;
336 case 11:
337 case 10:
338 test_dirty_float_rng(nruns);
339 break;
340 case 12:
341 case 11:
342 test_ieee_float_rng(nruns);
343 break;
344 case 13:
345 case 12:
346 test_uint32_rng(nruns);
347 break;
348 case 14:
349 case 13:
350 test_uint64_rng(nruns);
351 break;
352 default:
(749 . 12)(600 . 11)
354 writes to keys.asc and check_keys.asc\n");
355 printf("7 for testing rsa exponentiation (fixed data)\n");
356 printf("8 for timing rsa key pair generator\n");
357 printf("9 for oaep encrypt/decrypt\n");
358 printf("10 for testing mpi_set/get_buffer\n");
359 printf("11 for testing smg_rng dirty float\n");
360 printf("12 for testing smg_rng ieee 745/1985 float\n");
361 printf("13 for testing smg_rng uint32 \n");
362 printf("14 for testing smg_rng uint64 \n");
363 printf("9 for testing mpi_set/get_buffer\n");
364 printf("10 for testing smg_rng dirty float\n");
365 printf("11 for testing smg_rng ieee 745/1985 float\n");
366 printf("12 for testing smg_rng uint32 \n");
367 printf("13 for testing smg_rng uint64 \n");
368 }
369
370 return 0;