mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 19:20:40 -04:00 
			
		
		
		
	Merge remote-tracking branch 'public/pr/2274' into development
This commit is contained in:
		
						commit
						ad7c2105a2
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										140
									
								
								library/bignum.c
									
									
									
									
									
								
							
							
						
						
									
										140
									
								
								library/bignum.c
									
									
									
									
									
								
							| @ -59,6 +59,11 @@ | |||||||
| #define mbedtls_free       free | #define mbedtls_free       free | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #define MPI_VALIDATE_RET( cond )                                       \ | ||||||
|  |     MBEDTLS_INTERNAL_VALIDATE_RET( cond, MBEDTLS_ERR_MPI_BAD_INPUT_DATA ) | ||||||
|  | #define MPI_VALIDATE( cond )                                           \ | ||||||
|  |     MBEDTLS_INTERNAL_VALIDATE( cond ) | ||||||
|  | 
 | ||||||
| #define ciL    (sizeof(mbedtls_mpi_uint))         /* chars in limb  */ | #define ciL    (sizeof(mbedtls_mpi_uint))         /* chars in limb  */ | ||||||
| #define biL    (ciL << 3)               /* bits  in limb  */ | #define biL    (ciL << 3)               /* bits  in limb  */ | ||||||
| #define biH    (ciL << 2)               /* half limb size */ | #define biH    (ciL << 2)               /* half limb size */ | ||||||
| @ -83,8 +88,7 @@ static void mbedtls_mpi_zeroize( mbedtls_mpi_uint *v, size_t n ) | |||||||
|  */ |  */ | ||||||
| void mbedtls_mpi_init( mbedtls_mpi *X ) | void mbedtls_mpi_init( mbedtls_mpi *X ) | ||||||
| { | { | ||||||
|     if( X == NULL ) |     MPI_VALIDATE( X != NULL ); | ||||||
|         return; |  | ||||||
| 
 | 
 | ||||||
|     X->s = 1; |     X->s = 1; | ||||||
|     X->n = 0; |     X->n = 0; | ||||||
| @ -116,6 +120,7 @@ void mbedtls_mpi_free( mbedtls_mpi *X ) | |||||||
| int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs ) | int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs ) | ||||||
| { | { | ||||||
|     mbedtls_mpi_uint *p; |     mbedtls_mpi_uint *p; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( nblimbs > MBEDTLS_MPI_MAX_LIMBS ) |     if( nblimbs > MBEDTLS_MPI_MAX_LIMBS ) | ||||||
|         return( MBEDTLS_ERR_MPI_ALLOC_FAILED ); |         return( MBEDTLS_ERR_MPI_ALLOC_FAILED ); | ||||||
| @ -147,6 +152,10 @@ int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ) | |||||||
| { | { | ||||||
|     mbedtls_mpi_uint *p; |     mbedtls_mpi_uint *p; | ||||||
|     size_t i; |     size_t i; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  | 
 | ||||||
|  |     if( nblimbs > MBEDTLS_MPI_MAX_LIMBS ) | ||||||
|  |         return( MBEDTLS_ERR_MPI_ALLOC_FAILED ); | ||||||
| 
 | 
 | ||||||
|     /* Actually resize up in this case */ |     /* Actually resize up in this case */ | ||||||
|     if( X->n <= nblimbs ) |     if( X->n <= nblimbs ) | ||||||
| @ -183,6 +192,8 @@ int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ) | |||||||
| { | { | ||||||
|     int ret = 0; |     int ret = 0; | ||||||
|     size_t i; |     size_t i; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( X == Y ) |     if( X == Y ) | ||||||
|         return( 0 ); |         return( 0 ); | ||||||
| @ -222,6 +233,8 @@ cleanup: | |||||||
| void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ) | void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ) | ||||||
| { | { | ||||||
|     mbedtls_mpi T; |     mbedtls_mpi T; | ||||||
|  |     MPI_VALIDATE( X != NULL ); | ||||||
|  |     MPI_VALIDATE( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     memcpy( &T,  X, sizeof( mbedtls_mpi ) ); |     memcpy( &T,  X, sizeof( mbedtls_mpi ) ); | ||||||
|     memcpy(  X,  Y, sizeof( mbedtls_mpi ) ); |     memcpy(  X,  Y, sizeof( mbedtls_mpi ) ); | ||||||
| @ -237,6 +250,8 @@ int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned | |||||||
| { | { | ||||||
|     int ret = 0; |     int ret = 0; | ||||||
|     size_t i; |     size_t i; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     /* make sure assign is 0 or 1 in a time-constant manner */ |     /* make sure assign is 0 or 1 in a time-constant manner */ | ||||||
|     assign = (assign | (unsigned char)-assign) >> 7; |     assign = (assign | (unsigned char)-assign) >> 7; | ||||||
| @ -266,6 +281,8 @@ int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char sw | |||||||
|     int ret, s; |     int ret, s; | ||||||
|     size_t i; |     size_t i; | ||||||
|     mbedtls_mpi_uint tmp; |     mbedtls_mpi_uint tmp; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( X == Y ) |     if( X == Y ) | ||||||
|         return( 0 ); |         return( 0 ); | ||||||
| @ -298,6 +315,7 @@ cleanup: | |||||||
| int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ) | int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) ); |     MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) ); | ||||||
|     memset( X->p, 0, X->n * ciL ); |     memset( X->p, 0, X->n * ciL ); | ||||||
| @ -315,6 +333,8 @@ cleanup: | |||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_get_bit( const mbedtls_mpi *X, size_t pos ) | int mbedtls_mpi_get_bit( const mbedtls_mpi *X, size_t pos ) | ||||||
| { | { | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  | 
 | ||||||
|     if( X->n * biL <= pos ) |     if( X->n * biL <= pos ) | ||||||
|         return( 0 ); |         return( 0 ); | ||||||
| 
 | 
 | ||||||
| @ -333,6 +353,7 @@ int mbedtls_mpi_set_bit( mbedtls_mpi *X, size_t pos, unsigned char val ) | |||||||
|     int ret = 0; |     int ret = 0; | ||||||
|     size_t off = pos / biL; |     size_t off = pos / biL; | ||||||
|     size_t idx = pos % biL; |     size_t idx = pos % biL; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( val != 0 && val != 1 ) |     if( val != 0 && val != 1 ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| @ -359,6 +380,7 @@ cleanup: | |||||||
| size_t mbedtls_mpi_lsb( const mbedtls_mpi *X ) | size_t mbedtls_mpi_lsb( const mbedtls_mpi *X ) | ||||||
| { | { | ||||||
|     size_t i, j, count = 0; |     size_t i, j, count = 0; | ||||||
|  |     MBEDTLS_INTERNAL_VALIDATE_RET( X != NULL, 0 ); | ||||||
| 
 | 
 | ||||||
|     for( i = 0; i < X->n; i++ ) |     for( i = 0; i < X->n; i++ ) | ||||||
|         for( j = 0; j < biL; j++, count++ ) |         for( j = 0; j < biL; j++, count++ ) | ||||||
| @ -439,6 +461,8 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) | |||||||
|     size_t i, j, slen, n; |     size_t i, j, slen, n; | ||||||
|     mbedtls_mpi_uint d; |     mbedtls_mpi_uint d; | ||||||
|     mbedtls_mpi T; |     mbedtls_mpi T; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( s != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( radix < 2 || radix > 16 ) |     if( radix < 2 || radix > 16 ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| @ -539,6 +563,9 @@ int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, | |||||||
|     size_t n; |     size_t n; | ||||||
|     char *p; |     char *p; | ||||||
|     mbedtls_mpi T; |     mbedtls_mpi T; | ||||||
|  |     MPI_VALIDATE_RET( X    != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( olen != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( buflen == 0 || buf != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( radix < 2 || radix > 16 ) |     if( radix < 2 || radix > 16 ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| @ -620,6 +647,12 @@ int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin ) | |||||||
|      */ |      */ | ||||||
|     char s[ MBEDTLS_MPI_RW_BUFFER_SIZE ]; |     char s[ MBEDTLS_MPI_RW_BUFFER_SIZE ]; | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( X   != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( fin != NULL ); | ||||||
|  | 
 | ||||||
|  |     if( radix < 2 || radix > 16 ) | ||||||
|  |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
|  | 
 | ||||||
|     memset( s, 0, sizeof( s ) ); |     memset( s, 0, sizeof( s ) ); | ||||||
|     if( fgets( s, sizeof( s ) - 1, fin ) == NULL ) |     if( fgets( s, sizeof( s ) - 1, fin ) == NULL ) | ||||||
|         return( MBEDTLS_ERR_MPI_FILE_IO_ERROR ); |         return( MBEDTLS_ERR_MPI_FILE_IO_ERROR ); | ||||||
| @ -651,6 +684,10 @@ int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE | |||||||
|      * newline characters and '\0' |      * newline characters and '\0' | ||||||
|      */ |      */ | ||||||
|     char s[ MBEDTLS_MPI_RW_BUFFER_SIZE ]; |     char s[ MBEDTLS_MPI_RW_BUFFER_SIZE ]; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  | 
 | ||||||
|  |     if( radix < 2 || radix > 16 ) | ||||||
|  |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| 
 | 
 | ||||||
|     memset( s, 0, sizeof( s ) ); |     memset( s, 0, sizeof( s ) ); | ||||||
| 
 | 
 | ||||||
| @ -687,6 +724,9 @@ int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t bu | |||||||
|     size_t i, j; |     size_t i, j; | ||||||
|     size_t const limbs = CHARS_TO_LIMBS( buflen ); |     size_t const limbs = CHARS_TO_LIMBS( buflen ); | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( buflen == 0 || buf != NULL ); | ||||||
|  | 
 | ||||||
|     /* Ensure that target MPI has exactly the necessary number of limbs */ |     /* Ensure that target MPI has exactly the necessary number of limbs */ | ||||||
|     if( X->n != limbs ) |     if( X->n != limbs ) | ||||||
|     { |     { | ||||||
| @ -711,11 +751,16 @@ cleanup: | |||||||
| int mbedtls_mpi_write_binary( const mbedtls_mpi *X, | int mbedtls_mpi_write_binary( const mbedtls_mpi *X, | ||||||
|                               unsigned char *buf, size_t buflen ) |                               unsigned char *buf, size_t buflen ) | ||||||
| { | { | ||||||
|     size_t stored_bytes = X->n * ciL; |     size_t stored_bytes; | ||||||
|     size_t bytes_to_copy; |     size_t bytes_to_copy; | ||||||
|     unsigned char *p; |     unsigned char *p; | ||||||
|     size_t i; |     size_t i; | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( buflen == 0 || buf != NULL ); | ||||||
|  | 
 | ||||||
|  |     stored_bytes = X->n * ciL; | ||||||
|  | 
 | ||||||
|     if( stored_bytes < buflen ) |     if( stored_bytes < buflen ) | ||||||
|     { |     { | ||||||
|         /* There is enough space in the output buffer. Write initial
 |         /* There is enough space in the output buffer. Write initial
 | ||||||
| @ -754,6 +799,7 @@ int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count ) | |||||||
|     int ret; |     int ret; | ||||||
|     size_t i, v0, t1; |     size_t i, v0, t1; | ||||||
|     mbedtls_mpi_uint r0 = 0, r1; |     mbedtls_mpi_uint r0 = 0, r1; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     v0 = count / (biL    ); |     v0 = count / (biL    ); | ||||||
|     t1 = count & (biL - 1); |     t1 = count & (biL - 1); | ||||||
| @ -803,6 +849,7 @@ int mbedtls_mpi_shift_r( mbedtls_mpi *X, size_t count ) | |||||||
| { | { | ||||||
|     size_t i, v0, v1; |     size_t i, v0, v1; | ||||||
|     mbedtls_mpi_uint r0 = 0, r1; |     mbedtls_mpi_uint r0 = 0, r1; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     v0 = count /  biL; |     v0 = count /  biL; | ||||||
|     v1 = count & (biL - 1); |     v1 = count & (biL - 1); | ||||||
| @ -845,6 +892,8 @@ int mbedtls_mpi_shift_r( mbedtls_mpi *X, size_t count ) | |||||||
| int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ) | int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ) | ||||||
| { | { | ||||||
|     size_t i, j; |     size_t i, j; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     for( i = X->n; i > 0; i-- ) |     for( i = X->n; i > 0; i-- ) | ||||||
|         if( X->p[i - 1] != 0 ) |         if( X->p[i - 1] != 0 ) | ||||||
| @ -875,6 +924,8 @@ int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ) | |||||||
| int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ) | int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ) | ||||||
| { | { | ||||||
|     size_t i, j; |     size_t i, j; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( Y != NULL ); | ||||||
| 
 | 
 | ||||||
|     for( i = X->n; i > 0; i-- ) |     for( i = X->n; i > 0; i-- ) | ||||||
|         if( X->p[i - 1] != 0 ) |         if( X->p[i - 1] != 0 ) | ||||||
| @ -909,6 +960,7 @@ int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z ) | |||||||
| { | { | ||||||
|     mbedtls_mpi Y; |     mbedtls_mpi Y; | ||||||
|     mbedtls_mpi_uint p[1]; |     mbedtls_mpi_uint p[1]; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
| 
 | 
 | ||||||
|     *p  = ( z < 0 ) ? -z : z; |     *p  = ( z < 0 ) ? -z : z; | ||||||
|     Y.s = ( z < 0 ) ? -1 : 1; |     Y.s = ( z < 0 ) ? -1 : 1; | ||||||
| @ -926,6 +978,9 @@ int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi | |||||||
|     int ret; |     int ret; | ||||||
|     size_t i, j; |     size_t i, j; | ||||||
|     mbedtls_mpi_uint *o, *p, c, tmp; |     mbedtls_mpi_uint *o, *p, c, tmp; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( X == B ) |     if( X == B ) | ||||||
|     { |     { | ||||||
| @ -1003,6 +1058,9 @@ int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi | |||||||
|     mbedtls_mpi TB; |     mbedtls_mpi TB; | ||||||
|     int ret; |     int ret; | ||||||
|     size_t n; |     size_t n; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( mbedtls_mpi_cmp_abs( A, B ) < 0 ) |     if( mbedtls_mpi_cmp_abs( A, B ) < 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_NEGATIVE_VALUE ); |         return( MBEDTLS_ERR_MPI_NEGATIVE_VALUE ); | ||||||
| @ -1043,8 +1101,12 @@ cleanup: | |||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_add_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) | int mbedtls_mpi_add_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) | ||||||
| { | { | ||||||
|     int ret, s = A->s; |     int ret, s; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|  |     s = A->s; | ||||||
|     if( A->s * B->s < 0 ) |     if( A->s * B->s < 0 ) | ||||||
|     { |     { | ||||||
|         if( mbedtls_mpi_cmp_abs( A, B ) >= 0 ) |         if( mbedtls_mpi_cmp_abs( A, B ) >= 0 ) | ||||||
| @ -1074,8 +1136,12 @@ cleanup: | |||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) | int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) | ||||||
| { | { | ||||||
|     int ret, s = A->s; |     int ret, s; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|  |     s = A->s; | ||||||
|     if( A->s * B->s > 0 ) |     if( A->s * B->s > 0 ) | ||||||
|     { |     { | ||||||
|         if( mbedtls_mpi_cmp_abs( A, B ) >= 0 ) |         if( mbedtls_mpi_cmp_abs( A, B ) >= 0 ) | ||||||
| @ -1107,6 +1173,8 @@ int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint | |||||||
| { | { | ||||||
|     mbedtls_mpi _B; |     mbedtls_mpi _B; | ||||||
|     mbedtls_mpi_uint p[1]; |     mbedtls_mpi_uint p[1]; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
| 
 | 
 | ||||||
|     p[0] = ( b < 0 ) ? -b : b; |     p[0] = ( b < 0 ) ? -b : b; | ||||||
|     _B.s = ( b < 0 ) ? -1 : 1; |     _B.s = ( b < 0 ) ? -1 : 1; | ||||||
| @ -1123,6 +1191,8 @@ int mbedtls_mpi_sub_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint | |||||||
| { | { | ||||||
|     mbedtls_mpi _B; |     mbedtls_mpi _B; | ||||||
|     mbedtls_mpi_uint p[1]; |     mbedtls_mpi_uint p[1]; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
| 
 | 
 | ||||||
|     p[0] = ( b < 0 ) ? -b : b; |     p[0] = ( b < 0 ) ? -b : b; | ||||||
|     _B.s = ( b < 0 ) ? -1 : 1; |     _B.s = ( b < 0 ) ? -1 : 1; | ||||||
| @ -1212,6 +1282,9 @@ int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi | |||||||
|     int ret; |     int ret; | ||||||
|     size_t i, j; |     size_t i, j; | ||||||
|     mbedtls_mpi TA, TB; |     mbedtls_mpi TA, TB; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|     mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); |     mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); | ||||||
| 
 | 
 | ||||||
| @ -1248,6 +1321,8 @@ int mbedtls_mpi_mul_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint | |||||||
| { | { | ||||||
|     mbedtls_mpi _B; |     mbedtls_mpi _B; | ||||||
|     mbedtls_mpi_uint p[1]; |     mbedtls_mpi_uint p[1]; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
| 
 | 
 | ||||||
|     _B.s = 1; |     _B.s = 1; | ||||||
|     _B.n = 1; |     _B.n = 1; | ||||||
| @ -1356,11 +1431,14 @@ static mbedtls_mpi_uint mbedtls_int_div_int( mbedtls_mpi_uint u1, | |||||||
| /*
 | /*
 | ||||||
|  * Division by mbedtls_mpi: A = Q * B + R  (HAC 14.20) |  * Division by mbedtls_mpi: A = Q * B + R  (HAC 14.20) | ||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ) | int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, | ||||||
|  |                          const mbedtls_mpi *B ) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     size_t i, n, t, k; |     size_t i, n, t, k; | ||||||
|     mbedtls_mpi X, Y, Z, T1, T2; |     mbedtls_mpi X, Y, Z, T1, T2; | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( mbedtls_mpi_cmp_int( B, 0 ) == 0 ) |     if( mbedtls_mpi_cmp_int( B, 0 ) == 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_DIVISION_BY_ZERO ); |         return( MBEDTLS_ERR_MPI_DIVISION_BY_ZERO ); | ||||||
| @ -1471,10 +1549,13 @@ cleanup: | |||||||
| /*
 | /*
 | ||||||
|  * Division by int: A = Q * b + R |  * Division by int: A = Q * b + R | ||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, mbedtls_mpi_sint b ) | int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, | ||||||
|  |                          const mbedtls_mpi *A, | ||||||
|  |                          mbedtls_mpi_sint b ) | ||||||
| { | { | ||||||
|     mbedtls_mpi _B; |     mbedtls_mpi _B; | ||||||
|     mbedtls_mpi_uint p[1]; |     mbedtls_mpi_uint p[1]; | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
| 
 | 
 | ||||||
|     p[0] = ( b < 0 ) ? -b : b; |     p[0] = ( b < 0 ) ? -b : b; | ||||||
|     _B.s = ( b < 0 ) ? -1 : 1; |     _B.s = ( b < 0 ) ? -1 : 1; | ||||||
| @ -1490,6 +1571,9 @@ int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, m | |||||||
| int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ) | int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|  |     MPI_VALIDATE_RET( R != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( mbedtls_mpi_cmp_int( B, 0 ) < 0 ) |     if( mbedtls_mpi_cmp_int( B, 0 ) < 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_NEGATIVE_VALUE ); |         return( MBEDTLS_ERR_MPI_NEGATIVE_VALUE ); | ||||||
| @ -1514,6 +1598,8 @@ int mbedtls_mpi_mod_int( mbedtls_mpi_uint *r, const mbedtls_mpi *A, mbedtls_mpi_ | |||||||
| { | { | ||||||
|     size_t i; |     size_t i; | ||||||
|     mbedtls_mpi_uint x, y, z; |     mbedtls_mpi_uint x, y, z; | ||||||
|  |     MPI_VALIDATE_RET( r != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( b == 0 ) |     if( b == 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_DIVISION_BY_ZERO ); |         return( MBEDTLS_ERR_MPI_DIVISION_BY_ZERO ); | ||||||
| @ -1627,7 +1713,8 @@ static int mpi_montmul( mbedtls_mpi *A, const mbedtls_mpi *B, const mbedtls_mpi | |||||||
| /*
 | /*
 | ||||||
|  * Montgomery reduction: A = A * R^-1 mod N |  * Montgomery reduction: A = A * R^-1 mod N | ||||||
|  */ |  */ | ||||||
| static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, mbedtls_mpi_uint mm, const mbedtls_mpi *T ) | static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, | ||||||
|  |                         mbedtls_mpi_uint mm, const mbedtls_mpi *T ) | ||||||
| { | { | ||||||
|     mbedtls_mpi_uint z = 1; |     mbedtls_mpi_uint z = 1; | ||||||
|     mbedtls_mpi U; |     mbedtls_mpi U; | ||||||
| @ -1641,7 +1728,9 @@ static int mpi_montred( mbedtls_mpi *A, const mbedtls_mpi *N, mbedtls_mpi_uint m | |||||||
| /*
 | /*
 | ||||||
|  * Sliding-window exponentiation: X = A^E mod N  (HAC 14.85) |  * Sliding-window exponentiation: X = A^E mod N  (HAC 14.85) | ||||||
|  */ |  */ | ||||||
| int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, mbedtls_mpi *_RR ) | int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, | ||||||
|  |                          const mbedtls_mpi *E, const mbedtls_mpi *N, | ||||||
|  |                          mbedtls_mpi *_RR ) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     size_t wbits, wsize, one = 1; |     size_t wbits, wsize, one = 1; | ||||||
| @ -1651,6 +1740,11 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi | |||||||
|     mbedtls_mpi RR, T, W[ 2 << MBEDTLS_MPI_WINDOW_SIZE ], Apos; |     mbedtls_mpi RR, T, W[ 2 << MBEDTLS_MPI_WINDOW_SIZE ], Apos; | ||||||
|     int neg; |     int neg; | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( E != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( N != NULL ); | ||||||
|  | 
 | ||||||
|     if( mbedtls_mpi_cmp_int( N, 0 ) <= 0 || ( N->p[0] & 1 ) == 0 ) |     if( mbedtls_mpi_cmp_int( N, 0 ) <= 0 || ( N->p[0] & 1 ) == 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| 
 | 
 | ||||||
| @ -1855,6 +1949,10 @@ int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B | |||||||
|     size_t lz, lzt; |     size_t lz, lzt; | ||||||
|     mbedtls_mpi TG, TA, TB; |     mbedtls_mpi TG, TA, TB; | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( G != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( B != NULL ); | ||||||
|  | 
 | ||||||
|     mbedtls_mpi_init( &TG ); mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); |     mbedtls_mpi_init( &TG ); mbedtls_mpi_init( &TA ); mbedtls_mpi_init( &TB ); | ||||||
| 
 | 
 | ||||||
|     MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TA, A ) ); |     MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TA, A ) ); | ||||||
| @ -1911,6 +2009,8 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, | |||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     unsigned char buf[MBEDTLS_MPI_MAX_SIZE]; |     unsigned char buf[MBEDTLS_MPI_MAX_SIZE]; | ||||||
|  |     MPI_VALIDATE_RET( X     != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( f_rng != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( size > MBEDTLS_MPI_MAX_SIZE ) |     if( size > MBEDTLS_MPI_MAX_SIZE ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| @ -1930,6 +2030,9 @@ int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi | |||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2; |     mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2; | ||||||
|  |     MPI_VALIDATE_RET( X != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( A != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( N != NULL ); | ||||||
| 
 | 
 | ||||||
|     if( mbedtls_mpi_cmp_int( N, 1 ) <= 0 ) |     if( mbedtls_mpi_cmp_int( N, 1 ) <= 0 ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| @ -2089,7 +2192,11 @@ static int mpi_miller_rabin( const mbedtls_mpi *X, size_t rounds, | |||||||
|     size_t i, j, k, s; |     size_t i, j, k, s; | ||||||
|     mbedtls_mpi W, R, T, A, RR; |     mbedtls_mpi W, R, T, A, RR; | ||||||
| 
 | 
 | ||||||
|     mbedtls_mpi_init( &W ); mbedtls_mpi_init( &R ); mbedtls_mpi_init( &T ); mbedtls_mpi_init( &A ); |     MPI_VALIDATE_RET( X     != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( f_rng != NULL ); | ||||||
|  | 
 | ||||||
|  |     mbedtls_mpi_init( &W ); mbedtls_mpi_init( &R ); | ||||||
|  |     mbedtls_mpi_init( &T ); mbedtls_mpi_init( &A ); | ||||||
|     mbedtls_mpi_init( &RR ); |     mbedtls_mpi_init( &RR ); | ||||||
| 
 | 
 | ||||||
|     /*
 |     /*
 | ||||||
| @ -2161,7 +2268,8 @@ static int mpi_miller_rabin( const mbedtls_mpi *X, size_t rounds, | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| cleanup: | cleanup: | ||||||
|     mbedtls_mpi_free( &W ); mbedtls_mpi_free( &R ); mbedtls_mpi_free( &T ); mbedtls_mpi_free( &A ); |     mbedtls_mpi_free( &W ); mbedtls_mpi_free( &R ); | ||||||
|  |     mbedtls_mpi_free( &T ); mbedtls_mpi_free( &A ); | ||||||
|     mbedtls_mpi_free( &RR ); |     mbedtls_mpi_free( &RR ); | ||||||
| 
 | 
 | ||||||
|     return( ret ); |     return( ret ); | ||||||
| @ -2176,6 +2284,8 @@ int mbedtls_mpi_is_prime_ext( const mbedtls_mpi *X, int rounds, | |||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|     mbedtls_mpi XX; |     mbedtls_mpi XX; | ||||||
|  |     MPI_VALIDATE_RET( X     != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( f_rng != NULL ); | ||||||
| 
 | 
 | ||||||
|     XX.s = 1; |     XX.s = 1; | ||||||
|     XX.n = X->n; |     XX.n = X->n; | ||||||
| @ -2207,12 +2317,15 @@ int mbedtls_mpi_is_prime( const mbedtls_mpi *X, | |||||||
|                   int (*f_rng)(void *, unsigned char *, size_t), |                   int (*f_rng)(void *, unsigned char *, size_t), | ||||||
|                   void *p_rng ) |                   void *p_rng ) | ||||||
| { | { | ||||||
|  |     MPI_VALIDATE_RET( X     != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( f_rng != NULL ); | ||||||
|  | 
 | ||||||
|     /*
 |     /*
 | ||||||
|      * In the past our key generation aimed for an error rate of at most |      * In the past our key generation aimed for an error rate of at most | ||||||
|      * 2^-80. Since this function is deprecated, aim for the same certainty |      * 2^-80. Since this function is deprecated, aim for the same certainty | ||||||
|      * here as well. |      * here as well. | ||||||
|      */ |      */ | ||||||
|     return mbedtls_mpi_is_prime_ext( X, 40, f_rng, p_rng ); |     return( mbedtls_mpi_is_prime_ext( X, 40, f_rng, p_rng ) ); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| @ -2240,6 +2353,9 @@ int mbedtls_mpi_gen_prime( mbedtls_mpi *X, size_t nbits, int flags, | |||||||
|     mbedtls_mpi_uint r; |     mbedtls_mpi_uint r; | ||||||
|     mbedtls_mpi Y; |     mbedtls_mpi Y; | ||||||
| 
 | 
 | ||||||
|  |     MPI_VALIDATE_RET( X     != NULL ); | ||||||
|  |     MPI_VALIDATE_RET( f_rng != NULL ); | ||||||
|  | 
 | ||||||
|     if( nbits < 3 || nbits > MBEDTLS_MPI_MAX_BITS ) |     if( nbits < 3 || nbits > MBEDTLS_MPI_MAX_BITS ) | ||||||
|         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA ); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,9 @@ | |||||||
|  | MPI - Valid parameters | ||||||
|  | mpi_valid_param: | ||||||
|  | 
 | ||||||
|  | MPI - Invalid parameters | ||||||
|  | mpi_invalid_param: | ||||||
|  | 
 | ||||||
| Arguments with no value | Arguments with no value | ||||||
| mpi_null: | mpi_null: | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -50,6 +50,220 @@ int mbedtls_test_mpi_miller_rabin_determinizer( void* state, | |||||||
|  * END_DEPENDENCIES |  * END_DEPENDENCIES | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | /* BEGIN_CASE */ | ||||||
|  | void mpi_valid_param( ) | ||||||
|  | { | ||||||
|  |     TEST_VALID_PARAM( mbedtls_mpi_free( NULL ) ); | ||||||
|  | } | ||||||
|  | /* END_CASE */ | ||||||
|  | 
 | ||||||
|  | /* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */ | ||||||
|  | void mpi_invalid_param( ) | ||||||
|  | { | ||||||
|  |     mbedtls_mpi X; | ||||||
|  |     const char *s_in = "00101000101010"; | ||||||
|  |     char s_out[16] = { 0 }; | ||||||
|  |     unsigned char u_out[16] = { 0 }; | ||||||
|  |     unsigned char u_in[16] = { 0 }; | ||||||
|  |     size_t olen; | ||||||
|  |     mbedtls_mpi_uint mpi_uint; | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM( mbedtls_mpi_init( NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_grow( NULL, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_copy( NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_copy( &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM( mbedtls_mpi_swap( NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM( mbedtls_mpi_swap( &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_safe_cond_assign( NULL, &X, 0 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_safe_cond_assign( &X, NULL, 0 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_safe_cond_swap( NULL, &X, 0 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_safe_cond_swap( &X, NULL, 0 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_lset( NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_get_bit( NULL, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_set_bit( NULL, 42, 0 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_string( NULL, 2, s_in ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_string( &X, 2, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_string( NULL, 2, | ||||||
|  |                                                       s_out, sizeof( s_out ), | ||||||
|  |                                                       &olen ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_string( &X, 2, | ||||||
|  |                                                       NULL, sizeof( s_out ), | ||||||
|  |                                                       &olen ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_string( &X, 2, | ||||||
|  |                                                       s_out, sizeof( s_out ), | ||||||
|  |                                                       NULL ) ); | ||||||
|  | 
 | ||||||
|  | #if defined(MBEDTLS_FS_IO) | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_file( NULL, 2, stdin ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_file( &X, 2, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_file( "", NULL, 2, NULL ) ); | ||||||
|  | #endif /* MBEDTLS_FS_IO */ | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_binary( NULL, u_in, | ||||||
|  |                                                      sizeof( u_in ) ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_read_binary( &X, NULL, | ||||||
|  |                                                      sizeof( u_in ) ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_binary( NULL, u_out, | ||||||
|  |                                                       sizeof( u_out ) ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_write_binary( &X, NULL, | ||||||
|  |                                                       sizeof( u_out ) ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_shift_l( NULL, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_shift_r( NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_cmp_abs( NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_cmp_abs( &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_cmp_mpi( NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_cmp_mpi( &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_cmp_int( NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_abs( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_abs( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_abs( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_abs( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_abs( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_abs( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_mpi( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_mpi( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_mpi( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_mpi( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_mpi( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_mpi( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_int( NULL, &X, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_add_int( &X, NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_int( NULL, &X, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_sub_int( &X, NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mul_mpi( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mul_mpi( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mul_mpi( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mul_int( NULL, &X, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mul_int( &X, NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_div_mpi( &X, &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_div_mpi( &X, &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_div_int( &X, &X, NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( 0, mbedtls_mpi_lsb( NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mod_mpi( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mod_mpi( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mod_mpi( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mod_int( NULL, &X, 42 ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_mod_int( &mpi_uint, NULL, 42 ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_exp_mod( NULL, &X, &X, &X, NULL ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_exp_mod( &X, NULL, &X, &X, NULL ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_exp_mod( &X, &X, NULL, &X, NULL ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_exp_mod( &X, &X, &X, NULL, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_fill_random( NULL, 42, rnd_std_rand, | ||||||
|  |                                                      NULL ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_fill_random( &X, 42, NULL, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_gcd( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_gcd( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_gcd( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_inv_mod( NULL, &X, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_inv_mod( &X, NULL, &X ) ); | ||||||
|  |     TEST_INVALID_PARAM_RET( MBEDTLS_ERR_MPI_BAD_INPUT_DATA, | ||||||
|  |                             mbedtls_mpi_inv_mod( &X, &X, NULL ) ); | ||||||
|  | 
 | ||||||
|  | exit: | ||||||
|  |     return; | ||||||
|  | } | ||||||
|  | /* END_CASE */ | ||||||
|  | 
 | ||||||
| /* BEGIN_CASE */ | /* BEGIN_CASE */ | ||||||
| void mpi_null(  ) | void mpi_null(  ) | ||||||
| { | { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Simon Butcher
						Simon Butcher