Lines Matching refs:X
82 void mbedtls_mpi_init( mbedtls_mpi *X ) in mbedtls_mpi_init() argument
84 if( X == NULL ) in mbedtls_mpi_init()
87 X->s = 1; in mbedtls_mpi_init()
88 X->n = 0; in mbedtls_mpi_init()
89 X->p = NULL; in mbedtls_mpi_init()
95 void mbedtls_mpi_free( mbedtls_mpi *X ) in mbedtls_mpi_free() argument
97 if( X == NULL ) in mbedtls_mpi_free()
100 if( X->p != NULL ) in mbedtls_mpi_free()
102 mbedtls_mpi_zeroize( X->p, X->n ); in mbedtls_mpi_free()
103 mbedtls_free( X->p ); in mbedtls_mpi_free()
106 X->s = 1; in mbedtls_mpi_free()
107 X->n = 0; in mbedtls_mpi_free()
108 X->p = NULL; in mbedtls_mpi_free()
114 int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs ) in mbedtls_mpi_grow() argument
121 if( X->n < nblimbs ) in mbedtls_mpi_grow()
126 if( X->p != NULL ) in mbedtls_mpi_grow()
128 memcpy( p, X->p, X->n * ciL ); in mbedtls_mpi_grow()
129 mbedtls_mpi_zeroize( X->p, X->n ); in mbedtls_mpi_grow()
130 mbedtls_free( X->p ); in mbedtls_mpi_grow()
133 X->n = nblimbs; in mbedtls_mpi_grow()
134 X->p = p; in mbedtls_mpi_grow()
144 int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ) in mbedtls_mpi_shrink() argument
150 if( X->n <= nblimbs ) in mbedtls_mpi_shrink()
151 return( mbedtls_mpi_grow( X, nblimbs ) ); in mbedtls_mpi_shrink()
153 for( i = X->n - 1; i > 0; i-- ) in mbedtls_mpi_shrink()
154 if( X->p[i] != 0 ) in mbedtls_mpi_shrink()
164 if( X->p != NULL ) in mbedtls_mpi_shrink()
166 memcpy( p, X->p, i * ciL ); in mbedtls_mpi_shrink()
167 mbedtls_mpi_zeroize( X->p, X->n ); in mbedtls_mpi_shrink()
168 mbedtls_free( X->p ); in mbedtls_mpi_shrink()
171 X->n = i; in mbedtls_mpi_shrink()
172 X->p = p; in mbedtls_mpi_shrink()
180 int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ) in mbedtls_mpi_copy() argument
185 if( X == Y ) in mbedtls_mpi_copy()
190 mbedtls_mpi_free( X ); in mbedtls_mpi_copy()
199 X->s = Y->s; in mbedtls_mpi_copy()
201 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, i ) ); in mbedtls_mpi_copy()
203 memset( X->p, 0, X->n * ciL ); in mbedtls_mpi_copy()
204 memcpy( X->p, Y->p, i * ciL ); in mbedtls_mpi_copy()
214 void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ) in mbedtls_mpi_swap() argument
218 memcpy( &T, X, sizeof( mbedtls_mpi ) ); in mbedtls_mpi_swap()
219 memcpy( X, Y, sizeof( mbedtls_mpi ) ); in mbedtls_mpi_swap()
228 int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign ) in mbedtls_mpi_safe_cond_assign() argument
236 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); in mbedtls_mpi_safe_cond_assign()
238 X->s = X->s * ( 1 - assign ) + Y->s * assign; in mbedtls_mpi_safe_cond_assign()
241 X->p[i] = X->p[i] * ( 1 - assign ) + Y->p[i] * assign; in mbedtls_mpi_safe_cond_assign()
243 for( ; i < X->n; i++ ) in mbedtls_mpi_safe_cond_assign()
244 X->p[i] *= ( 1 - assign ); in mbedtls_mpi_safe_cond_assign()
256 int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char swap ) in mbedtls_mpi_safe_cond_swap() argument
262 if( X == Y ) in mbedtls_mpi_safe_cond_swap()
268 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, Y->n ) ); in mbedtls_mpi_safe_cond_swap()
269 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( Y, X->n ) ); in mbedtls_mpi_safe_cond_swap()
271 s = X->s; in mbedtls_mpi_safe_cond_swap()
272 X->s = X->s * ( 1 - swap ) + Y->s * swap; in mbedtls_mpi_safe_cond_swap()
276 for( i = 0; i < X->n; i++ ) in mbedtls_mpi_safe_cond_swap()
278 tmp = X->p[i]; in mbedtls_mpi_safe_cond_swap()
279 X->p[i] = X->p[i] * ( 1 - swap ) + Y->p[i] * swap; in mbedtls_mpi_safe_cond_swap()
290 int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ) in mbedtls_mpi_lset() argument
294 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) ); in mbedtls_mpi_lset()
295 memset( X->p, 0, X->n * ciL ); in mbedtls_mpi_lset()
297 X->p[0] = ( z < 0 ) ? -z : z; in mbedtls_mpi_lset()
298 X->s = ( z < 0 ) ? -1 : 1; in mbedtls_mpi_lset()
308 int mbedtls_mpi_get_bit( const mbedtls_mpi *X, size_t pos ) in mbedtls_mpi_get_bit() argument
310 if( X->n * biL <= pos ) in mbedtls_mpi_get_bit()
313 return( ( X->p[pos / biL] >> ( pos % biL ) ) & 0x01 ); in mbedtls_mpi_get_bit()
319 int mbedtls_mpi_set_bit( mbedtls_mpi *X, size_t pos, unsigned char val ) in mbedtls_mpi_set_bit() argument
328 if( X->n * biL <= pos ) in mbedtls_mpi_set_bit()
333 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, off + 1 ) ); in mbedtls_mpi_set_bit()
336 X->p[off] &= ~( (mbedtls_mpi_uint) 0x01 << idx ); in mbedtls_mpi_set_bit()
337 X->p[off] |= (mbedtls_mpi_uint) val << idx; in mbedtls_mpi_set_bit()
347 size_t mbedtls_mpi_lsb( const mbedtls_mpi *X ) in mbedtls_mpi_lsb() argument
351 for( i = 0; i < X->n; i++ ) in mbedtls_mpi_lsb()
353 if( ( ( X->p[i] >> j ) & 1 ) != 0 ) in mbedtls_mpi_lsb()
380 size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X ) in mbedtls_mpi_bitlen() argument
384 if( X->n == 0 ) in mbedtls_mpi_bitlen()
387 for( i = X->n - 1; i > 0; i-- ) in mbedtls_mpi_bitlen()
388 if( X->p[i] != 0 ) in mbedtls_mpi_bitlen()
391 j = biL - mbedtls_clz( X->p[i] ); in mbedtls_mpi_bitlen()
399 size_t mbedtls_mpi_size( const mbedtls_mpi *X ) in mbedtls_mpi_size() argument
401 return( ( mbedtls_mpi_bitlen( X ) + 7 ) >> 3 ); in mbedtls_mpi_size()
424 int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ) in mbedtls_mpi_read_string() argument
445 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, n ) ); in mbedtls_mpi_read_string()
446 MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); in mbedtls_mpi_read_string()
452 X->s = -1; in mbedtls_mpi_read_string()
457 X->p[j / ( 2 * ciL )] |= d << ( ( j % ( 2 * ciL ) ) << 2 ); in mbedtls_mpi_read_string()
462 MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); in mbedtls_mpi_read_string()
468 X->s = -1; in mbedtls_mpi_read_string()
473 MBEDTLS_MPI_CHK( mbedtls_mpi_mul_int( &T, X, radix ) ); in mbedtls_mpi_read_string()
475 if( X->s == 1 ) in mbedtls_mpi_read_string()
477 MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, &T, d ) ); in mbedtls_mpi_read_string()
481 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( X, &T, d ) ); in mbedtls_mpi_read_string()
496 static int mpi_write_hlp( mbedtls_mpi *X, int radix, char **p ) in mpi_write_hlp() argument
504 MBEDTLS_MPI_CHK( mbedtls_mpi_mod_int( &r, X, radix ) ); in mpi_write_hlp()
505 MBEDTLS_MPI_CHK( mbedtls_mpi_div_int( X, NULL, X, radix ) ); in mpi_write_hlp()
507 if( mbedtls_mpi_cmp_int( X, 0 ) != 0 ) in mpi_write_hlp()
508 MBEDTLS_MPI_CHK( mpi_write_hlp( X, radix, p ) ); in mpi_write_hlp()
523 int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, in mbedtls_mpi_write_string() argument
534 n = mbedtls_mpi_bitlen( X ); in mbedtls_mpi_write_string()
553 if( X->s == -1 ) in mbedtls_mpi_write_string()
561 for( i = X->n, k = 0; i > 0; i-- ) in mbedtls_mpi_write_string()
565 c = ( X->p[i - 1] >> ( ( j - 1 ) << 3) ) & 0xFF; in mbedtls_mpi_write_string()
578 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &T, X ) ); in mbedtls_mpi_write_string()
600 int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin ) in mbedtls_mpi_read_file() argument
627 return( mbedtls_mpi_read_string( X, radix, p + 1 ) ); in mbedtls_mpi_read_file()
633 int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout ) in mbedtls_mpi_write_file() argument
645 MBEDTLS_MPI_CHK( mbedtls_mpi_write_string( X, radix, s, sizeof( s ) - 2, &n ) ); in mbedtls_mpi_write_file()
672 int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen ) in mbedtls_mpi_read_binary() argument
681 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, CHARS_TO_LIMBS( buflen - n ) ) ); in mbedtls_mpi_read_binary()
682 MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); in mbedtls_mpi_read_binary()
685 X->p[j / ciL] |= ((mbedtls_mpi_uint) buf[i - 1]) << ((j % ciL) << 3); in mbedtls_mpi_read_binary()
695 int mbedtls_mpi_write_binary( const mbedtls_mpi *X, unsigned char *buf, size_t buflen ) in mbedtls_mpi_write_binary() argument
699 n = mbedtls_mpi_size( X ); in mbedtls_mpi_write_binary()
708 buf[i] = (unsigned char)( X->p[j / ciL] >> ((j % ciL) << 3) ); in mbedtls_mpi_write_binary()
717 int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count ) in mbedtls_mpi_shift_l() argument
726 i = mbedtls_mpi_bitlen( X ) + count; in mbedtls_mpi_shift_l()
728 if( X->n * biL < i ) in mbedtls_mpi_shift_l()
729 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, BITS_TO_LIMBS( i ) ) ); in mbedtls_mpi_shift_l()
738 for( i = X->n; i > v0; i-- ) in mbedtls_mpi_shift_l()
739 X->p[i - 1] = X->p[i - v0 - 1]; in mbedtls_mpi_shift_l()
742 X->p[i - 1] = 0; in mbedtls_mpi_shift_l()
750 for( i = v0; i < X->n; i++ ) in mbedtls_mpi_shift_l()
752 r1 = X->p[i] >> (biL - t1); in mbedtls_mpi_shift_l()
753 X->p[i] <<= t1; in mbedtls_mpi_shift_l()
754 X->p[i] |= r0; in mbedtls_mpi_shift_l()
767 int mbedtls_mpi_shift_r( mbedtls_mpi *X, size_t count ) in mbedtls_mpi_shift_r() argument
775 if( v0 > X->n || ( v0 == X->n && v1 > 0 ) ) in mbedtls_mpi_shift_r()
776 return mbedtls_mpi_lset( X, 0 ); in mbedtls_mpi_shift_r()
783 for( i = 0; i < X->n - v0; i++ ) in mbedtls_mpi_shift_r()
784 X->p[i] = X->p[i + v0]; in mbedtls_mpi_shift_r()
786 for( ; i < X->n; i++ ) in mbedtls_mpi_shift_r()
787 X->p[i] = 0; in mbedtls_mpi_shift_r()
795 for( i = X->n; i > 0; i-- ) in mbedtls_mpi_shift_r()
797 r1 = X->p[i - 1] << (biL - v1); in mbedtls_mpi_shift_r()
798 X->p[i - 1] >>= v1; in mbedtls_mpi_shift_r()
799 X->p[i - 1] |= r0; in mbedtls_mpi_shift_r()
810 int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ) in mbedtls_mpi_cmp_abs() argument
814 for( i = X->n; i > 0; i-- ) in mbedtls_mpi_cmp_abs()
815 if( X->p[i - 1] != 0 ) in mbedtls_mpi_cmp_abs()
830 if( X->p[i - 1] > Y->p[i - 1] ) return( 1 ); in mbedtls_mpi_cmp_abs()
831 if( X->p[i - 1] < Y->p[i - 1] ) return( -1 ); in mbedtls_mpi_cmp_abs()
840 int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ) in mbedtls_mpi_cmp_mpi() argument
844 for( i = X->n; i > 0; i-- ) in mbedtls_mpi_cmp_mpi()
845 if( X->p[i - 1] != 0 ) in mbedtls_mpi_cmp_mpi()
855 if( i > j ) return( X->s ); in mbedtls_mpi_cmp_mpi()
858 if( X->s > 0 && Y->s < 0 ) return( 1 ); in mbedtls_mpi_cmp_mpi()
859 if( Y->s > 0 && X->s < 0 ) return( -1 ); in mbedtls_mpi_cmp_mpi()
863 if( X->p[i - 1] > Y->p[i - 1] ) return( X->s ); in mbedtls_mpi_cmp_mpi()
864 if( X->p[i - 1] < Y->p[i - 1] ) return( -X->s ); in mbedtls_mpi_cmp_mpi()
873 int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z ) in mbedtls_mpi_cmp_int() argument
883 return( mbedtls_mpi_cmp_mpi( X, &Y ) ); in mbedtls_mpi_cmp_int()
889 int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) in mbedtls_mpi_add_abs() argument
895 if( X == B ) in mbedtls_mpi_add_abs()
897 const mbedtls_mpi *T = A; A = X; B = T; in mbedtls_mpi_add_abs()
900 if( X != A ) in mbedtls_mpi_add_abs()
901 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, A ) ); in mbedtls_mpi_add_abs()
906 X->s = 1; in mbedtls_mpi_add_abs()
912 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, j ) ); in mbedtls_mpi_add_abs()
914 o = B->p; p = X->p; c = 0; in mbedtls_mpi_add_abs()
928 if( i >= X->n ) in mbedtls_mpi_add_abs()
930 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, i + 1 ) ); in mbedtls_mpi_add_abs()
931 p = X->p + i; in mbedtls_mpi_add_abs()
966 int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) in mbedtls_mpi_sub_abs() argument
977 if( X == B ) in mbedtls_mpi_sub_abs()
983 if( X != A ) in mbedtls_mpi_sub_abs()
984 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, A ) ); in mbedtls_mpi_sub_abs()
989 X->s = 1; in mbedtls_mpi_sub_abs()
997 mpi_sub_hlp( n, B->p, X->p ); in mbedtls_mpi_sub_abs()
1009 int mbedtls_mpi_add_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) in mbedtls_mpi_add_mpi() argument
1017 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( X, A, B ) ); in mbedtls_mpi_add_mpi()
1018 X->s = s; in mbedtls_mpi_add_mpi()
1022 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( X, B, A ) ); in mbedtls_mpi_add_mpi()
1023 X->s = -s; in mbedtls_mpi_add_mpi()
1028 MBEDTLS_MPI_CHK( mbedtls_mpi_add_abs( X, A, B ) ); in mbedtls_mpi_add_mpi()
1029 X->s = s; in mbedtls_mpi_add_mpi()
1040 int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) in mbedtls_mpi_sub_mpi() argument
1048 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( X, A, B ) ); in mbedtls_mpi_sub_mpi()
1049 X->s = s; in mbedtls_mpi_sub_mpi()
1053 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_abs( X, B, A ) ); in mbedtls_mpi_sub_mpi()
1054 X->s = -s; in mbedtls_mpi_sub_mpi()
1059 MBEDTLS_MPI_CHK( mbedtls_mpi_add_abs( X, A, B ) ); in mbedtls_mpi_sub_mpi()
1060 X->s = s; in mbedtls_mpi_sub_mpi()
1071 int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ) in mbedtls_mpi_add_int() argument
1081 return( mbedtls_mpi_add_mpi( X, A, &_B ) ); in mbedtls_mpi_add_int()
1087 int mbedtls_mpi_sub_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ) in mbedtls_mpi_sub_int() argument
1097 return( mbedtls_mpi_sub_mpi( X, A, &_B ) ); in mbedtls_mpi_sub_int()
1175 int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ) in mbedtls_mpi_mul_mpi() argument
1183 if( X == A ) { MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TA, A ) ); A = &TA; } in mbedtls_mpi_mul_mpi()
1184 if( X == B ) { MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &TB, B ) ); B = &TB; } in mbedtls_mpi_mul_mpi()
1194 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, i + j ) ); in mbedtls_mpi_mul_mpi()
1195 MBEDTLS_MPI_CHK( mbedtls_mpi_lset( X, 0 ) ); in mbedtls_mpi_mul_mpi()
1198 mpi_mul_hlp( i - 1, A->p, X->p + j - 1, B->p[j - 1] ); in mbedtls_mpi_mul_mpi()
1200 X->s = A->s * B->s; in mbedtls_mpi_mul_mpi()
1212 int mbedtls_mpi_mul_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b ) in mbedtls_mpi_mul_int() argument
1222 return( mbedtls_mpi_mul_mpi( X, A, &_B ) ); in mbedtls_mpi_mul_int()
1328 mbedtls_mpi X, Y, Z, T1, T2; in mbedtls_mpi_div_mpi() local
1333 mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); in mbedtls_mpi_div_mpi()
1343 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &X, A ) ); in mbedtls_mpi_div_mpi()
1345 X.s = Y.s = 1; in mbedtls_mpi_div_mpi()
1356 MBEDTLS_MPI_CHK( mbedtls_mpi_shift_l( &X, k ) ); in mbedtls_mpi_div_mpi()
1361 n = X.n - 1; in mbedtls_mpi_div_mpi()
1365 while( mbedtls_mpi_cmp_mpi( &X, &Y ) >= 0 ) in mbedtls_mpi_div_mpi()
1368 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &X, &X, &Y ) ); in mbedtls_mpi_div_mpi()
1374 if( X.p[i] >= Y.p[t] ) in mbedtls_mpi_div_mpi()
1378 Z.p[i - t - 1] = mbedtls_int_div_int( X.p[i], X.p[i - 1], in mbedtls_mpi_div_mpi()
1393 T2.p[0] = ( i < 2 ) ? 0 : X.p[i - 2]; in mbedtls_mpi_div_mpi()
1394 T2.p[1] = ( i < 1 ) ? 0 : X.p[i - 1]; in mbedtls_mpi_div_mpi()
1395 T2.p[2] = X.p[i]; in mbedtls_mpi_div_mpi()
1401 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &X, &X, &T1 ) ); in mbedtls_mpi_div_mpi()
1403 if( mbedtls_mpi_cmp_int( &X, 0 ) < 0 ) in mbedtls_mpi_div_mpi()
1407 MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &X, &X, &T1 ) ); in mbedtls_mpi_div_mpi()
1420 MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &X, k ) ); in mbedtls_mpi_div_mpi()
1421 X.s = A->s; in mbedtls_mpi_div_mpi()
1422 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( R, &X ) ); in mbedtls_mpi_div_mpi()
1430 mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &Z ); in mbedtls_mpi_div_mpi()
1609 int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_… in mbedtls_mpi_exp_mod() argument
1642 MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, j ) ); in mbedtls_mpi_exp_mod()
1685 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, &RR ) ); in mbedtls_mpi_exp_mod()
1686 MBEDTLS_MPI_CHK( mpi_montred( X, N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1746 MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1764 MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1769 MBEDTLS_MPI_CHK( mpi_montmul( X, &W[wbits], N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1782 MBEDTLS_MPI_CHK( mpi_montmul( X, X, N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1787 MBEDTLS_MPI_CHK( mpi_montmul( X, &W[1], N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1793 MBEDTLS_MPI_CHK( mpi_montred( X, N, mm, &T ) ); in mbedtls_mpi_exp_mod()
1797 X->s = -1; in mbedtls_mpi_exp_mod()
1798 MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( X, N, X ) ); in mbedtls_mpi_exp_mod()
1873 int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, in mbedtls_mpi_fill_random() argument
1884 MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( X, buf, size ) ); in mbedtls_mpi_fill_random()
1893 int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N ) in mbedtls_mpi_inv_mod() argument
1974 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( X, &V1 ) ); in mbedtls_mpi_inv_mod()
2021 static int mpi_check_small_factors( const mbedtls_mpi *X ) in mpi_check_small_factors() argument
2027 if( ( X->p[0] & 1 ) == 0 ) in mpi_check_small_factors()
2032 if( mbedtls_mpi_cmp_int( X, small_prime[i] ) <= 0 ) in mpi_check_small_factors()
2035 MBEDTLS_MPI_CHK( mbedtls_mpi_mod_int( &r, X, small_prime[i] ) ); in mpi_check_small_factors()
2048 static int mpi_miller_rabin( const mbedtls_mpi *X, in mpi_miller_rabin() argument
2063 MBEDTLS_MPI_CHK( mbedtls_mpi_sub_int( &W, X, 1 ) ); in mpi_miller_rabin()
2068 i = mbedtls_mpi_bitlen( X ); in mpi_miller_rabin()
2081 MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &A, X->n * ciL, f_rng, p_rng ) ); in mpi_miller_rabin()
2092 MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &A, X->n * ciL, f_rng, p_rng ) ); in mpi_miller_rabin()
2110 MBEDTLS_MPI_CHK( mbedtls_mpi_exp_mod( &A, &A, &R, X, &RR ) ); in mpi_miller_rabin()
2123 MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &A, &T, X ) ); in mpi_miller_rabin()
2152 int mbedtls_mpi_is_prime( const mbedtls_mpi *X, in mbedtls_mpi_is_prime() argument
2160 XX.n = X->n; in mbedtls_mpi_is_prime()
2161 XX.p = X->p; in mbedtls_mpi_is_prime()
2184 int mbedtls_mpi_gen_prime( mbedtls_mpi *X, size_t nbits, int dh_flag, in mbedtls_mpi_gen_prime() argument
2200 MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( X, n * ciL, f_rng, p_rng ) ); in mbedtls_mpi_gen_prime()
2202 k = mbedtls_mpi_bitlen( X ); in mbedtls_mpi_gen_prime()
2203 if( k > nbits ) MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( X, k - nbits + 1 ) ); in mbedtls_mpi_gen_prime()
2205 mbedtls_mpi_set_bit( X, nbits-1, 1 ); in mbedtls_mpi_gen_prime()
2207 X->p[0] |= 1; in mbedtls_mpi_gen_prime()
2211 while( ( ret = mbedtls_mpi_is_prime( X, f_rng, p_rng ) ) != 0 ) in mbedtls_mpi_gen_prime()
2216 MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, X, 2 ) ); in mbedtls_mpi_gen_prime()
2227 X->p[0] |= 2; in mbedtls_mpi_gen_prime()
2229 MBEDTLS_MPI_CHK( mbedtls_mpi_mod_int( &r, X, 3 ) ); in mbedtls_mpi_gen_prime()
2231 MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, X, 8 ) ); in mbedtls_mpi_gen_prime()
2233 MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, X, 4 ) ); in mbedtls_mpi_gen_prime()
2236 MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &Y, X ) ); in mbedtls_mpi_gen_prime()
2245 if( ( ret = mpi_check_small_factors( X ) ) == 0 && in mbedtls_mpi_gen_prime()
2247 ( ret = mpi_miller_rabin( X, f_rng, p_rng ) ) == 0 && in mbedtls_mpi_gen_prime()
2261 MBEDTLS_MPI_CHK( mbedtls_mpi_add_int( X, X, 12 ) ); in mbedtls_mpi_gen_prime()
2292 mbedtls_mpi A, E, N, X, Y, U, V; in mbedtls_mpi_self_test() local
2294 mbedtls_mpi_init( &A ); mbedtls_mpi_init( &E ); mbedtls_mpi_init( &N ); mbedtls_mpi_init( &X ); in mbedtls_mpi_self_test()
2314 MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &X, &A, &N ) ); in mbedtls_mpi_self_test()
2328 if( mbedtls_mpi_cmp_mpi( &X, &U ) != 0 ) in mbedtls_mpi_self_test()
2340 MBEDTLS_MPI_CHK( mbedtls_mpi_div_mpi( &X, &Y, &A, &N ) ); in mbedtls_mpi_self_test()
2353 if( mbedtls_mpi_cmp_mpi( &X, &U ) != 0 || in mbedtls_mpi_self_test()
2366 MBEDTLS_MPI_CHK( mbedtls_mpi_exp_mod( &X, &A, &E, &N, NULL ) ); in mbedtls_mpi_self_test()
2376 if( mbedtls_mpi_cmp_mpi( &X, &U ) != 0 ) in mbedtls_mpi_self_test()
2388 MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &X, &A, &N ) ); in mbedtls_mpi_self_test()
2398 if( mbedtls_mpi_cmp_mpi( &X, &U ) != 0 ) in mbedtls_mpi_self_test()
2415 MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &X, gcd_pairs[i][0] ) ); in mbedtls_mpi_self_test()
2418 MBEDTLS_MPI_CHK( mbedtls_mpi_gcd( &A, &X, &Y ) ); in mbedtls_mpi_self_test()
2438 mbedtls_mpi_free( &A ); mbedtls_mpi_free( &E ); mbedtls_mpi_free( &N ); mbedtls_mpi_free( &X ); in mbedtls_mpi_self_test()