Add test vectors for minimum/maximum RSA key size checks.

Note that there are *two* maximum key size checks in the code, and the
one in rsa.rs subsumes the one in rsa_impl.c.
This commit is contained in:
Brian Smith 2016-06-21 12:35:45 -10:00
parent d5070b3140
commit 6f122c7f89
2 changed files with 31 additions and 0 deletions

View File

@ -80,6 +80,8 @@ static int check_modulus_and_exponent(const BIGNUM *n, const BIGNUM *e,
OPENSSL_PUT_ERROR(RSA, RSA_R_KEY_SIZE_TOO_SMALL);
return 0;
}
/* XXX: There's may be another check for the maximum length in rsa.rs that
* subsumes this; check that when investigating the code coverage. */
if (rsa_bits > 16 * 1024 || rsa_bits > max_bits) {
OPENSSL_PUT_ERROR(RSA, RSA_R_MODULUS_TOO_LARGE);
return 0;

View File

@ -94,6 +94,35 @@ Msg = ""
Sig = 21f1d78d3d3d02eaa30886356f494fd4ce060e12cf4a808c3a4a8011164f948a1b15414f6fe0bafb174468e632b7b843059dcaa2d915028fc79e3252b79060801373a16b6d26e5bc399d66201357f284ac822544176f5d7bbcc402be5335d221deeb2c44ba1cc908e10340056b521a0f965b373cc042dd2b3e3bef68213cd526c78f0a5237a7c1aa74989d86420d0a0cb639362e2f49182e1c4c603e7dc1b494efbc581caebb03fb633720b643e72d524c8403e500f5a7be5caadf5ed0a9653a805df917d0dafc4e589e26373a84970ce6905359ae981bd3d56699132be04dd3ce02bdaa399737ef79c2f3352f4f4ab8ac1f0954111dfdd7fee5655aa408774e
Result = F
# The modulus is 2040 bits, which is too small.
Digest = SHA256
Key = 308201070282010000e9bcb0e5fe68c4ebd4dd299f1434ff2378bd1e5261eda8d7466d41e1485a92118888306dc03a7a448f459556fcc2375cf8ca4f26ad2b4203952b6b60f4f23d834e30f19650753a02e44606f39807d9c1cff27114e76cac6d4ee02e3c68aea27bdf5037ce912212725af0294cf4df5173a61349ddd40f1c21bdd4a876d1b52541e1a784d11e1ca5e1615ba0c8f978534e9de112c379f530a31014425e907c9a881449c90c764f12f9831dda121ea43c7c034f5829ce4fd1445749ee461f72b763b2ab4d0cf838d48140499564985132a69dc537259905cb69dcdc658c593620c26e822ee7414c9adb1132341201689a30efa1ed733a6b5b149c81a87e02ae0b020103
Msg = ""
Sig = 951cea8d14c4fb4ae98746e4c404105f63e880692584155e7f6aa053e9e897ab07ebabf408860c0c725d454b0d206eec7668382dfb2d005f31182b1836ba1f449eb5dcfe026bc500fbe41250070e8f148bb8e4011a5730d1e4f26b228e484fa8c1211234a2d599c55c678cbed083a5dbe7857caad189cb7dd4ec3db5f16f2bef13aa2c517c3ad13511615c6171ea783c742ed87a9d451a73b968de26c2928313ebab7cabfa824988452cbc606c3968c8c7b41de733d9b6f62425512a64f89cd235681abc8498797980a646c51c3ae5dd18fbefbc813637fc6d633bb799d7dbb3c725b2f16b4b68bcdb5a4a859667f5bacb365a358d9266dd2158dbc1bed112
Result = F
# There are a ton of 2048- and 3072- bit tests below.
# The modulus is 4096 bits.
Digest = SHA256
Key = 308202080282020100d3f6c3ad0a0d40b3ff8048991b6a9ef9f3255294f0d894a1c8917f36d9490ced4471f75a407d34659f319cf9f7813e0201e2a469eaf9ffbe77c7ccb0347c4e34b130efc740ebf83d6689b8aee89292f94f189c717d0644cde45c147358b7575c5d650de0b5f4d28a1745da3cef185017c88ddd83235c5576ef5280a042782cceb12aab22f12ae1378f46d46310028f45a157846694537ab604eb6edbda4fb5762354357005baa8d0867942dc363d3016cab6eb2c7eb5bf5e184e8f0e2e82eed23982647b6d04237f22dfbfe1d444b7220325acb6cd96d9192a233246c2fd650f9bf193c3143ae0cd7f333118b255fe79fe333afdf84fca8485f7a5b0f69ca2ed3c95af14c6f9ec5e37625a091c9dbdfb46ddf625536d43d10fc97f4e0cc1c828665075fa9e40fb7178eedcec9134b51c6d6d504b1de02a773206ab2d467040001ceb8e18e4ec61d03de82b5cc2a317bacad1229efe228e2ab751616740ca2951b9620536cac4eb36db4c9b24c2e05c6511ee09c7ff9729c7fa27ae10b26b156f15c9fef683f67107f5fefac7fec4084bd8cc535d9c7a14733715ac37bbb5318604905e6dcc48b6c78be0fcadf6466407f0cc6666d46fa2163799c7fdd8518a4e4643dc83c1cf7de96d905233da230ddab73279d526f3ab36d2f63f17001f8f0f8c53ac8767f9ca4c9c10c9a0286f3c9b5d3fe4c314d542a1f54b6be1ff05efbf020103
Msg = ""
Sig = 1dd98725ea75fd3e262b8b6846be45ced065073ae5c1c98a532467359c948bac4d3ed0876bb46fa450e47f964e5b34f806f8340e7987b83cac22c76eae7ed03f98ee47c18b09e0cdbbda07deb2190c8085871b18ca52ebfa06edd5ce83a4973cbc803879f697313d279f02f36289e382163c6de83327f38452c1018d926ef1b2dd0d3a1bd01ceb06fc7e043eacec0db3786883d5d3a99b6502c24264e96e07731d2efa0b4de4e798553e70523555e5e905148d57a74becc1ca0800927e464cf950376dec0190bfb0224cff204ac0c9f62eb3c1c3ce78563a38cd3d0a20b4cbfdbe48b82c5ef27adb262ba65883bc0b6506f4a0d987f559e73d67133fc009d9062e23866db9928e9b1163681d9012bc6c072002bea9f2512f20fa61d3091a979803036e6deac801772ecec18f153d61d6f93cf01e592cdcbe435bddbc436d462991370de5df2b21a37106f56b60c4ba40965d3b1ecee4d9bfab548b38a1beba4ebfe60af8921d69bedc6e2da548e22e4d7b0dcf1d5c7f83bd4e96835fbb2ed73d6ed411ca042221e3b29a90a46579f76618ad324deff1bc873a1f1e9c727ce4b73498e255ebc8975d5ee3bfb4aa4883a60a33900451e7d51b60d21e68ab4f7e80296627bb405745ac14ae583e1658f3bfaea06385b1527fa4293e0b62beac3439bc8f85a87ead36fe702ab412f78c7e26b0e20ac1dfa1074453f660f7409000fd
Result = P
# The modulus is 8192 bits.
Digest = SHA256
Key = 308204080282040100cd39f39b27a2731e7b2fefa1379c55e2a86e3a6b6d623a37fcbc535bc9e6453752a06349a85e4133e5daa6eb322590f7caed50309194ab78c290248a041434abf1fd5cdba1ae2922a5616fcf63a8bd1a806e89dc19237f360752210c1f3e082aa1463745bc6072e6a6051d9168fab0b54ac11d3fac3888306f06d44f31306c7b916b50cab75c7ac9cc33610ba87a61d8bf08e471174b517da710d4d5afb4cbb2aee8104b2a6bc78c5c5d3101447eadee776cc96ad874ed4a2e1e941ff73daeeb6eaf9c7014741d68e7fc6d96038b63f07dc4b0b4eade9b3d6f4edd7e8f1b64606a90d9ee4e221c0fb35dd8cd688a5c60cb4dafd22648a0310b2d18a6a2cbcc30f6444e29d07f179847d2ee802399e4a6d98f688a39fdc667d3ba01cd9681c51172b0fdfe6234a329d8d66dfd7709c1eaaecfd747de069f8bb750f0659020e1530cf10197fe95a0783d6c8651235e65868b0c868a1f10073da972050c0e2db911290e15e1a55da024679d3ea266ba3fdd16338827cd2dfe76e3c6c00f33dff27e6edbae1d2e19f54e0c9528a27a75e1247e25b15fc38465e5d6c42f83d9b2f5ab69090d62bf99cc829ec05ca7a1fe3fd9f24f3c08c4b4d531c30c1693510ddf1ce8f296dc60d3076f971c838bca793a75579d8368ef4427215a52d02b28d760a4ae0801f20383ee241f20170081d432124b80bf98629b40b25cf99a328fba652fe35bf4cf63a3946522c78ae874cb77c95989eccdc91ef39a9ccc0d86897a04d4105617c4ccd7816002d89f8ba94a936e82f8d15e615beb4993c67d5c02d606a8395e7319163996d042dcb086a7171bd2df268e2bf229f16a6392cba67b10deb571d69c73acbeb3d5310e24685e639c1b4a02f32b661c630199d62e53d319f4d64b50f90eb5d582ac200a2989e4eec5deb1c9d936300a1d59682eb483cf43ca0131664f647cf0768f12cfb0ba0dd92631ae89ed702bb485581fa3588bc344de1dd05201ddac68019750ee3ff58cf8ac40d45735f4894911e465823e8f0bc4bd3d0b0ce8db310657648b9dd327295b5a23f45e154be6222249fb07d31e6c251848c87544dbc22d5fa5d3475c1c16bf4407819d27415e9cc62e7057ae3fed23eacfad77bfb87b7dc48e4bc82c18654d09bd969a688a840871c005074507c93149d2aa46133e8c66ed10320fe4cd6e4d4e01331068e5d011ad9a4c94ea91287ba39a0647f70820bfca29693457a7446217d9f225df9ce6ee54c9674cba0e5a5c09ce27b11ff9e8b1f68c517712c23beb8debccc6695229c3415f58a8ab158e280bd4b54a4bbf279336bf1871b3e635910081311aaf713f21f9eef5f62b9ecddc49efb4e0cd686bfd65420e6f11022cd86d237e7414bf077a9f8f7ab210389cd455c6ae580f1c77fdcd1dafaa1a1e1a3726b6ce13f50e7c2617a152d10ec9cb03fe0d020103
Msg = ""
Sig = 3bf15ae5d08a7eaf53c7e6c0f1a789a197ac9aaea21b6c2a14ea9a6175596c92432b224e9219d68f7d58649c476277d8daf5d2fdc61c80ba6eddc513ea0f91363eb9506621c8b32381ae6d0eda72984b2f450fb1aeb144e6c798d0af5117dd35fc4a27163d258a5b227b9e72b83c4fd72886f616b50d59c0886f6aa291b65b4401dfccb855d697bb7fe9ed7e29cda28df50736d3c2b66cd3a039d2f534b580a00395746962bf8d1af5fd4940975aa6ef17cd11b496ef11c3df9aab7434cf4802aae07976e685941b47df1a7a24d097cb19301cd5362d6d742d0f94f6dce97e54cde999c4dd1e201c867c9fcc46d30295178430c2ed8d0f3699b5cc5a9de3044b7b63430bfce3fd7c333f291a1f31e41c71735df949861d43136356239ac51156cc5d11a92dc3bd2921cd05f785557a24a0148abb9678a93f8082d8624e9289a3294921855a1afae7fc41084b3f03829afa6e4abc9952aa9d07d7495427d169fc47d0739c31d71657d44a40ad17184d3510a4db56b4ab5d277f9814b9568686c0ce6b18ae4d69b0176fb3f5aa6798396c6fd390df61ecbccfbf72fc3fcf34dc737a6a6e22884f677b1645a68f65ccf36c90a23f350947b514f89e1521c329b08d109d032e13f7680a68489c97a7ba6cfe66d37bd3eda7d97adf9d49d1430e07d34279207c98d1a589b7aeda8c45b5bed17a75efed9ca22043d9daba1a024f0816568652baf51ac1c8338036614ac834b0f69c6539eb40396d53f5d209f434ecfc3d56bf8295d247cbdb559725b7eb61fe5a93f6b701a6b86c4a2474dcc1014c0c82041b68c817f12d9ed410f871e227abb3d25b9977c3129f70b4663bec7329930eaff732433e6f5df3506d0f714d6119facac3fee635f1e5641db853307f76723eb459f5969376433a7b3cb688175e5caa5e0472bd3ba059992e314d1cbcc318577222a587b4607de7211a26ef6ed73676eba26bc8f12badca267aaa43b1f582e7679d9bd05c1a67675822fb53e6699dcc0a713508f7d7d9f9a99172b48dbe431f54e6fa15e1fece6b33989de0b425b83a7866570e557ebe958b0e384146f592f62e1f708ee010d4020bd580f88e469723d4a2c55ca4bcd278c3971b9d0beeaf93d674b6bd9ef367e3c5c11f24f4356dfef571c7b1aa65162c2f7d5ba0af81e5394672f24aeb9c66d5e9a53c7d4b1d3c526215932a648d131c37cf0fcb03458f05ea8b81f5eec5ff372717e7fd64766798319eee066f5632e8bd9ee89084fa85015dd4ce1853e56a7146f64b6b3a08c9cd7209eaec59a34612b62a1350332631dcfce94db871d735fb5e66c3de124aac76aadc63eacd2b84d1aaa3e8bee57cd2c046f73bb115b4f8aa6b570a37e22d0dbd07552d9fa44ae0c30d884941e9567ef0a33cad9c5068a98799cc711e87a05752dfa6ab5b14d2c25519472f2f31f9d2
Result = P
# The modulus is 8193 bits, one bit larger than the maximum.
Digest = SHA256
Key = 308204080282040101dd858d9b063d894acec656a9bb8b1920bcea0c963191c393acfd4f6765479331d50ac9490125572bbbfa1d551f9b1b8bfea0bb40ff09e581b35bde4e58a54f0e954a6ff639cbcee04c4498be5442098beef6cd9bafea003d6a582bb648a69a723f182251fd1165fddaea382e36a6868e300ec423d0198b404288cc21dc7dc659ba9e7c210f54684dbbb3fa07844761a3afa6de256596ad5b950924b5c50be17a3a9d54df53307202afbc80395b8e0683da5309b9eebd26344e54a328da2a259894626824b811b568086011983d457ba60628df4ab40d0dcdfd903dfabdb55439b10efe38526de229a8ba4c016c84263d857b9ed6c3c3922263e8a37faf23adf9836735e16958f9d6ac73f0129a4d159be1ab7bf991d72fec0ddffbf78d9161048d3c63781bc2e1f7e75f417b2e157f4954460ae9e8132fbaaedd399085bd4bb73f194ecde81539de336e8a04c51c13fc8433e26f12b58572d7a6bba4106dbaad2b1c253e5746d3006296383c72e4c4e51e0bac019f5b9e8f7018da482cf93485ccf6ac233f1d90041a0f5706424852fa57e0c9e5bf15efc504bf954682ee0e1f939b075cc798afe985c7e37f8d63096391f4b8c178cfbf4936ba3a2d115b0dcc73a49c98078a6d068c6716919fc8e81c9536cc0d028be1bd7b1e23be2745561b38d74904867bf2975d6bc1e976f91073916deaccb3bba69626b9547233fb767100a4cfb306c4cfcba1887b6e843cda76d2ae53773220893cdaaa1ab8efaa71f2fd2a6fb69ad96d6ffd4ab45ab38698b87f6b491c58e0f9cc57b9ec1ce669f074f0735f26e8457534fb90ab4a56cef04c79b2245898e58fc1f8f441a69b0e29ec236d1b886b6b086b231af034e5096da42b2fba959cadc246b3a6d7837f8e7bd50d1f6d4ad39431099de63ac3d94206ee296841319e7e2caa2adfe4143425cecc55958e705149265026e58ebddac2b524187ed422963c9c5a5af4633058cb39972991bf1195e641af30109cdee55b45506cc5716039da39e24621054f3105071a037680210e1ee59c8f8c207d73cd8ae1c86f9a393998a74829f980ecca27a1bdc160a733ad3b98703f1d63f07b41df9315f68e014127214e6cdc53cdedac3f77ccf7a58c7735918e49c682716d6b865ade2f7648d21c1dc5a18d24e19c271f3f743a6f37ca904068db40e6b1dead262b29a1d492bd3fd9c50c90d3c5d51072eac1273ee37d91a99e89bfd035f097fe25f7ac1c319a19271d5c46e4f78367c4cf2b017a18716c6e8794d0d04bf580e6bf853552f3501b60da05969c71ed41dfc530531e653629002ee39d3ce489b7bf634ca1a3c9e896f7a17114f4f237c18b555d73fd7ef8553dc94cfa3eb33b77ca25762ea8a8ab446dd8592f6a5ca82e263fdbf0ab143deff6e4187de56412b0f97d4f12fca9b4954fecddfa2e4a79457d63020103
Msg = ""
Sig = dfc9e4e1c3106605f5b847463dc1809b58494d981d6c067aa9085c9147db821a50bff823e7ffbe20fbc731687101cb3e4abf421f59eec7b5baf8e1a20d31bf114ff0cf02cd0e4bb284c6c74caaaf95f97b0398db80c4f5e70de423bc643eef4a0a96303a6fc0c8d26b2ace4b5dd353f57eea9efe5b444f9cb48a256a9f41201030e1ee226d9b5d66b292de430a1c12be9f30f58d44fc005baab7e5f325711ad8e8a37d79388e0638851fd49b2cf7d977f197f789d2c3dd131a5a0e820c113683f91df9800ed0c68bf1c9f022037805f2e4a1abf02c4154e1420f5dd774a3e824b5bff8d028e21e4fa413c9e35f7293f5aaa4b900dc272c3b407891b536d8a2918128c2eee1f225b145e7a514256792b9d1886013e8c15f2d70258829760794412d8eb32bc749984779b5aec57c22278f89c30d57d97937a1c0536b39e66d00cdc11f2fac0095bad249d2c40504b68f611902c34ff653a782d25509007764b30bc051d4f51e80f806b0a19df377ba5a9d6a85642a5fb87f393b1a1d57f847dbc4cdc2342227d64641c615ed919f2cf05084feaac3f500472e4112d169a0025f4db7ebaf8cd26783518de44d1fb4d15bf128ab63198069a229bd615340b568cd4271bd0999b38d502ee3b2eeca8beb362a330532e8f05f3149101e448f1a670cd350f56217bba47d1c58694b4399dde01bd519b38f4bd5e98599b6a8281346fc23579c151b5f6c193d42156dd4cd819da340c7ed1f74661a75a1272925e317b4999f5c284d872b71942a7055b8fcd59ade776294b7c26d95608b4a94c6142e57e71dda5476f7bbe7751736052a679f176434ce1ec9803a0fb6305162712ddb5e6a25dfd392cba964e4b526bb5ed45933d37649c131cbd40437663008ed3dd0a3130bb2d621d78e01223a493035ffed6d0c9c47ff71fad5e4bda62bab70dc222a5fed7a3e08a708f25958eadf0484d9d5541c35b526ce93dc6abeb6ccc86ab3b342295c112c84072a63074ad87b4fdaa7964e59bb5ba8d0634e13a8714f750e84eb965d46f9709204abf9dcb9a0a39dc82a4e48fe1256069dcac7ace75d0a4c42426d2d0fdc2e82901f4f93b64d923c88a735870bd9e0f59bde0425dd9ea595193e8cfa4ccb331b4c82edb2ec727049a79d25d00e3367c7b9f306cca0208a119b759feb24bf7af5f6c226249d0fb4511f74e1626a50de4251e254b0228fb6aa98abc5320171f9ea9d597ae15046fd4a5325dcdbd49fc54093cf2e02186ca54e97457cfeef373d5c9da7d9e839445429db160af5bd43fde2f3053e0efbda241c750f3d7bb4d12df685a6d060396306040518741d8e0d492a3f2df43abf4988c60b6e6722588bfe2853834c7424c033635727a17d8a7cd4ea007d765b29863d58903f41b517e9d9e6085b422193ff90a9af687ce24d8a393e803106c39b7f6cd964d8
Result = F
# NIST RSA PKCS#1 1.5 Test Vectors for FIPS 186-4 from SigVer15_186-3.rsp in