Classes |
| struct | mpi |
| | MPI structure. More...
|
Defines |
|
#define | POLARSSL_ERR_MPI_FILE_IO_ERROR 0x0002 |
|
#define | POLARSSL_ERR_MPI_BAD_INPUT_DATA 0x0004 |
|
#define | POLARSSL_ERR_MPI_INVALID_CHARACTER 0x0006 |
|
#define | POLARSSL_ERR_MPI_BUFFER_TOO_SMALL 0x0008 |
|
#define | POLARSSL_ERR_MPI_NEGATIVE_VALUE 0x000A |
|
#define | POLARSSL_ERR_MPI_DIVISION_BY_ZERO 0x000C |
|
#define | POLARSSL_ERR_MPI_NOT_ACCEPTABLE 0x000E |
|
#define | MPI_CHK(f) if( ( ret = f ) != 0 ) goto cleanup |
Typedefs |
|
typedef unsigned long | t_int |
Functions |
|
void | mpi_init (mpi *X,...) |
| | Initialize one or more mpi.
|
|
void | mpi_free (mpi *X,...) |
| | Unallocate one or more mpi.
|
| int | mpi_grow (mpi *X, int nblimbs) |
| | Enlarge to the specified number of limbs.
|
| int | mpi_copy (mpi *X, const mpi *Y) |
| | Copy the contents of Y into X.
|
| void | mpi_swap (mpi *X, mpi *Y) |
| | Swap the contents of X and Y.
|
| int | mpi_lset (mpi *X, int z) |
| | Set value from integer.
|
| int | mpi_lsb (const mpi *X) |
| | Return the number of least significant bits.
|
| int | mpi_msb (const mpi *X) |
| | Return the number of most significant bits.
|
| int | mpi_size (const mpi *X) |
| | Return the total size in bytes.
|
| int | mpi_read_string (mpi *X, int radix, const char *s) |
| | Import from an ASCII string.
|
| int | mpi_write_string (const mpi *X, int radix, char *s, int *slen) |
| | Export into an ASCII string.
|
| int | mpi_read_file (mpi *X, int radix, FILE *fin) |
| | Read X from an opened file.
|
| int | mpi_write_file (const char *p, const mpi *X, int radix, FILE *fout) |
| | Write X into an opened file, or stdout if fout is NULL.
|
| int | mpi_read_binary (mpi *X, const unsigned char *buf, int buflen) |
| | Import X from unsigned binary data, big endian.
|
| int | mpi_write_binary (const mpi *X, unsigned char *buf, int buflen) |
| | Export X into unsigned binary data, big endian.
|
| int | mpi_shift_l (mpi *X, int count) |
| | Left-shift: X <<= count.
|
| int | mpi_shift_r (mpi *X, int count) |
| | Right-shift: X >>= count.
|
| int | mpi_cmp_abs (const mpi *X, const mpi *Y) |
| | Compare unsigned values.
|
| int | mpi_cmp_mpi (const mpi *X, const mpi *Y) |
| | Compare signed values.
|
| int | mpi_cmp_int (const mpi *X, int z) |
| | Compare signed values.
|
| int | mpi_add_abs (mpi *X, const mpi *A, const mpi *B) |
| | Unsigned addition: X = |A| + |B|.
|
| int | mpi_sub_abs (mpi *X, const mpi *A, const mpi *B) |
| | Unsigned substraction: X = |A| - |B|.
|
| int | mpi_add_mpi (mpi *X, const mpi *A, const mpi *B) |
| | Signed addition: X = A + B.
|
| int | mpi_sub_mpi (mpi *X, const mpi *A, const mpi *B) |
| | Signed substraction: X = A - B.
|
| int | mpi_add_int (mpi *X, const mpi *A, int b) |
| | Signed addition: X = A + b.
|
| int | mpi_sub_int (mpi *X, const mpi *A, int b) |
| | Signed substraction: X = A - b.
|
| int | mpi_mul_mpi (mpi *X, const mpi *A, const mpi *B) |
| | Baseline multiplication: X = A * B.
|
| int | mpi_mul_int (mpi *X, const mpi *A, t_int b) |
| | Baseline multiplication: X = A * b Note: b is an unsigned integer type, thus Negative values of b are ignored.
|
| int | mpi_div_mpi (mpi *Q, mpi *R, const mpi *A, const mpi *B) |
| | Division by mpi: A = Q * B + R.
|
| int | mpi_div_int (mpi *Q, mpi *R, const mpi *A, int b) |
| | Division by int: A = Q * b + R.
|
| int | mpi_mod_mpi (mpi *R, const mpi *A, const mpi *B) |
| | Modulo: R = A mod B.
|
| int | mpi_mod_int (t_int *r, const mpi *A, int b) |
| | Modulo: r = A mod b.
|
| int | mpi_exp_mod (mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR) |
| | Sliding-window exponentiation: X = A^E mod N.
|
| int | mpi_gcd (mpi *G, const mpi *A, const mpi *B) |
| | Greatest common divisor: G = gcd(A, B)
|
| int | mpi_inv_mod (mpi *X, const mpi *A, const mpi *N) |
| | Modular inverse: X = A^-1 mod N.
|
| int | mpi_is_prime (mpi *X, int(*f_rng)(void *), void *p_rng) |
| | Miller-Rabin primality test.
|
| int | mpi_gen_prime (mpi *X, int nbits, int dh_flag, int(*f_rng)(void *), void *p_rng) |
| | Prime number generation.
|
| int | mpi_self_test (int verbose) |
| | Checkup routine.
|
Copyright (C) 2006-2010, Brainspark B.V.
This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.