improve bignum

This commit is contained in:
NIIBE Yutaka
2012-06-07 15:29:49 +09:00
parent ee743ca042
commit 3fa01ef7a9

View File

@@ -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 );
}