mirror of
				https://github.com/yuzu-emu/mbedtls.git
				synced 2025-11-04 06:34:48 +00:00 
			
		
		
		
	Document thread safety for HMAC_DRBG
random(), and only this function, is thread-safe. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com> Signed-off-by: Chris Jones <christopher.jones@arm.com>
This commit is contained in:
		
							parent
							
								
									b5e295d5c9
								
							
						
					
					
						commit
						fb6876a111
					
				| 
						 | 
				
			
			@ -185,7 +185,17 @@ void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx );
 | 
			
		|||
 * \note                During the initial seeding, this function calls
 | 
			
		||||
 *                      the entropy source to obtain a nonce
 | 
			
		||||
 *                      whose length is half the entropy length.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#if defined(MBEDTLS_THREADING_C)
 | 
			
		||||
/**
 | 
			
		||||
 * \note                When Mbed TLS is built with threading support,
 | 
			
		||||
 *                      after this function returns successfully,
 | 
			
		||||
 *                      it is safe to call mbedtls_hmac_drbg_random()
 | 
			
		||||
 *                      from multiple threads. Other operations, including
 | 
			
		||||
 *                      reseeding, are not thread-safe.
 | 
			
		||||
 */
 | 
			
		||||
#endif /* MBEDTLS_THREADING_C */
 | 
			
		||||
/**
 | 
			
		||||
 * \param ctx           HMAC_DRBG context to be seeded.
 | 
			
		||||
 * \param md_info       MD algorithm to use for HMAC_DRBG.
 | 
			
		||||
 * \param f_entropy     The entropy callback, taking as arguments the
 | 
			
		||||
| 
						 | 
				
			
			@ -224,7 +234,17 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx,
 | 
			
		|||
 *
 | 
			
		||||
 * This function is meant for use in algorithms that need a pseudorandom
 | 
			
		||||
 * input such as deterministic ECDSA.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#if defined(MBEDTLS_THREADING_C)
 | 
			
		||||
/**
 | 
			
		||||
 * \note                When Mbed TLS is built with threading support,
 | 
			
		||||
 *                      after this function returns successfully,
 | 
			
		||||
 *                      it is safe to call mbedtls_hmac_drbg_random()
 | 
			
		||||
 *                      from multiple threads. Other operations, including
 | 
			
		||||
 *                      reseeding, are not thread-safe.
 | 
			
		||||
 */
 | 
			
		||||
#endif /* MBEDTLS_THREADING_C */
 | 
			
		||||
/**
 | 
			
		||||
 * \param ctx           HMAC_DRBG context to be initialised.
 | 
			
		||||
 * \param md_info       MD algorithm to use for HMAC_DRBG.
 | 
			
		||||
 * \param data          Concatenation of the initial entropy string and
 | 
			
		||||
| 
						 | 
				
			
			@ -287,6 +307,11 @@ void mbedtls_hmac_drbg_set_reseed_interval( mbedtls_hmac_drbg_context *ctx,
 | 
			
		|||
/**
 | 
			
		||||
 * \brief               This function updates the state of the HMAC_DRBG context.
 | 
			
		||||
 *
 | 
			
		||||
 * \note                This function is not thread-safe. It is not safe
 | 
			
		||||
 *                      to call this function if another thread might be
 | 
			
		||||
 *                      concurrently obtaining random numbers from the same
 | 
			
		||||
 *                      context or updating or reseeding the same context.
 | 
			
		||||
 *
 | 
			
		||||
 * \param ctx           The HMAC_DRBG context.
 | 
			
		||||
 * \param additional    The data to update the state with.
 | 
			
		||||
 *                      If this is \c NULL, there is no additional data.
 | 
			
		||||
| 
						 | 
				
			
			@ -303,6 +328,11 @@ int mbedtls_hmac_drbg_update_ret( mbedtls_hmac_drbg_context *ctx,
 | 
			
		|||
 * \brief               This function reseeds the HMAC_DRBG context, that is
 | 
			
		||||
 *                      extracts data from the entropy source.
 | 
			
		||||
 *
 | 
			
		||||
 * \note                This function is not thread-safe. It is not safe
 | 
			
		||||
 *                      to call this function if another thread might be
 | 
			
		||||
 *                      concurrently obtaining random numbers from the same
 | 
			
		||||
 *                      context or updating or reseeding the same context.
 | 
			
		||||
 *
 | 
			
		||||
 * \param ctx           The HMAC_DRBG context.
 | 
			
		||||
 * \param additional    Additional data to add to the state.
 | 
			
		||||
 *                      If this is \c NULL, there is no additional data
 | 
			
		||||
| 
						 | 
				
			
			@ -328,6 +358,11 @@ int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx,
 | 
			
		|||
 * This function automatically reseeds if the reseed counter is exceeded
 | 
			
		||||
 * or prediction resistance is enabled.
 | 
			
		||||
 *
 | 
			
		||||
 * \note                This function is not thread-safe. It is not safe
 | 
			
		||||
 *                      to call this function if another thread might be
 | 
			
		||||
 *                      concurrently obtaining random numbers from the same
 | 
			
		||||
 *                      context or updating or reseeding the same context.
 | 
			
		||||
 *
 | 
			
		||||
 * \param p_rng         The HMAC_DRBG context. This must be a pointer to a
 | 
			
		||||
 *                      #mbedtls_hmac_drbg_context structure.
 | 
			
		||||
 * \param output        The buffer to fill.
 | 
			
		||||
| 
						 | 
				
			
			@ -357,7 +392,16 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng,
 | 
			
		|||
 *
 | 
			
		||||
 * This function automatically reseeds if the reseed counter is exceeded
 | 
			
		||||
 * or prediction resistance is enabled.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#if defined(MBEDTLS_THREADING_C)
 | 
			
		||||
/**
 | 
			
		||||
 * \note                When Mbed TLS is built with threading support,
 | 
			
		||||
 *                      it is safe to call mbedtls_ctr_drbg_random()
 | 
			
		||||
 *                      from multiple threads. Other operations, including
 | 
			
		||||
 *                      reseeding, are not thread-safe.
 | 
			
		||||
 */
 | 
			
		||||
#endif /* MBEDTLS_THREADING_C */
 | 
			
		||||
/**
 | 
			
		||||
 * \param p_rng         The HMAC_DRBG context. This must be a pointer to a
 | 
			
		||||
 *                      #mbedtls_hmac_drbg_context structure.
 | 
			
		||||
 * \param output        The buffer to fill.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue