mirror of
				https://github.com/Mbed-TLS/mbedtls.git
				synced 2025-10-28 23:14:56 +03:00 
			
		
		
		
	Reduce the size of the small primes table used by primality testing
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
		| @@ -2171,29 +2171,29 @@ cleanup: | |||||||
|  |  | ||||||
| #if defined(MBEDTLS_GENPRIME) | #if defined(MBEDTLS_GENPRIME) | ||||||
|  |  | ||||||
| static const int small_prime[] = | /* Gaps between primes, starting at 3. https://oeis.org/A001223 */ | ||||||
| { | static const unsigned char small_prime_gaps[] = { | ||||||
|     3,    5,    7,   11,   13,   17,   19,   23, |     2, 2, 4, 2, 4, 2, 4, 6, | ||||||
|     29,   31,   37,   41,   43,   47,   53,   59, |     2, 6, 4, 2, 4, 6, 6, 2, | ||||||
|     61,   67,   71,   73,   79,   83,   89,   97, |     6, 4, 2, 6, 4, 6, 8, 4, | ||||||
|     101,  103,  107,  109,  113,  127,  131,  137, |     2, 4, 2, 4, 14, 4, 6, 2, | ||||||
|     139,  149,  151,  157,  163,  167,  173,  179, |     10, 2, 6, 6, 4, 6, 6, 2, | ||||||
|     181,  191,  193,  197,  199,  211,  223,  227, |     10, 2, 4, 2, 12, 12, 4, 2, | ||||||
|     229,  233,  239,  241,  251,  257,  263,  269, |     4, 6, 2, 10, 6, 6, 6, 2, | ||||||
|     271,  277,  281,  283,  293,  307,  311,  313, |     6, 4, 2, 10, 14, 4, 2, 4, | ||||||
|     317,  331,  337,  347,  349,  353,  359,  367, |     14, 6, 10, 2, 4, 6, 8, 6, | ||||||
|     373,  379,  383,  389,  397,  401,  409,  419, |     6, 4, 6, 8, 4, 8, 10, 2, | ||||||
|     421,  431,  433,  439,  443,  449,  457,  461, |     10, 2, 6, 4, 6, 8, 4, 2, | ||||||
|     463,  467,  479,  487,  491,  499,  503,  509, |     4, 12, 8, 4, 8, 4, 6, 12, | ||||||
|     521,  523,  541,  547,  557,  563,  569,  571, |     2, 18, 6, 10, 6, 6, 2, 6, | ||||||
|     577,  587,  593,  599,  601,  607,  613,  617, |     10, 6, 6, 2, 6, 6, 4, 2, | ||||||
|     619,  631,  641,  643,  647,  653,  659,  661, |     12, 10, 2, 4, 6, 6, 2, 12, | ||||||
|     673,  677,  683,  691,  701,  709,  719,  727, |     4, 6, 8, 10, 8, 10, 8, 6, | ||||||
|     733,  739,  743,  751,  757,  761,  769,  773, |     6, 4, 8, 6, 4, 8, 4, 14, | ||||||
|     787,  797,  809,  811,  821,  823,  827,  829, |     10, 12, 2, 10, 2, 4, 2, 10, | ||||||
|     839,  853,  857,  859,  863,  877,  881,  883, |     14, 4, 2, 4, 14, 4, 2, 4, | ||||||
|     887,  907,  911,  919,  929,  937,  941,  947, |     20, 4, 8, 10, 8, 4, 6, 6, | ||||||
|     953,  967,  971,  977,  983,  991,  997, -103 |     14, 4, 6, 6, 8, 6, /*reaches 997*/ | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -2210,20 +2210,20 @@ static int mpi_check_small_factors(const mbedtls_mpi *X) | |||||||
|     int ret = 0; |     int ret = 0; | ||||||
|     size_t i; |     size_t i; | ||||||
|     mbedtls_mpi_uint r; |     mbedtls_mpi_uint r; | ||||||
|  |     unsigned p = 3; /* The first odd prime */ | ||||||
|  |  | ||||||
|     if ((X->p[0] & 1) == 0) { |     if ((X->p[0] & 1) == 0) { | ||||||
|         return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; |         return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     for (i = 0; small_prime[i] > 0; i++) { |     for (i = 0; i < sizeof(small_prime_gaps); p += small_prime_gaps[i], i++) { | ||||||
|         if (mbedtls_mpi_cmp_int(X, small_prime[i]) <= 0) { |         MBEDTLS_MPI_CHK(mbedtls_mpi_mod_int(&r, X, p)); | ||||||
|             return 1; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         MBEDTLS_MPI_CHK(mbedtls_mpi_mod_int(&r, X, small_prime[i])); |  | ||||||
|  |  | ||||||
|         if (r == 0) { |         if (r == 0) { | ||||||
|             return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; |             if (mbedtls_mpi_cmp_int(X, p) == 0) { | ||||||
|  |                 return 1; | ||||||
|  |             } else { | ||||||
|  |                 return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user