improve bignum
This commit is contained in:
@@ -1813,13 +1813,10 @@ int mpi_gen_prime( mpi *X, int nbits, int dh_flag,
|
||||
{
|
||||
int ret, k, n;
|
||||
unsigned char *p;
|
||||
mpi Y;
|
||||
|
||||
if( nbits < 3 )
|
||||
return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
|
||||
|
||||
mpi_init( &Y, NULL );
|
||||
|
||||
n = BITS_TO_LIMBS( nbits );
|
||||
|
||||
MPI_CHK( mpi_grow( X, n ) );
|
||||
@@ -1840,13 +1837,16 @@ int mpi_gen_prime( mpi *X, int nbits, int dh_flag,
|
||||
while( ( ret = mpi_is_prime( X, f_rng, p_rng ) ) != 0 )
|
||||
{
|
||||
if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
|
||||
goto cleanup;
|
||||
break;
|
||||
|
||||
MPI_CHK( mpi_add_int( X, X, 2 ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mpi Y;
|
||||
mpi_init( &Y, NULL );
|
||||
|
||||
MPI_CHK( mpi_sub_int( &Y, X, 1 ) );
|
||||
MPI_CHK( mpi_shift_r( &Y, 1 ) );
|
||||
|
||||
@@ -1858,22 +1858,20 @@ int mpi_gen_prime( mpi *X, int nbits, int dh_flag,
|
||||
break;
|
||||
|
||||
if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
|
||||
goto cleanup;
|
||||
break;
|
||||
}
|
||||
|
||||
if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE )
|
||||
goto cleanup;
|
||||
break;
|
||||
|
||||
MPI_CHK( mpi_add_int( &Y, X, 1 ) );
|
||||
MPI_CHK( mpi_add_int( X, X, 2 ) );
|
||||
MPI_CHK( mpi_shift_r( &Y, 1 ) );
|
||||
}
|
||||
|
||||
mpi_free( &Y, NULL );
|
||||
}
|
||||
|
||||
cleanup:
|
||||
|
||||
mpi_free( &Y, NULL );
|
||||
|
||||
return( ret );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user