Make mbedtls_mpi_lt_mpi_ct more portable
The code relied on the assumptions that CHAR_BIT is 8 and that unsigned does not have padding bits. In the Bignum module we already assume that the sign of an MPI is either -1 or 1. Using this, we eliminate the above mentioned dependency.
This commit is contained in:
parent
1f32b5bea4
commit
73ba9ec9a6
1 changed files with 4 additions and 5 deletions
|
@ -1200,12 +1200,11 @@ int mbedtls_mpi_lt_mpi_ct( const mbedtls_mpi *X, const mbedtls_mpi *Y,
|
||||||
return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
|
return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get sign bits of the signs.
|
* Set sign_N to 1 if N >= 0, 0 if N < 0.
|
||||||
|
* We know that N->s == 1 if N >= 0 and N->s == -1 if N < 0.
|
||||||
*/
|
*/
|
||||||
sign_X = X->s;
|
sign_X = ( X->s & 2 ) >> 1;
|
||||||
sign_X = sign_X >> ( sizeof( unsigned ) * 8 - 1 );
|
sign_Y = ( Y->s & 2 ) >> 1;
|
||||||
sign_Y = Y->s;
|
|
||||||
sign_Y = sign_Y >> ( sizeof( unsigned ) * 8 - 1 );
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the signs are different, then the positive operand is the bigger.
|
* If the signs are different, then the positive operand is the bigger.
|
||||||
|
|
Loading…
Reference in a new issue