Top Description Fields Constructors Methods
org.bouncycastle.math.raw

public abstract Class Mod

extends Object
Class Inheritance
Imports
java.util.Random, org.bouncycastle.util.Integers

Modular inversion as implemented in this class is based on the paper "Fast constant-time gcd computation and modular inversion" by Daniel J. Bernstein and Bo-Yin Yang.

In some cases (when it is faster) we use the "half delta" variant of safegcd based on hddivsteps.

Field Summary

Modifier and TypeField and Description
private static final int
private static final long

Constructor Summary

AccessConstructor and Description
public
Mod()

Method Summary

Modifier and TypeMethod and Description
private static int
add30(int len30, int[] D, int[] M)

public static void
checkedModOddInverse(int[] m, int[] x, int[] z)

public static void
checkedModOddInverseVar(int[] m, int[] x, int[] z)

private static void
cnegate30(int len30, int cond, int[] D)

private static void
cnormalize30(int len30, int condNegate, int[] D, int[] M)

private static void
decode30(int bits, int[] x, int[] z)

private static int
divsteps30Var(int eta, int f0, int g0, int[] t)

private static void
encode30(int bits, int[] x, int[] z)

private static int
equalTo(int len, int[] x, int y)

private static boolean
equalToVar(int len, int[] x, int y)

private static int
private static int
private static int
hddivsteps30(int theta, int f0, int g0, int[] t)

public static int
inverse32(int d)

public static int
modOddInverse(int[] m, int[] x, int[] z)

public static boolean
modOddInverseVar(int[] m, int[] x, int[] z)

public static int
modOddIsCoprime(int[] m, int[] x)

public static boolean
modOddIsCoprimeVar(int[] m, int[] x)

private static int
negate30(int len30, int[] D)

public static int[]
random(int[] p)

private static int
trimFG30(int len30, int[] F, int[] G)

private static void
updateDE30(int len30, int[] D, int[] E, int[] t, int m0Inv32, int[] M)

private static void
updateFG30(int len30, int[] F, int[] G, int[] t)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

M30back to summary
private static final int M30
M32Lback to summary
private static final long M32L

Constructor Detail

Modback to summary
public Mod()

Method Detail

add30back to summary
private static int add30(int len30, int[] D, int[] M)
checkedModOddInverseback to summary
public static void checkedModOddInverse(int[] m, int[] x, int[] z)
checkedModOddInverseVarback to summary
public static void checkedModOddInverseVar(int[] m, int[] x, int[] z)
cnegate30back to summary
private static void cnegate30(int len30, int cond, int[] D)
cnormalize30back to summary
private static void cnormalize30(int len30, int condNegate, int[] D, int[] M)
decode30back to summary
private static void decode30(int bits, int[] x, int[] z)
divsteps30Varback to summary
private static int divsteps30Var(int eta, int f0, int g0, int[] t)
encode30back to summary
private static void encode30(int bits, int[] x, int[] z)
equalToback to summary
private static int equalTo(int len, int[] x, int y)
equalToVarback to summary
private static boolean equalToVar(int len, int[] x, int y)
getMaximumDivstepsback to summary
private static int getMaximumDivsteps(int bits)
getMaximumHDDivstepsback to summary
private static int getMaximumHDDivsteps(int bits)
hddivsteps30back to summary
private static int hddivsteps30(int theta, int f0, int g0, int[] t)
inverse32back to summary
public static int inverse32(int d)
modOddInverseback to summary
public static int modOddInverse(int[] m, int[] x, int[] z)
modOddInverseVarback to summary
public static boolean modOddInverseVar(int[] m, int[] x, int[] z)
modOddIsCoprimeback to summary
public static int modOddIsCoprime(int[] m, int[] x)
modOddIsCoprimeVarback to summary
public static boolean modOddIsCoprimeVar(int[] m, int[] x)
negate30back to summary
private static int negate30(int len30, int[] D)
randomback to summary
public static int[] random(int[] p)
trimFG30back to summary
private static int trimFG30(int len30, int[] F, int[] G)
updateDE30back to summary
private static void updateDE30(int len30, int[] D, int[] E, int[] t, int m0Inv32, int[] M)
updateFG30back to summary
private static void updateFG30(int len30, int[] F, int[] G, int[] t)