[crypto] Expose shifted out bit from big integer shifts

Expose the bit shifted out as a result of shifting a big integer left
or right.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-02-13 14:18:15 +00:00
parent bd90abf487
commit 5056e8ad93
7 changed files with 146 additions and 85 deletions
+8 -6
View File
@@ -105,21 +105,23 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
* Shift big integer left
*
* @v value Big integer
* @ret out Bit shifted out
*/
#define bigint_shl( value ) do { \
#define bigint_shl( value ) ( { \
unsigned int size = bigint_size (value); \
bigint_shl_raw ( (value)->element, size ); \
} while ( 0 )
} )
/**
* Shift big integer right
*
* @v value Big integer
* @ret out Bit shifted out
*/
#define bigint_shr( value ) do { \
#define bigint_shr( value ) ( { \
unsigned int size = bigint_size (value); \
bigint_shr_raw ( (value)->element, size ); \
} while ( 0 )
} )
/**
* Test if big integer is equal to zero
@@ -413,8 +415,8 @@ int bigint_add_raw ( const bigint_element_t *addend0,
bigint_element_t *value0, unsigned int size );
int bigint_subtract_raw ( const bigint_element_t *subtrahend0,
bigint_element_t *value0, unsigned int size );
void bigint_shl_raw ( bigint_element_t *value0, unsigned int size );
void bigint_shr_raw ( bigint_element_t *value0, unsigned int size );
int bigint_shl_raw ( bigint_element_t *value0, unsigned int size );
int bigint_shr_raw ( bigint_element_t *value0, unsigned int size );
int bigint_is_zero_raw ( const bigint_element_t *value0, unsigned int size );
int bigint_is_geq_raw ( const bigint_element_t *value0,
const bigint_element_t *reference0,