|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--de.flexiprovider.common.math.ellipticcurves.ScalarMult
| Method Summary | |
static int[][] |
determineJsf(FlexiBigInt[] d)
Returns the Joint Sparse Form of d0 to dk using algorithm 3 [PRO03]. |
static int[] |
determineLtrFSSW(FlexiBigInt e,
int w)
Left to Right Fixed Size Sliding Window Recoding. |
static int[] |
determineLtrSFW(FlexiBigInt e,
int m)
Left to Right Signed Fractional Window Method proposed in [Moe04]. |
static int[] |
determineMof(FlexiBigInt d)
Returns the Mutual Opposite Form (MOF) of d proposed in [OSST04, Alg. |
static int[] |
determineMof(FlexiBigInt d,
int w)
Returns the Width-w Mutual Opposite Form (wMOF) of d proposed in [OSST04, Appendix B]. |
static int[] |
determineNaf(FlexiBigInt e,
int w)
Returns e as int-array in non-adjacent-form (Naf). |
static int[] |
determineNaf(FlexiBigInt e,
int w,
int b)
Returns e as int-array in non-adjacent-form (Naf). |
static int[] |
determineRtlFSSW(FlexiBigInt e,
int w)
Right to Left Fixed Size Sliding Window Recoding. |
static int[] |
determineRtlSFW(FlexiBigInt e,
int m)
Right to Left Signed Fractional Window Method proposed in [Moe04]. |
static int[][] |
determineSimultaneous2w_ltr(FlexiBigInt d1,
FlexiBigInt d2,
int w)
Returns the simultaneous2w recoding (Left to Right). |
static int[][] |
determineSimultaneous2w_rtl(FlexiBigInt d1,
FlexiBigInt d2,
int w)
Returns the simultaneous2w recoding (Right to Left). |
static int[][] |
determineSimultaneousNaf(FlexiBigInt[] e,
int[] w)
returns the Naf-representations of the FlexiBigInts stored in e in one matrix. |
static int[][] |
determineSimultaneousSW(FlexiBigInt d1,
FlexiBigInt d2,
int w)
Returns the simultaneous sliding window recoding. |
static int[] |
determineSW(FlexiBigInt e,
int w)
Sliding Window Recoding. |
static int[][] |
determineW3Jsf(FlexiBigInt e0,
FlexiBigInt e1)
Returns the w3-Joint Sparse Form (w3-JSF) of e0 and e1 using Algorithm 3 [DOT07]. The scalars e0 and e1 must have the same bitlength! Occuring digits are {0, 1, -1, 3, -3}. |
static Point |
eval_interleaving(int[][] N,
Point[][] P)
Interleave evaluation for n-time simultaneous multiplications with recoding |
static Point |
eval_shamir_all(int[][] N,
Point[][] P)
Shamir (= simultExpo) evaluation for simultaneous multiplications with recoding. |
static Point |
eval_shamir(int[][] N,
Point[][] P)
Shamir evaluation with 2 base points (e0*P0 + e1*P1). |
static Point |
eval_shamir(int[][] N,
Point[][][] P)
Shamir evaluation with 3 base points (e0*P0 + e1*P1 + e2*P2). |
static Point |
eval_shamir(int[][] N,
Point[][][][] P)
Shamir evaluation with 4 base points (e0*P0 + e1*P1 + e2*P2 + e3*P3). |
static Point |
eval_shamir(Point P,
Point Q,
FlexiBigInt e1,
FlexiBigInt e2)
Shamir (= simultExpo) evaluation for simultaneous multiplications without recoding. |
static Point |
eval_SquareMultiply_all(int[] N,
Point[] P)
Square and multiply evaluation with recoding. |
static Point |
eval_SquareMultiply(FlexiBigInt m,
Point p)
Square and multiply evaluation without recoding. |
static Point |
eval_SquareMultiply(int[] N,
Point[] P)
Square and multiply evaluation with recoding. |
static Point |
multiply(FlexiBigInt[] b,
Point[] p)
Returns the result of the simultaneous scalarmultiplication b0*P0 + b1*P1 + ... |
static Point |
multiply(FlexiBigInt b,
Point p)
Multiplies this point with the scalar b. |
static Point |
multiply2(FlexiBigInt[] b,
Point[] p)
|
static Point |
multiply2(FlexiBigInt b,
Point p)
|
static Point |
multiply3(FlexiBigInt[] b,
Point[] p)
|
static Point |
multiply3(FlexiBigInt b,
Point p)
|
static Point |
multiply4(FlexiBigInt[] b,
PointGFP[] p)
|
static Point |
multiply4(FlexiBigInt b,
PointGFP p)
|
static Point[] |
pre_allpowers(Point p,
int w)
This method computes all positive powers which are smaller than 2w. |
static Point[] |
pre_limlee(Point p,
FlexiBigInt m,
int n)
LimLee precomputation. |
static Point[] |
pre_limleeAffine(Point p,
FlexiBigInt m,
int n)
LimLee affine precomputation. |
static Point[][] |
pre_oddpowers(Point[] Q,
int[] W)
This method computes all positive odd powers of all points given in array Q. |
static Point[] |
pre_oddpowers(Point p,
int w)
This method computes all positive odd powers which are smaller than 2w. |
static Point[][] |
pre_shamir(Point Q0,
Point Q1,
int w)
This method computes the simultaneous powers i*Q0 + j*Q1, (i,j odd) required by the Shamir evaluation. |
static Point[][][] |
pre_shamir(Point Q0,
Point Q1,
Point Q2,
int w)
This method computes the simultaneous powers i*Q0 + j*Q1 + k*Q2, (i,j,k odd) required by the Shamir evaluation. |
static Point[][][][] |
pre_shamir(Point Q0,
Point Q1,
Point Q2,
Point Q3,
int w)
This method computes the simultaneous powers i*Q0 + j*Q1 + k*Q2 + m*Q3, (i,j,k,m odd) required by the Shamir evaluation. |
static Point[][] |
pre_shamirGFP(PointGFP q0,
PointGFP q1,
int w)
Precomputation in affine coordinates using the Montgomery trick to invert the denominators of all lambdas. This method computes the simultaneous powers i*Q0 + j*Q1 required by the Shamir evaluation. |
static Point[][] |
pre_simultaneous2w(Point P,
Point Q,
int w)
This method computes the simultaneous powers i*P + j*Q required by the simultaneous 2w-ary-method. |
static Point[][] |
pre_simultaneousSlidingWindow(Point P,
Point Q,
int w)
This method computes the simultaneous powers i*P + j*Q required by the simultaneous sliding window method. |
static Point[] |
precomputation(Point p,
int w,
int k)
|
static Point[] |
precomputationCMO(PointGF2n p,
int w)
If k = 0 and w != 0 this method precomputes all odd points 3P, 5P, 7P,..., (2w-1 -1)P in affine coordinates, whereas P = point. |
static Point[] |
precomputationCMO(PointGFP p,
int w,
int k)
If k = 0 and w != 0 this method precomputes all odd points 3P, 5P, 7P,..., (2w-1 -1)P in affine coordinates, whereas P = point. |
static Point[] |
precomputationCMO(Point p,
int w,
int k)
|
static PointGFP[] |
precomputationDOS(PointGFP point,
int k)
|
static FlexiBigInt[] |
split_limlee(FlexiBigInt m,
int n)
LimLee splitting. |
| Methods inherited from class java.lang.Object |
|
| Method Detail |
public static Point multiply(FlexiBigInt b,
Point p)
b - FlexiBigIntp - base point
public static Point multiply2(FlexiBigInt b,
Point p)
public static Point multiply3(FlexiBigInt b,
Point p)
public static Point multiply4(FlexiBigInt b,
PointGFP p)
public static Point multiply(FlexiBigInt[] b,
Point[] p)
p - Array of base pointsb - Array of FlexiBigInt
public static Point multiply2(FlexiBigInt[] b,
Point[] p)
public static Point multiply3(FlexiBigInt[] b,
Point[] p)
public static Point multiply4(FlexiBigInt[] b,
PointGFP[] p)
public static Point[] pre_allpowers(Point p,
int w)
p - base pointw - upper bound/ window width
public static Point[] pre_oddpowers(Point p,
int w)
p - base pointw - upper bound/ window width
public static Point[][] pre_oddpowers(Point[] Q,
int[] W)
Q - base point array. All points must be on the same elliptic
curve.W - upper bound array. W[i] is the upper bound for P[i].
public static Point[] precomputation(Point p,
int w,
int k)
public static Point[] precomputationCMO(Point p,
int w,
int k)
public static Point[] precomputationCMO(PointGFP p,
int w,
int k)
If k != 0 and w = 0 this method precomputes all odd points 3P, 5P, 7P,..., (2k-1)P in affine coordinates, whereas P = point.
This method computes these points with the algorithm thas was proposed in Cohen, H., Miyaji, A., and Ono, T. Efficient Elliptic Curve Exponentiation Using Mixed Coordinates. 1998
The elements of the returned array are as followed:
| w != 0, k = 0 | w = 0, k != 0 | w != 0, k != 0 | ||
| array[0] = P | array[0] = P | array[0] = P | ||
| array[1] = 3P | array[1] = 3P | |||
| array[2] = 5P | array[2] = 5P | |||
| ... | ... | |||
| array[(2w-2)-1] = (2w-1 -1)P | array[k-1] = (2k-1)P |
p - the point of the scalar multiplicationw - window sizek - the number of points to compute
public static Point[] precomputationCMO(PointGF2n p,
int w)
If k != 0 and w = 0 this method precomputes all odd points 3P, 5P, 7P,..., (2k-1)P in affine coordinates, whereas P = point.
This method computes these points with the algorithm thas was proposed in Cohen, H., Miyaji, A., and Ono, T. Efficient Elliptic Curve Exponentiation Using Mixed Coordinates. 1998
The elements of the returned array are as followed:
| w != 0, k = 0 | w = 0, k != 0 | w != 0, k != 0 | ||
| array[0] = P | array[0] = P | array[0] = P | ||
| array[1] = 3P | array[1] = 3P | |||
| array[2] = 5P | array[2] = 5P | |||
| ... | ... | |||
| array[(2w-2)-1] = (2w-1 -1)P | array[k-1] = (2k-1)P |
p - the point of the scalar multiplicationw - window size
public static PointGFP[] precomputationDOS(PointGFP point,
int k)
public static Point[][] pre_simultaneous2w(Point P,
Point Q,
int w)
P - base pointQ - base pointw - window size (parameter of the simultaneous 2w-ary-method)
public static Point[][] pre_simultaneousSlidingWindow(Point P,
Point Q,
int w)
P - base pointQ - base pointw - window size (parameter of the simultaneous sliding window
method)
public static Point[][] pre_shamir(Point Q0,
Point Q1,
int w)
Q0 - base pointQ1 - base pointw - recoding parameter / upper bound. This parameter will be
used for all points.
public static Point[][] pre_shamirGFP(PointGFP q0,
PointGFP q1,
int w)
q0 - base pointq1 - base pointw - recoding parameter / upper bound
public static Point[][][] pre_shamir(Point Q0,
Point Q1,
Point Q2,
int w)
Q0 - base pointQ1 - base pointQ2 - base pointw - recoding parameter / upper bound. This parameter will be
used for all points.
public static Point[][][][] pre_shamir(Point Q0,
Point Q1,
Point Q2,
Point Q3,
int w)
Q0 - base pointQ1 - base pointQ2 - base pointQ3 - base pointw - recoding parameter / upper bound. This parameter will be
used for all points.
public static Point[] pre_limlee(Point p,
FlexiBigInt m,
int n)
p - base pointm - FlexiBigIntn - LimLee parameter (number of the splitted pieces)
public static Point[] pre_limleeAffine(Point p,
FlexiBigInt m,
int n)
p - base pointm - FlexiBigIntn - LimLee parameter (number of the splitted pieces)
public static FlexiBigInt[] split_limlee(FlexiBigInt m,
int n)
m - FlexiBigIntn - LimLee parameter (number of the splitted pieces)
public static int[] determineNaf(FlexiBigInt e,
int w,
int b)
e - the FlexiBigInt that is to be convertedw - the entries n of the Nafs are smaller than 2wb - BitLength of e
public static int[] determineNaf(FlexiBigInt e,
int w)
e - the FlexiBigInt that is to be convertedw - the entries n of the Nafs are smaller than 2w
public static int[] determineRtlFSSW(FlexiBigInt e,
int w)
e - FlexiBigInt to be recodedw - window size.
public static int[] determineLtrFSSW(FlexiBigInt e,
int w)
e - FlexiBigInt to be recodedw - window size
public static int[] determineSW(FlexiBigInt e,
int w)
e - FlexiBigInt to be recodedw - window size
public static int[] determineRtlSFW(FlexiBigInt e,
int m)
e - FlexiBigInt to be recodedm - odd integer
public static int[] determineLtrSFW(FlexiBigInt e,
int m)
e - FlexiBigInt to be recodedm - odd integer
public static int[] determineMof(FlexiBigInt d,
int w)
d - FlexiBigInt to be recodedw - window width (parameter of wMOF)public static int[] determineMof(FlexiBigInt d)
d - FlexiBigInt to be recodedpublic static int[][] determineJsf(FlexiBigInt[] d)
d - Array of FlexiBigInt
public static int[][] determineW3Jsf(FlexiBigInt e0,
FlexiBigInt e1)
e0 - FlexiBigInte1 - FlexiBigInt
public static int[][] determineSimultaneous2w_rtl(FlexiBigInt d1,
FlexiBigInt d2,
int w)
determineRtlFSSW.d1 - FlexiBigIntd2 - FlexiBigIntw - window size
public static int[][] determineSimultaneous2w_ltr(FlexiBigInt d1,
FlexiBigInt d2,
int w)
determineLtrFSSW.d1 - FlexiBigIntd2 - FlexiBigIntw - window size
public static int[][] determineSimultaneousSW(FlexiBigInt d1,
FlexiBigInt d2,
int w)
here.d1 - FlexiBigIntd2 - FlexiBigIntw - window size
public static int[][] determineSimultaneousNaf(FlexiBigInt[] e,
int[] w)
e - array of FlexiBigInts to be recodedw - wNaf parameters. For the recoding of e[i], w[i] will be
used.
public static Point eval_SquareMultiply(FlexiBigInt m,
Point p)
m - FlexiBigIntp - base point
public static Point eval_SquareMultiply(int[] N,
Point[] P)
N - the recoded scalar as int-arrayP - array with the precomputed positive odd powers.
public static Point eval_SquareMultiply_all(int[] N,
Point[] P)
N - the recoded scalar as int-arrayP - array with the precomputed positive powers.
public static Point eval_shamir(Point P,
Point Q,
FlexiBigInt e1,
FlexiBigInt e2)
P - base pointQ - base pointe1 - FlexiBigInte2 - FlexiBigInt
public static Point eval_shamir_all(int[][] N,
Point[][] P)
N - 2-lined matrix.P - matrix with the precomputed powers.
public static Point eval_shamir(int[][] N,
Point[][] P)
N - 2-lined matrix.P - matrix with the precomputed powers. Use the
Shamir
precomputation.
public static Point eval_shamir(int[][] N,
Point[][][] P)
N - 3-lined matrix.P - matrix with the precomputed powers. Use the
Shamir
precomputation.
public static Point eval_shamir(int[][] N,
Point[][][][] P)
N - 4-lined matrix.P - matrix with the precomputed powers. Use the
Shamir precomputation.
public static Point eval_interleaving(int[][] N,
Point[][] P)
N - matrix with the receoded representations.P - point matrix with the precomputed points.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||