Skip to content

Commit dc9e2cf

Browse files
committed
Moved .radix251 code to .ed25519 (it is too specific to Ed25519 to be generic)
1 parent 5ce3fe8 commit dc9e2cf

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

src/net/i2p/crypto/eddsa/math/radix251/Radix251FieldElement.java renamed to src/net/i2p/crypto/eddsa/math/ed25519/Ed25519FieldElement.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.i2p.crypto.eddsa.math.radix251;
1+
package net.i2p.crypto.eddsa.math.ed25519;
22

33
import net.i2p.crypto.eddsa.TestUtils;
44
import net.i2p.crypto.eddsa.math.Field;
@@ -9,13 +9,13 @@
99
* t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9].
1010
* Bounds on each t[i] vary depending on context.
1111
*/
12-
public class Radix251FieldElement extends FieldElement {
12+
public class Ed25519FieldElement extends FieldElement {
1313
/**
1414
* Variable is package private for encoding.
1515
*/
1616
int[] t;
1717

18-
public Radix251FieldElement(Field f, int[] t) {
18+
public Ed25519FieldElement(Field f, int[] t) {
1919
super(f);
2020
if (t.length != 10)
2121
throw new IllegalArgumentException("Invalid radix-2^51 representation");
@@ -45,7 +45,7 @@ public boolean isNonZero() {
4545
* |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
4646
*/
4747
public FieldElement add(FieldElement val) {
48-
int[] g = ((Radix251FieldElement)val).t;
48+
int[] g = ((Ed25519FieldElement)val).t;
4949
int f0 = t[0];
5050
int f1 = t[1];
5151
int f2 = t[2];
@@ -87,7 +87,7 @@ public FieldElement add(FieldElement val) {
8787
h[7] = h7;
8888
h[8] = h8;
8989
h[9] = h9;
90-
return new Radix251FieldElement(f, h);
90+
return new Ed25519FieldElement(f, h);
9191
}
9292

9393
/**
@@ -102,7 +102,7 @@ public FieldElement add(FieldElement val) {
102102
* |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
103103
**/
104104
public FieldElement subtract(FieldElement val) {
105-
int[] g = ((Radix251FieldElement)val).t;
105+
int[] g = ((Ed25519FieldElement)val).t;
106106
int f0 = t[0];
107107
int f1 = t[1];
108108
int f2 = t[2];
@@ -144,7 +144,7 @@ public FieldElement subtract(FieldElement val) {
144144
h[7] = h7;
145145
h[8] = h8;
146146
h[9] = h9;
147-
return new Radix251FieldElement(f, h);
147+
return new Ed25519FieldElement(f, h);
148148
}
149149

150150
/**
@@ -188,7 +188,7 @@ public FieldElement negate() {
188188
h[7] = h7;
189189
h[8] = h8;
190190
h[9] = h9;
191-
return new Radix251FieldElement(f, h);
191+
return new Ed25519FieldElement(f, h);
192192
}
193193

194194
/**
@@ -220,7 +220,7 @@ public FieldElement negate() {
220220
* With tighter constraints on inputs can squeeze carries into int32.
221221
*/
222222
public FieldElement multiply(FieldElement val) {
223-
int[] g = ((Radix251FieldElement)val).t;
223+
int[] g = ((Ed25519FieldElement)val).t;
224224
int f0 = t[0];
225225
int f1 = t[1];
226226
int f2 = t[2];
@@ -437,7 +437,7 @@ public FieldElement multiply(FieldElement val) {
437437
h[7] = (int) h7;
438438
h[8] = (int) h8;
439439
h[9] = (int) h9;
440-
return new Radix251FieldElement(f, h);
440+
return new Ed25519FieldElement(f, h);
441441
}
442442

443443
/**
@@ -450,7 +450,7 @@ public FieldElement multiply(FieldElement val) {
450450
* Postconditions:
451451
* |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
452452
*
453-
* See {@link Radix251FieldElement#multiply(FieldElement)} for discussion
453+
* See {@link Ed25519FieldElement#multiply(FieldElement)} for discussion
454454
* of implementation strategy.
455455
*/
456456
public FieldElement square() {
@@ -583,7 +583,7 @@ public FieldElement square() {
583583
h[7] = (int) h7;
584584
h[8] = (int) h8;
585585
h[9] = (int) h9;
586-
return new Radix251FieldElement(f, h);
586+
return new Ed25519FieldElement(f, h);
587587
}
588588

589589
/**
@@ -596,7 +596,7 @@ public FieldElement square() {
596596
* Postconditions:
597597
* |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
598598
*
599-
* See {@link Radix251FieldElement#multiply(FieldElement)} for discussion
599+
* See {@link Ed25519FieldElement#multiply(FieldElement)} for discussion
600600
* of implementation strategy.
601601
*/
602602
public FieldElement squareAndDouble() {
@@ -740,7 +740,7 @@ public FieldElement squareAndDouble() {
740740
h[7] = (int) h7;
741741
h[8] = (int) h8;
742742
h[9] = (int) h9;
743-
return new Radix251FieldElement(f, h);
743+
return new Ed25519FieldElement(f, h);
744744
}
745745

746746
public FieldElement invert() {
@@ -956,16 +956,16 @@ public int hashCode() {
956956

957957
@Override
958958
public boolean equals(Object obj) {
959-
if (!(obj instanceof Radix251FieldElement))
959+
if (!(obj instanceof Ed25519FieldElement))
960960
return false;
961-
Radix251FieldElement fe = (Radix251FieldElement) obj;
961+
Ed25519FieldElement fe = (Ed25519FieldElement) obj;
962962
// XXX why does direct byte[] comparison fail?
963963
// TODO should this be constant time?
964964
return TestUtils.getHex(toByteArray()).equals(TestUtils.getHex(fe.toByteArray()));
965965
}
966966

967967
@Override
968968
public String toString() {
969-
return "[Radix251FieldElement val="+TestUtils.getHex(toByteArray())+"]";
969+
return "[Ed25519FieldElement val="+TestUtils.getHex(toByteArray())+"]";
970970
}
971971
}

src/net/i2p/crypto/eddsa/math/radix251/Radix251LittleEndianEncoding.java renamed to src/net/i2p/crypto/eddsa/math/ed25519/Ed25519LittleEndianEncoding.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package net.i2p.crypto.eddsa.math.radix251;
1+
package net.i2p.crypto.eddsa.math.ed25519;
22

33
import net.i2p.crypto.eddsa.math.Encoding;
44
import net.i2p.crypto.eddsa.math.FieldElement;
55

6-
public class Radix251LittleEndianEncoding extends Encoding {
6+
public class Ed25519LittleEndianEncoding extends Encoding {
77
/**
88
* Preconditions:<br>
99
* |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.<br><br>
@@ -29,7 +29,7 @@ public class Radix251LittleEndianEncoding extends Encoding {
2929
* so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.
3030
*/
3131
public byte[] encode(FieldElement x) {
32-
int[] h = ((Radix251FieldElement)x).t;
32+
int[] h = ((Ed25519FieldElement)x).t;
3333
int h0 = h[0];
3434
int h1 = h[1];
3535
int h2 = h[2];
@@ -186,7 +186,7 @@ public FieldElement decode(byte[] in) {
186186
h[7] = (int) h7;
187187
h[8] = (int) h8;
188188
h[9] = (int) h9;
189-
return new Radix251FieldElement(f, h);
189+
return new Ed25519FieldElement(f, h);
190190
}
191191

192192
/**

src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import net.i2p.crypto.eddsa.Utils;
66
import net.i2p.crypto.eddsa.math.Curve;
77
import net.i2p.crypto.eddsa.math.Field;
8+
import net.i2p.crypto.eddsa.math.ed25519.Ed25519LittleEndianEncoding;
89
import net.i2p.crypto.eddsa.math.ed25519.Ed25519ScalarOps;
9-
import net.i2p.crypto.eddsa.math.radix251.Radix251LittleEndianEncoding;
1010

1111
/**
1212
* The named EdDSA curves.
@@ -19,7 +19,7 @@ public class EdDSANamedCurveTable {
1919
private static final Field ed25519field = new Field(
2020
256, // b
2121
Utils.hexToBytes("edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f"), // q
22-
new Radix251LittleEndianEncoding());
22+
new Ed25519LittleEndianEncoding());
2323

2424
private static final Curve ed25519curve = new Curve(ed25519field,
2525
Utils.hexToBytes("a3785913ca4deb75abd841414d0a700098e879777940c78c73fe6f2bee6c0352"), // d

0 commit comments

Comments
 (0)