mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 22:00:39 -06:00
Update external polarssl to 1.3.8
There were some fixes back on March 13th, 2014 for fixing compiling on MIPS64. Also some fixes on June 25th, 2014 for SPARC64 fixes. Probably more things, but those are what I care about.
This commit is contained in:
175
Externals/polarssl/library/bignum.c
vendored
175
Externals/polarssl/library/bignum.c
vendored
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Multi-precision integer library
|
||||
*
|
||||
* Copyright (C) 2006-2010, Brainspark B.V.
|
||||
* Copyright (C) 2006-2014, Brainspark B.V.
|
||||
*
|
||||
* This file is part of PolarSSL (http://www.polarssl.org)
|
||||
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
|
||||
@ -30,22 +30,32 @@
|
||||
* http://math.libtomcrypt.com/files/tommath.pdf
|
||||
*/
|
||||
|
||||
#if !defined(POLARSSL_CONFIG_FILE)
|
||||
#include "polarssl/config.h"
|
||||
#else
|
||||
#include POLARSSL_CONFIG_FILE
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_BIGNUM_C)
|
||||
|
||||
#include "polarssl/bignum.h"
|
||||
#include "polarssl/bn_mul.h"
|
||||
|
||||
#if defined(POLARSSL_MEMORY_C)
|
||||
#include "polarssl/memory.h"
|
||||
#if defined(POLARSSL_PLATFORM_C)
|
||||
#include "polarssl/platform.h"
|
||||
#else
|
||||
#define polarssl_printf printf
|
||||
#define polarssl_malloc malloc
|
||||
#define polarssl_free free
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Implementation that should never be optimized out by the compiler */
|
||||
static void polarssl_zeroize( void *v, size_t n ) {
|
||||
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
||||
}
|
||||
|
||||
#define ciL (sizeof(t_uint)) /* chars in limb */
|
||||
#define biL (ciL << 3) /* bits in limb */
|
||||
#define biH (ciL << 2) /* half limb size */
|
||||
@ -79,7 +89,7 @@ void mpi_free( mpi *X )
|
||||
|
||||
if( X->p != NULL )
|
||||
{
|
||||
memset( X->p, 0, X->n * ciL );
|
||||
polarssl_zeroize( X->p, X->n * ciL );
|
||||
polarssl_free( X->p );
|
||||
}
|
||||
|
||||
@ -108,7 +118,7 @@ int mpi_grow( mpi *X, size_t nblimbs )
|
||||
if( X->p != NULL )
|
||||
{
|
||||
memcpy( p, X->p, X->n * ciL );
|
||||
memset( X->p, 0, X->n * ciL );
|
||||
polarssl_zeroize( X->p, X->n * ciL );
|
||||
polarssl_free( X->p );
|
||||
}
|
||||
|
||||
@ -148,7 +158,7 @@ int mpi_shrink( mpi *X, size_t nblimbs )
|
||||
if( X->p != NULL )
|
||||
{
|
||||
memcpy( p, X->p, i * ciL );
|
||||
memset( X->p, 0, X->n * ciL );
|
||||
polarssl_zeroize( X->p, X->n * ciL );
|
||||
polarssl_free( X->p );
|
||||
}
|
||||
|
||||
@ -219,13 +229,13 @@ int mpi_safe_cond_assign( mpi *X, const mpi *Y, unsigned char assign )
|
||||
|
||||
MPI_CHK( mpi_grow( X, Y->n ) );
|
||||
|
||||
X->s = X->s * (1 - assign) + Y->s * assign;
|
||||
X->s = X->s * ( 1 - assign ) + Y->s * assign;
|
||||
|
||||
for( i = 0; i < Y->n; i++ )
|
||||
X->p[i] = X->p[i] * (1 - assign) + Y->p[i] * assign;
|
||||
X->p[i] = X->p[i] * ( 1 - assign ) + Y->p[i] * assign;
|
||||
|
||||
for( ; i < X->n; i++ )
|
||||
X->p[i] *= (1 - assign);
|
||||
X->p[i] *= ( 1 - assign );
|
||||
|
||||
cleanup:
|
||||
return( ret );
|
||||
@ -253,15 +263,15 @@ int mpi_safe_cond_swap( mpi *X, mpi *Y, unsigned char swap )
|
||||
MPI_CHK( mpi_grow( Y, X->n ) );
|
||||
|
||||
s = X->s;
|
||||
X->s = X->s * (1 - swap) + Y->s * swap;
|
||||
Y->s = Y->s * (1 - swap) + s * swap;
|
||||
X->s = X->s * ( 1 - swap ) + Y->s * swap;
|
||||
Y->s = Y->s * ( 1 - swap ) + s * swap;
|
||||
|
||||
|
||||
for( i = 0; i < X->n; i++ )
|
||||
{
|
||||
tmp = X->p[i];
|
||||
X->p[i] = X->p[i] * (1 - swap) + Y->p[i] * swap;
|
||||
Y->p[i] = Y->p[i] * (1 - swap) + tmp * swap;
|
||||
X->p[i] = X->p[i] * ( 1 - swap ) + Y->p[i] * swap;
|
||||
Y->p[i] = Y->p[i] * ( 1 - swap ) + tmp * swap;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
@ -294,7 +304,7 @@ int mpi_get_bit( const mpi *X, size_t pos )
|
||||
if( X->n * biL <= pos )
|
||||
return( 0 );
|
||||
|
||||
return ( X->p[pos / biL] >> ( pos % biL ) ) & 0x01;
|
||||
return( ( X->p[pos / biL] >> ( pos % biL ) ) & 0x01 );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -307,12 +317,12 @@ int mpi_set_bit( mpi *X, size_t pos, unsigned char val )
|
||||
size_t idx = pos % biL;
|
||||
|
||||
if( val != 0 && val != 1 )
|
||||
return POLARSSL_ERR_MPI_BAD_INPUT_DATA;
|
||||
|
||||
return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
|
||||
|
||||
if( X->n * biL <= pos )
|
||||
{
|
||||
if( val == 0 )
|
||||
return ( 0 );
|
||||
return( 0 );
|
||||
|
||||
MPI_CHK( mpi_grow( X, off + 1 ) );
|
||||
}
|
||||
@ -321,7 +331,7 @@ int mpi_set_bit( mpi *X, size_t pos, unsigned char val )
|
||||
X->p[off] |= (t_uint) val << idx;
|
||||
|
||||
cleanup:
|
||||
|
||||
|
||||
return( ret );
|
||||
}
|
||||
|
||||
@ -416,7 +426,7 @@ int mpi_read_string( mpi *X, int radix, const char *s )
|
||||
}
|
||||
|
||||
MPI_CHK( mpi_get_digit( &d, radix, s[i - 1] ) );
|
||||
X->p[j / (2 * ciL)] |= d << ( (j % (2 * ciL)) << 2 );
|
||||
X->p[j / ( 2 * ciL )] |= d << ( ( j % ( 2 * ciL ) ) << 2 );
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -520,7 +530,7 @@ int mpi_write_string( const mpi *X, int radix, char *s, size_t *slen )
|
||||
{
|
||||
c = ( X->p[i - 1] >> ( ( j - 1 ) << 3) ) & 0xFF;
|
||||
|
||||
if( c == 0 && k == 0 && ( i + j + 3 ) != 0 )
|
||||
if( c == 0 && k == 0 && ( i + j ) != 2 )
|
||||
continue;
|
||||
|
||||
*(p++) = "0123456789ABCDEF" [c / 16];
|
||||
@ -616,7 +626,7 @@ int mpi_write_file( const char *p, const mpi *X, int radix, FILE *fout )
|
||||
return( POLARSSL_ERR_MPI_FILE_IO_ERROR );
|
||||
}
|
||||
else
|
||||
printf( "%s%s", p, s );
|
||||
polarssl_printf( "%s%s", p, s );
|
||||
|
||||
cleanup:
|
||||
|
||||
@ -855,7 +865,7 @@ int mpi_add_abs( mpi *X, const mpi *A, const mpi *B )
|
||||
|
||||
if( X != A )
|
||||
MPI_CHK( mpi_copy( X, A ) );
|
||||
|
||||
|
||||
/*
|
||||
* X should always be positive as a result of unsigned additions.
|
||||
*/
|
||||
@ -1078,7 +1088,7 @@ void mpi_mul_hlp( size_t i, t_uint *s, t_uint *d, t_uint b )
|
||||
MULADDC_CORE
|
||||
MULADDC_STOP
|
||||
}
|
||||
#else
|
||||
#else /* MULADDC_HUIT */
|
||||
for( ; i >= 16; i -= 16 )
|
||||
{
|
||||
MULADDC_INIT
|
||||
@ -1111,7 +1121,7 @@ void mpi_mul_hlp( size_t i, t_uint *s, t_uint *d, t_uint b )
|
||||
MULADDC_CORE
|
||||
MULADDC_STOP
|
||||
}
|
||||
#endif
|
||||
#endif /* MULADDC_HUIT */
|
||||
|
||||
t++;
|
||||
|
||||
@ -1216,14 +1226,14 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B )
|
||||
|
||||
n = X.n - 1;
|
||||
t = Y.n - 1;
|
||||
MPI_CHK( mpi_shift_l( &Y, biL * (n - t) ) );
|
||||
MPI_CHK( mpi_shift_l( &Y, biL * ( n - t ) ) );
|
||||
|
||||
while( mpi_cmp_mpi( &X, &Y ) >= 0 )
|
||||
{
|
||||
Z.p[n - t]++;
|
||||
MPI_CHK( mpi_sub_mpi( &X, &X, &Y ) );
|
||||
}
|
||||
MPI_CHK( mpi_shift_r( &Y, biL * (n - t) ) );
|
||||
MPI_CHK( mpi_shift_r( &Y, biL * ( n - t ) ) );
|
||||
|
||||
for( i = n; i > t ; i-- )
|
||||
{
|
||||
@ -1231,14 +1241,24 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B )
|
||||
Z.p[i - t - 1] = ~0;
|
||||
else
|
||||
{
|
||||
#if defined(POLARSSL_HAVE_UDBL)
|
||||
/*
|
||||
* The version of Clang shipped by Apple with Mavericks around
|
||||
* 2014-03 can't handle 128-bit division properly. Disable
|
||||
* 128-bits division for this version. Let's be optimistic and
|
||||
* assume it'll be fixed in the next minor version (next
|
||||
* patchlevel is probably a bit too optimistic).
|
||||
*/
|
||||
#if defined(POLARSSL_HAVE_UDBL) && \
|
||||
! ( defined(__x86_64__) && defined(__APPLE__) && \
|
||||
defined(__clang_major__) && __clang_major__ == 5 && \
|
||||
defined(__clang_minor__) && __clang_minor__ == 0 )
|
||||
t_udbl r;
|
||||
|
||||
r = (t_udbl) X.p[i] << biL;
|
||||
r |= (t_udbl) X.p[i - 1];
|
||||
r /= Y.p[t];
|
||||
if( r > ((t_udbl) 1 << biL) - 1)
|
||||
r = ((t_udbl) 1 << biL) - 1;
|
||||
if( r > ( (t_udbl) 1 << biL ) - 1 )
|
||||
r = ( (t_udbl) 1 << biL ) - 1;
|
||||
|
||||
Z.p[i - t - 1] = (t_uint) r;
|
||||
#else
|
||||
@ -1281,7 +1301,7 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B )
|
||||
r0 -= m;
|
||||
|
||||
Z.p[i - t - 1] = ( q1 << biH ) | q0;
|
||||
#endif
|
||||
#endif /* POLARSSL_HAVE_UDBL && !64-bit Apple with Clang 5.0 */
|
||||
}
|
||||
|
||||
Z.p[i - t - 1]++;
|
||||
@ -1290,25 +1310,25 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B )
|
||||
Z.p[i - t - 1]--;
|
||||
|
||||
MPI_CHK( mpi_lset( &T1, 0 ) );
|
||||
T1.p[0] = (t < 1) ? 0 : Y.p[t - 1];
|
||||
T1.p[0] = ( t < 1 ) ? 0 : Y.p[t - 1];
|
||||
T1.p[1] = Y.p[t];
|
||||
MPI_CHK( mpi_mul_int( &T1, &T1, Z.p[i - t - 1] ) );
|
||||
|
||||
MPI_CHK( mpi_lset( &T2, 0 ) );
|
||||
T2.p[0] = (i < 2) ? 0 : X.p[i - 2];
|
||||
T2.p[1] = (i < 1) ? 0 : X.p[i - 1];
|
||||
T2.p[0] = ( i < 2 ) ? 0 : X.p[i - 2];
|
||||
T2.p[1] = ( i < 1 ) ? 0 : X.p[i - 1];
|
||||
T2.p[2] = X.p[i];
|
||||
}
|
||||
while( mpi_cmp_mpi( &T1, &T2 ) > 0 );
|
||||
|
||||
MPI_CHK( mpi_mul_int( &T1, &Y, Z.p[i - t - 1] ) );
|
||||
MPI_CHK( mpi_shift_l( &T1, biL * (i - t - 1) ) );
|
||||
MPI_CHK( mpi_shift_l( &T1, biL * ( i - t - 1 ) ) );
|
||||
MPI_CHK( mpi_sub_mpi( &X, &X, &T1 ) );
|
||||
|
||||
if( mpi_cmp_int( &X, 0 ) < 0 )
|
||||
{
|
||||
MPI_CHK( mpi_copy( &T1, &Y ) );
|
||||
MPI_CHK( mpi_shift_l( &T1, biL * (i - t - 1) ) );
|
||||
MPI_CHK( mpi_shift_l( &T1, biL * ( i - t - 1 ) ) );
|
||||
MPI_CHK( mpi_add_mpi( &X, &X, &T1 ) );
|
||||
Z.p[i - t - 1]--;
|
||||
}
|
||||
@ -1362,7 +1382,7 @@ int mpi_mod_mpi( mpi *R, const mpi *A, const mpi *B )
|
||||
int ret;
|
||||
|
||||
if( mpi_cmp_int( B, 0 ) < 0 )
|
||||
return POLARSSL_ERR_MPI_NEGATIVE_VALUE;
|
||||
return( POLARSSL_ERR_MPI_NEGATIVE_VALUE );
|
||||
|
||||
MPI_CHK( mpi_div_mpi( NULL, R, A, B ) );
|
||||
|
||||
@ -1389,7 +1409,7 @@ int mpi_mod_int( t_uint *r, const mpi *A, t_sint b )
|
||||
return( POLARSSL_ERR_MPI_DIVISION_BY_ZERO );
|
||||
|
||||
if( b < 0 )
|
||||
return POLARSSL_ERR_MPI_NEGATIVE_VALUE;
|
||||
return( POLARSSL_ERR_MPI_NEGATIVE_VALUE );
|
||||
|
||||
/*
|
||||
* handle trivial cases
|
||||
@ -1440,14 +1460,13 @@ int mpi_mod_int( t_uint *r, const mpi *A, t_sint b )
|
||||
static void mpi_montg_init( t_uint *mm, const mpi *N )
|
||||
{
|
||||
t_uint x, m0 = N->p[0];
|
||||
unsigned int i;
|
||||
|
||||
x = m0;
|
||||
x += ( ( m0 + 2 ) & 4 ) << 1;
|
||||
x *= ( 2 - ( m0 * x ) );
|
||||
|
||||
if( biL >= 16 ) x *= ( 2 - ( m0 * x ) );
|
||||
if( biL >= 32 ) x *= ( 2 - ( m0 * x ) );
|
||||
if( biL >= 64 ) x *= ( 2 - ( m0 * x ) );
|
||||
for( i = biL; i >= 8; i /= 2 )
|
||||
x *= ( 2 - ( m0 * x ) );
|
||||
|
||||
*mm = ~x + 1;
|
||||
}
|
||||
@ -1455,7 +1474,8 @@ static void mpi_montg_init( t_uint *mm, const mpi *N )
|
||||
/*
|
||||
* Montgomery multiplication: A = A * B * R^-1 mod N (HAC 14.36)
|
||||
*/
|
||||
static void mpi_montmul( mpi *A, const mpi *B, const mpi *N, t_uint mm, const mpi *T )
|
||||
static void mpi_montmul( mpi *A, const mpi *B, const mpi *N, t_uint mm,
|
||||
const mpi *T )
|
||||
{
|
||||
size_t i, n, m;
|
||||
t_uint u0, u1, *d;
|
||||
@ -1480,7 +1500,7 @@ static void mpi_montmul( mpi *A, const mpi *B, const mpi *N, t_uint mm, const mp
|
||||
*d++ = u0; d[n + 1] = 0;
|
||||
}
|
||||
|
||||
memcpy( A->p, d, (n + 1) * ciL );
|
||||
memcpy( A->p, d, ( n + 1 ) * ciL );
|
||||
|
||||
if( mpi_cmp_abs( A, N ) >= 0 )
|
||||
mpi_sub_hlp( n, N->p, A->p );
|
||||
@ -1590,7 +1610,7 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
|
||||
/*
|
||||
* W[1 << (wsize - 1)] = W[1] ^ (wsize - 1)
|
||||
*/
|
||||
j = one << (wsize - 1);
|
||||
j = one << ( wsize - 1 );
|
||||
|
||||
MPI_CHK( mpi_grow( &W[j], N->n + 1 ) );
|
||||
MPI_CHK( mpi_copy( &W[j], &W[1] ) );
|
||||
@ -1601,7 +1621,7 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
|
||||
/*
|
||||
* W[i] = W[i - 1] * W[1]
|
||||
*/
|
||||
for( i = j + 1; i < (one << wsize); i++ )
|
||||
for( i = j + 1; i < ( one << wsize ); i++ )
|
||||
{
|
||||
MPI_CHK( mpi_grow( &W[i], N->n + 1 ) );
|
||||
MPI_CHK( mpi_copy( &W[i], &W[i - 1] ) );
|
||||
@ -1653,7 +1673,7 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
|
||||
state = 2;
|
||||
|
||||
nbits++;
|
||||
wbits |= (ei << (wsize - nbits));
|
||||
wbits |= ( ei << ( wsize - nbits ) );
|
||||
|
||||
if( nbits == wsize )
|
||||
{
|
||||
@ -1683,7 +1703,7 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
|
||||
|
||||
wbits <<= 1;
|
||||
|
||||
if( (wbits & (one << wsize)) != 0 )
|
||||
if( ( wbits & ( one << wsize ) ) != 0 )
|
||||
mpi_montmul( X, &W[1], N, mm, &T );
|
||||
}
|
||||
|
||||
@ -1700,12 +1720,12 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR )
|
||||
|
||||
cleanup:
|
||||
|
||||
for( i = (one << (wsize - 1)); i < (one << wsize); i++ )
|
||||
for( i = ( one << ( wsize - 1 ) ); i < ( one << wsize ); i++ )
|
||||
mpi_free( &W[i] );
|
||||
|
||||
mpi_free( &W[1] ); mpi_free( &T ); mpi_free( &Apos );
|
||||
|
||||
if( _RR == NULL )
|
||||
if( _RR == NULL || _RR->p == NULL )
|
||||
mpi_free( &RR );
|
||||
|
||||
return( ret );
|
||||
@ -1728,7 +1748,7 @@ int mpi_gcd( mpi *G, const mpi *A, const mpi *B )
|
||||
lz = mpi_lsb( &TA );
|
||||
lzt = mpi_lsb( &TB );
|
||||
|
||||
if ( lzt < lz )
|
||||
if( lzt < lz )
|
||||
lz = lzt;
|
||||
|
||||
MPI_CHK( mpi_shift_r( &TA, lz ) );
|
||||
@ -1763,16 +1783,25 @@ cleanup:
|
||||
return( ret );
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill X with size bytes of random.
|
||||
*
|
||||
* Use a temporary bytes representation to make sure the result is the same
|
||||
* regardless of the platform endianness (useful when f_rng is actually
|
||||
* deterministic, eg for tests).
|
||||
*/
|
||||
int mpi_fill_random( mpi *X, size_t size,
|
||||
int (*f_rng)(void *, unsigned char *, size_t),
|
||||
void *p_rng )
|
||||
{
|
||||
int ret;
|
||||
unsigned char buf[POLARSSL_MPI_MAX_SIZE];
|
||||
|
||||
MPI_CHK( mpi_grow( X, CHARS_TO_LIMBS( size ) ) );
|
||||
MPI_CHK( mpi_lset( X, 0 ) );
|
||||
if( size > POLARSSL_MPI_MAX_SIZE )
|
||||
return( POLARSSL_ERR_MPI_BAD_INPUT_DATA );
|
||||
|
||||
MPI_CHK( f_rng( p_rng, (unsigned char *) X->p, size ) );
|
||||
MPI_CHK( f_rng( p_rng, buf, size ) );
|
||||
MPI_CHK( mpi_read_binary( X, buf, size ) );
|
||||
|
||||
cleanup:
|
||||
return( ret );
|
||||
@ -2189,19 +2218,19 @@ int mpi_self_test( int verbose )
|
||||
"30879B56C61DE584A0F53A2447A51E" ) );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( " MPI test #1 (mul_mpi): " );
|
||||
polarssl_printf( " MPI test #1 (mul_mpi): " );
|
||||
|
||||
if( mpi_cmp_mpi( &X, &U ) != 0 )
|
||||
{
|
||||
if( verbose != 0 )
|
||||
printf( "failed\n" );
|
||||
polarssl_printf( "failed\n" );
|
||||
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "passed\n" );
|
||||
polarssl_printf( "passed\n" );
|
||||
|
||||
MPI_CHK( mpi_div_mpi( &X, &Y, &A, &N ) );
|
||||
|
||||
@ -2214,20 +2243,20 @@ int mpi_self_test( int verbose )
|
||||
"9EE50D0657C77F374E903CDFA4C642" ) );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( " MPI test #2 (div_mpi): " );
|
||||
polarssl_printf( " MPI test #2 (div_mpi): " );
|
||||
|
||||
if( mpi_cmp_mpi( &X, &U ) != 0 ||
|
||||
mpi_cmp_mpi( &Y, &V ) != 0 )
|
||||
{
|
||||
if( verbose != 0 )
|
||||
printf( "failed\n" );
|
||||
polarssl_printf( "failed\n" );
|
||||
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "passed\n" );
|
||||
polarssl_printf( "passed\n" );
|
||||
|
||||
MPI_CHK( mpi_exp_mod( &X, &A, &E, &N, NULL ) );
|
||||
|
||||
@ -2237,19 +2266,19 @@ int mpi_self_test( int verbose )
|
||||
"325D24D6A3C12710F10A09FA08AB87" ) );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( " MPI test #3 (exp_mod): " );
|
||||
polarssl_printf( " MPI test #3 (exp_mod): " );
|
||||
|
||||
if( mpi_cmp_mpi( &X, &U ) != 0 )
|
||||
{
|
||||
if( verbose != 0 )
|
||||
printf( "failed\n" );
|
||||
polarssl_printf( "failed\n" );
|
||||
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "passed\n" );
|
||||
polarssl_printf( "passed\n" );
|
||||
|
||||
MPI_CHK( mpi_inv_mod( &X, &A, &N ) );
|
||||
|
||||
@ -2259,24 +2288,24 @@ int mpi_self_test( int verbose )
|
||||
"C5B8A74DAC4D09E03B5E0BE779F2DF61" ) );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( " MPI test #4 (inv_mod): " );
|
||||
polarssl_printf( " MPI test #4 (inv_mod): " );
|
||||
|
||||
if( mpi_cmp_mpi( &X, &U ) != 0 )
|
||||
{
|
||||
if( verbose != 0 )
|
||||
printf( "failed\n" );
|
||||
polarssl_printf( "failed\n" );
|
||||
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "passed\n" );
|
||||
polarssl_printf( "passed\n" );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( " MPI test #5 (simple gcd): " );
|
||||
polarssl_printf( " MPI test #5 (simple gcd): " );
|
||||
|
||||
for ( i = 0; i < GCD_PAIR_COUNT; i++)
|
||||
for( i = 0; i < GCD_PAIR_COUNT; i++ )
|
||||
{
|
||||
MPI_CHK( mpi_lset( &X, gcd_pairs[i][0] ) );
|
||||
MPI_CHK( mpi_lset( &Y, gcd_pairs[i][1] ) );
|
||||
@ -2286,7 +2315,7 @@ int mpi_self_test( int verbose )
|
||||
if( mpi_cmp_int( &A, gcd_pairs[i][2] ) != 0 )
|
||||
{
|
||||
if( verbose != 0 )
|
||||
printf( "failed at %d\n", i );
|
||||
polarssl_printf( "failed at %d\n", i );
|
||||
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
@ -2294,22 +2323,22 @@ int mpi_self_test( int verbose )
|
||||
}
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "passed\n" );
|
||||
polarssl_printf( "passed\n" );
|
||||
|
||||
cleanup:
|
||||
|
||||
if( ret != 0 && verbose != 0 )
|
||||
printf( "Unexpected error, return code = %08X\n", ret );
|
||||
polarssl_printf( "Unexpected error, return code = %08X\n", ret );
|
||||
|
||||
mpi_free( &A ); mpi_free( &E ); mpi_free( &N ); mpi_free( &X );
|
||||
mpi_free( &Y ); mpi_free( &U ); mpi_free( &V );
|
||||
|
||||
if( verbose != 0 )
|
||||
printf( "\n" );
|
||||
polarssl_printf( "\n" );
|
||||
|
||||
return( ret );
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* POLARSSL_SELF_TEST */
|
||||
|
||||
#endif
|
||||
#endif /* POLARSSL_BIGNUM_C */
|
||||
|
Reference in New Issue
Block a user