Name Description Size
aarch64
alpha
amd64
arm
asm-common-aarch64.h MPI_ASM_COMMON_AARCH64_H 979
ChangeLog-2011 25904
config.links 14186
ec-ed25519.c 1061
ec-internal.h GCRY_EC_INTERNAL_H 926
ec.c Print a point using the log functions. If CTX is not NULL affine coordinates will be printed. 52053
generic
hppa
hppa1.1
i386
i586
longlong.h You have to define the following before including this file: UWtype -- An unsigned type, default type for operations (typically a "word") UHWtype -- An unsigned type, at least half the size of UWtype. UDWtype -- An unsigned type, at least twice as large a UWtype W_TYPE_SIZE -- size in bits of UWtype SItype, USItype -- Signed and unsigned 32 bit types. DItype, UDItype -- Signed and unsigned 64 bit types. On a 32 bit machine UWtype should typically be USItype; on a 64 bit machine, UWtype should typically be UDItype. 84488
m68k
Makefile.am 4312
Makefile.in 35396
mips3
mpi-add.c Add the unsigned integer V to the mpi-integer U and store the result in W. U and V may be the same. 5712
mpi-bit.c Sometimes we have MSL (most significant limbs) which are 0; this is for some reasons not good, so this function removes them. 9039
mpi-cmp.c Handle the case that U contains no limb. 3249
mpi-div.c We need the original value of the divisor after the remainder has been preliminary calculated. We have to copy it to temporary space if it's the same variable as REM. 9629
mpi-gcd.c Find the greatest common divisor G of A and B. Return: true if this 1, false in all other cases 1529
mpi-inline.c put the inline functions as real functions into the lib 1254
mpi-inline.h Starting with gcc 4.3 "extern inline" conforms in c99 mode to the c99 semantics. To keep the useful old semantics we use an attribute. 4413
mpi-internal.h BITS_PER_MPI_LIMB 10579
mpi-inv.c This uses a modular inversion algorithm designed by Niels Möller which was implemented in Nettle. The same algorithm was later also adapted to GMP in mpn_sec_invert. For the description of the algorithm, see Algorithm 5 in Appendix A of "Fast Software Polynomial Multiplication on ARM Processors using the NEON Engine" by Danilo Câmara, Conrado P. L. Gouvêa, Julio López, and Ricardo Dahab: https://hal.inria.fr/hal-01506572/document Note that in the reference above, at the line 2 of Algorithm 5, initial value of V was described as V:=1 wrongly. It must be V:=0. 15365
mpi-mod.c Context used with Barrett reduction. 4643
mpi-mpow.c Barrett is slower than the classical way. It can be tweaked by using partial multiplications 5995
mpi-mul.c Zero all whole limbs at low end. Do it here and not before calling mpn_lshift, not to lose for U == W. 5680
mpi-pow.c When you need old implementation, please add compilation option -DUSE_ALGORITHM_SIMPLE_EXPONENTIATION or expose this line: #define USE_ALGORITHM_SIMPLE_EXPONENTIATION 1 22256
mpi-scan.c Scan through an mpi and return byte for byte. a -1 is returned to indicate the end of the mpi. Scanning is done from the lsb to the msb, returned values are in the range of 0 .. 255. FIXME: This code is VERY ugly! 3789
mpicoder.c The maximum length we support in the functions converting an external representation to an MPI. This limit is used to catch programming errors and to avoid DoS due to insane long allocations. The 16 MiB limit is actually ridiculous large but some of those PQC algorithms use quite large keys and they might end up using MPIs for that. 24357
mpih-const-time.c W = U when OP_ENABLED=1 otherwise, W keeps old value 4387
mpih-div.c FIXME: We should be using invert_limb (or invert_normalized_limb) here (not udiv_qrnnd). 14331
mpih-mul.c Multiply the natural numbers u (pointed to by UP) and v (pointed to by VP), both with SIZE limbs, and store the result at PRODP. 2 * SIZE limbs are always stored. Return the most significant limb. Argument constraints: 1. PRODP != UP and PRODP != VP, i.e. the destination must be distinct from the multiplier and the multiplicand. Handle simple cases with traditional multiplication. This is the most critical code of multiplication. All multiplies rely on this, both small and huge. Small ones arrive here immediately. Huge ones arrive here as this is the base case for Karatsuba's recursive algorithm below. 15901
mpiutil.c (visual check: 0123 ) 17254
pa7100
pentium4
power
powerpc32
powerpc64
sparc32
sparc32v8
supersparc