Package | Description |
---|---|
net.i2p.crypto.eddsa.math |
Data structures that definie curves and fields, and
the mathematical operaions on them.
|
net.i2p.crypto.eddsa.math.bigint |
Low-level, non-optimized implementation using BigIntegers for any curve.
|
net.i2p.crypto.eddsa.math.ed25519 |
Low-level, optimized implementation using Radix 2^51 for Curve 25519.
|
Modifier and Type | Field and Description |
---|---|
FieldElement |
Field.eight |
FieldElement |
Field.five |
FieldElement |
Field.four |
FieldElement |
Field.one |
(package private) FieldElement |
GroupElement.T
Variable is package private only so that tests run.
|
FieldElement |
Field.two |
(package private) FieldElement |
GroupElement.X
Variable is package private only so that tests run.
|
(package private) FieldElement |
GroupElement.Y
Variable is package private only so that tests run.
|
(package private) FieldElement |
GroupElement.Z
Variable is package private only so that tests run.
|
FieldElement |
Field.zero |
Modifier and Type | Method and Description |
---|---|
abstract FieldElement |
FieldElement.add(FieldElement val) |
FieldElement |
FieldElement.addOne() |
abstract FieldElement |
Encoding.decode(byte[] in)
Decode a FieldElement from its (b-1)-bit encoding.
|
FieldElement |
FieldElement.divide(FieldElement val) |
FieldElement |
Field.fromByteArray(byte[] x) |
FieldElement |
Curve.get2D() |
FieldElement |
Curve.getD() |
FieldElement |
Curve.getI() |
FieldElement |
Field.getQ() |
FieldElement |
Field.getQm2() |
FieldElement |
Field.getQm5d8() |
abstract FieldElement |
FieldElement.invert() |
abstract FieldElement |
FieldElement.multiply(FieldElement val) |
abstract FieldElement |
FieldElement.negate() |
abstract FieldElement |
FieldElement.pow22523() |
abstract FieldElement |
FieldElement.square() |
abstract FieldElement |
FieldElement.squareAndDouble() |
abstract FieldElement |
FieldElement.subtract(FieldElement val) |
FieldElement |
FieldElement.subtractOne() |
Modifier and Type | Method and Description |
---|---|
abstract FieldElement |
FieldElement.add(FieldElement val) |
static GroupElement |
GroupElement.cached(Curve curve,
FieldElement YpX,
FieldElement YmX,
FieldElement Z,
FieldElement T2d) |
FieldElement |
FieldElement.divide(FieldElement val) |
abstract byte[] |
Encoding.encode(FieldElement x)
Encode a FieldElement in its (b-1)-bit encoding.
|
abstract boolean |
Encoding.isNegative(FieldElement x)
From the Ed25519 paper:
x is negative if the (b-1)-bit encoding of x is lexicographically larger
than the (b-1)-bit encoding of -x.
|
abstract FieldElement |
FieldElement.multiply(FieldElement val) |
static GroupElement |
GroupElement.p1p1(Curve curve,
FieldElement X,
FieldElement Y,
FieldElement Z,
FieldElement T) |
static GroupElement |
GroupElement.p2(Curve curve,
FieldElement X,
FieldElement Y,
FieldElement Z) |
static GroupElement |
GroupElement.p3(Curve curve,
FieldElement X,
FieldElement Y,
FieldElement Z,
FieldElement T) |
static GroupElement |
GroupElement.precomp(Curve curve,
FieldElement ypx,
FieldElement ymx,
FieldElement xy2d) |
abstract FieldElement |
FieldElement.subtract(FieldElement val) |
Constructor and Description |
---|
Curve(Field f,
byte[] d,
FieldElement I) |
GroupElement(Curve curve,
GroupElement.Representation repr,
FieldElement X,
FieldElement Y,
FieldElement Z,
FieldElement T) |
Modifier and Type | Class and Description |
---|---|
class |
BigIntegerFieldElement
A particular element of the field \Z/(2^255-19).
|
Modifier and Type | Method and Description |
---|---|
FieldElement |
BigIntegerFieldElement.add(FieldElement val) |
FieldElement |
BigIntegerFieldElement.addOne() |
FieldElement |
BigIntegerLittleEndianEncoding.decode(byte[] in) |
FieldElement |
BigIntegerFieldElement.divide(BigInteger val) |
FieldElement |
BigIntegerFieldElement.divide(FieldElement val) |
FieldElement |
BigIntegerFieldElement.invert() |
FieldElement |
BigIntegerFieldElement.mod(FieldElement m) |
FieldElement |
BigIntegerFieldElement.modPow(FieldElement e,
FieldElement m) |
FieldElement |
BigIntegerFieldElement.multiply(FieldElement val) |
FieldElement |
BigIntegerFieldElement.negate() |
FieldElement |
BigIntegerFieldElement.pow(FieldElement e) |
FieldElement |
BigIntegerFieldElement.pow22523() |
FieldElement |
BigIntegerFieldElement.square() |
FieldElement |
BigIntegerFieldElement.squareAndDouble() |
FieldElement |
BigIntegerFieldElement.subtract(FieldElement val) |
FieldElement |
BigIntegerFieldElement.subtractOne() |
Modifier and Type | Method and Description |
---|---|
FieldElement |
BigIntegerFieldElement.add(FieldElement val) |
FieldElement |
BigIntegerFieldElement.divide(FieldElement val) |
byte[] |
BigIntegerLittleEndianEncoding.encode(FieldElement x) |
boolean |
BigIntegerLittleEndianEncoding.isNegative(FieldElement x)
From the Ed25519 paper:
x is negative if the (b-1)-bit encoding of x is lexicographically larger
than the (b-1)-bit encoding of -x.
|
FieldElement |
BigIntegerFieldElement.mod(FieldElement m) |
FieldElement |
BigIntegerFieldElement.modPow(FieldElement e,
FieldElement m) |
FieldElement |
BigIntegerFieldElement.multiply(FieldElement val) |
FieldElement |
BigIntegerFieldElement.pow(FieldElement e) |
FieldElement |
BigIntegerFieldElement.subtract(FieldElement val) |
Modifier and Type | Class and Description |
---|---|
class |
Ed25519FieldElement
An element t, entries t[0]...t[9], represents the integer
t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9].
|
Modifier and Type | Method and Description |
---|---|
FieldElement |
Ed25519FieldElement.add(FieldElement val)
h = f + g
Can overlap h with f or g.
|
FieldElement |
Ed25519LittleEndianEncoding.decode(byte[] in)
Ignores top bit.
|
FieldElement |
Ed25519FieldElement.invert() |
FieldElement |
Ed25519FieldElement.multiply(FieldElement val)
h = f * g Can overlap h with f or g.
|
FieldElement |
Ed25519FieldElement.negate()
h = -f
Preconditions:
|f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
|
FieldElement |
Ed25519FieldElement.pow22523() |
FieldElement |
Ed25519FieldElement.square()
h = f * f
Can overlap h with f.
|
FieldElement |
Ed25519FieldElement.squareAndDouble()
h = 2 * f * f
Can overlap h with f.
|
FieldElement |
Ed25519FieldElement.subtract(FieldElement val)
h = f - g
Can overlap h with f or g.
|
Modifier and Type | Method and Description |
---|---|
FieldElement |
Ed25519FieldElement.add(FieldElement val)
h = f + g
Can overlap h with f or g.
|
byte[] |
Ed25519LittleEndianEncoding.encode(FieldElement x)
Preconditions:
|h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. Write p=2^255-19; q=floor(h/p). Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). |
boolean |
Ed25519LittleEndianEncoding.isNegative(FieldElement x)
Return true if x is in {1,3,5,...,q-2}
Return false if x is in {0,2,4,...,q-1} Preconditions: |x| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. |
FieldElement |
Ed25519FieldElement.multiply(FieldElement val)
h = f * g Can overlap h with f or g.
|
FieldElement |
Ed25519FieldElement.subtract(FieldElement val)
h = f - g
Can overlap h with f or g.
|