Merge pull request #147 from czurnieden/moarvm_workarounds
workaround for the MoarVM problem with MP_GEN_RAND et al. (cherry picked from commit 11d6e0391421bc996b2cf780f3f4c3fa634001d0)
This commit is contained in:
		
							parent
							
								
									e4e2da5143
								
							
						
					
					
						commit
						1c8c534885
					
				| @ -172,7 +172,7 @@ static int s_rand_digit(mp_digit *p) | ||||
| } | ||||
| 
 | ||||
| /* makes a pseudo-random int of a given size */ | ||||
| static int s_gen_random(mp_digit *r) | ||||
| int mp_rand_digit(mp_digit *r) | ||||
| { | ||||
|    int ret = s_rand_digit(r); | ||||
|    *r &= MP_MASK; | ||||
| @ -191,7 +191,7 @@ int mp_rand(mp_int *a, int digits) | ||||
| 
 | ||||
|    /* first place a random non-zero digit */ | ||||
|    do { | ||||
|       if (s_gen_random(&d) != MP_OKAY) { | ||||
|       if (mp_rand_digit(&d) != MP_OKAY) { | ||||
|          return MP_VAL; | ||||
|       } | ||||
|    } while (d == 0u); | ||||
| @ -205,7 +205,7 @@ int mp_rand(mp_int *a, int digits) | ||||
|          return res; | ||||
|       } | ||||
| 
 | ||||
|       if (s_gen_random(&d) != MP_OKAY) { | ||||
|       if (mp_rand_digit(&d) != MP_OKAY) { | ||||
|          return MP_VAL; | ||||
|       } | ||||
|       if ((res = mp_add_d(a, d, a)) != MP_OKAY) { | ||||
|  | ||||
							
								
								
									
										11
									
								
								doc/bn.tex
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								doc/bn.tex
									
									
									
									
									
								
							| @ -2003,14 +2003,19 @@ mp\_prime\_random(). | ||||
| 
 | ||||
| \chapter{Random Number Generation} | ||||
| \section{PRNG} | ||||
| \index{mp\_rand\_digit} | ||||
| \begin{alltt} | ||||
| int mp_rand_digit(mp_digit *r) | ||||
| \end{alltt} | ||||
| This function generates a random number in \texttt{r} of the size given in \texttt{r} (that is, the variable is used for in- and output) but not more than \texttt{MP_MASK} bits. | ||||
| 
 | ||||
| \index{mp\_rand} | ||||
| \begin{alltt} | ||||
| int mp_rand(mp_int *a, int digits) | ||||
| \end{alltt} | ||||
| The function generates a random number of \texttt{digits} bits. | ||||
| This function generates a random number of \texttt{digits} bits. | ||||
| 
 | ||||
| This random number is cryptographically secure if the source of random numbers the operating systems offers is cryptographically secure. | ||||
| It will use \texttt{arc4random()} if the OS is a BSD flavor, Wincrypt on Windows, and \texttt{\\dev\\urandom} on all operating systems that have it. | ||||
| The random number generated with these two functions is cryptographically secure if the source of random numbers the operating systems offers is cryptographically secure. It will use \texttt{arc4random()} if the OS is a BSD flavor, Wincrypt on Windows, or \texttt{\dev\urandom} on all operating systems that have it. | ||||
| 
 | ||||
| 
 | ||||
| \chapter{Input and Output} | ||||
|  | ||||
| @ -277,8 +277,10 @@ int mp_cnt_lsb(const mp_int *a); | ||||
| 
 | ||||
| /* I Love Earth! */ | ||||
| 
 | ||||
| /* makes a pseudo-random int of a given size */ | ||||
| /* makes a pseudo-random mp_int of a given size */ | ||||
| int mp_rand(mp_int *a, int digits); | ||||
| /* makes a pseudo-random small int of a given size */ | ||||
| int mp_rand_digit(mp_digit *r); | ||||
| 
 | ||||
| #ifdef MP_PRNG_ENABLE_LTM_RNG | ||||
| /* A last resort to provide random data on systems without any of the other
 | ||||
|  | ||||
| @ -9,7 +9,6 @@ | ||||
|  * | ||||
|  * SPDX-License-Identifier: Unlicense | ||||
|  */ | ||||
| 
 | ||||
| #if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) | ||||
| #if defined(LTM2) | ||||
| #   define LTM3 | ||||
| @ -18,7 +17,6 @@ | ||||
| #   define LTM2 | ||||
| #endif | ||||
| #define LTM1 | ||||
| 
 | ||||
| #if defined(LTM_ALL) | ||||
| #   define BN_ERROR_C | ||||
| #   define BN_FAST_MP_INVMOD_C | ||||
| @ -160,7 +158,6 @@ | ||||
| #   define BN_S_MP_SUB_C | ||||
| #   define BNCORE_C | ||||
| #endif | ||||
| 
 | ||||
| #if defined(BN_ERROR_C) | ||||
| #   define BN_MP_ERROR_TO_STRING_C | ||||
| #endif | ||||
| @ -828,6 +825,7 @@ | ||||
| #endif | ||||
| 
 | ||||
| #if defined(BN_MP_RAND_C) | ||||
| #   define BN_MP_RAND_DIGIT_C | ||||
| #   define BN_MP_ZERO_C | ||||
| #   define BN_MP_ADD_D_C | ||||
| #   define BN_MP_LSHD_C | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user