Skip to content

Commit 823c069

Browse files
committed
Shorten Ed25519FieldElement.multiply() to fix Dalvik runtime VerifyError
1 parent e2300a3 commit 823c069

File tree

1 file changed

+99
-119
lines changed

1 file changed

+99
-119
lines changed

src/net/i2p/crypto/eddsa/math/ed25519/Ed25519FieldElement.java

Lines changed: 99 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -116,139 +116,119 @@ public FieldElement negate() {
116116
*/
117117
public FieldElement multiply(FieldElement val) {
118118
int[] g = ((Ed25519FieldElement)val).t;
119-
int f0 = t[0];
120-
int f1 = t[1];
121-
int f2 = t[2];
122-
int f3 = t[3];
123-
int f4 = t[4];
124-
int f5 = t[5];
125-
int f6 = t[6];
126-
int f7 = t[7];
127-
int f8 = t[8];
128-
int f9 = t[9];
129-
int g0 = g[0];
130-
int g1 = g[1];
131-
int g2 = g[2];
132-
int g3 = g[3];
133-
int g4 = g[4];
134-
int g5 = g[5];
135-
int g6 = g[6];
136-
int g7 = g[7];
137-
int g8 = g[8];
138-
int g9 = g[9];
139-
int g1_19 = 19 * g1; /* 1.959375*2^29 */
140-
int g2_19 = 19 * g2; /* 1.959375*2^30; still ok */
141-
int g3_19 = 19 * g3;
142-
int g4_19 = 19 * g4;
143-
int g5_19 = 19 * g5;
144-
int g6_19 = 19 * g6;
145-
int g7_19 = 19 * g7;
146-
int g8_19 = 19 * g8;
147-
int g9_19 = 19 * g9;
148-
int f1_2 = 2 * f1;
149-
int f3_2 = 2 * f3;
150-
int f5_2 = 2 * f5;
151-
int f7_2 = 2 * f7;
152-
int f9_2 = 2 * f9;
153-
long f0g0 = f0 * (long) g0;
154-
long f0g1 = f0 * (long) g1;
155-
long f0g2 = f0 * (long) g2;
156-
long f0g3 = f0 * (long) g3;
157-
long f0g4 = f0 * (long) g4;
158-
long f0g5 = f0 * (long) g5;
159-
long f0g6 = f0 * (long) g6;
160-
long f0g7 = f0 * (long) g7;
161-
long f0g8 = f0 * (long) g8;
162-
long f0g9 = f0 * (long) g9;
163-
long f1g0 = f1 * (long) g0;
164-
long f1g1_2 = f1_2 * (long) g1;
165-
long f1g2 = f1 * (long) g2;
166-
long f1g3_2 = f1_2 * (long) g3;
167-
long f1g4 = f1 * (long) g4;
168-
long f1g5_2 = f1_2 * (long) g5;
169-
long f1g6 = f1 * (long) g6;
170-
long f1g7_2 = f1_2 * (long) g7;
171-
long f1g8 = f1 * (long) g8;
119+
int g1_19 = 19 * g[1]; /* 1.959375*2^29 */
120+
int g2_19 = 19 * g[2]; /* 1.959375*2^30; still ok */
121+
int g3_19 = 19 * g[3];
122+
int g4_19 = 19 * g[4];
123+
int g5_19 = 19 * g[5];
124+
int g6_19 = 19 * g[6];
125+
int g7_19 = 19 * g[7];
126+
int g8_19 = 19 * g[8];
127+
int g9_19 = 19 * g[9];
128+
int f1_2 = 2 * t[1];
129+
int f3_2 = 2 * t[3];
130+
int f5_2 = 2 * t[5];
131+
int f7_2 = 2 * t[7];
132+
int f9_2 = 2 * t[9];
133+
long f0g0 = t[0] * (long) g[0];
134+
long f0g1 = t[0] * (long) g[1];
135+
long f0g2 = t[0] * (long) g[2];
136+
long f0g3 = t[0] * (long) g[3];
137+
long f0g4 = t[0] * (long) g[4];
138+
long f0g5 = t[0] * (long) g[5];
139+
long f0g6 = t[0] * (long) g[6];
140+
long f0g7 = t[0] * (long) g[7];
141+
long f0g8 = t[0] * (long) g[8];
142+
long f0g9 = t[0] * (long) g[9];
143+
long f1g0 = t[1] * (long) g[0];
144+
long f1g1_2 = f1_2 * (long) g[1];
145+
long f1g2 = t[1] * (long) g[2];
146+
long f1g3_2 = f1_2 * (long) g[3];
147+
long f1g4 = t[1] * (long) g[4];
148+
long f1g5_2 = f1_2 * (long) g[5];
149+
long f1g6 = t[1] * (long) g[6];
150+
long f1g7_2 = f1_2 * (long) g[7];
151+
long f1g8 = t[1] * (long) g[8];
172152
long f1g9_38 = f1_2 * (long) g9_19;
173-
long f2g0 = f2 * (long) g0;
174-
long f2g1 = f2 * (long) g1;
175-
long f2g2 = f2 * (long) g2;
176-
long f2g3 = f2 * (long) g3;
177-
long f2g4 = f2 * (long) g4;
178-
long f2g5 = f2 * (long) g5;
179-
long f2g6 = f2 * (long) g6;
180-
long f2g7 = f2 * (long) g7;
181-
long f2g8_19 = f2 * (long) g8_19;
182-
long f2g9_19 = f2 * (long) g9_19;
183-
long f3g0 = f3 * (long) g0;
184-
long f3g1_2 = f3_2 * (long) g1;
185-
long f3g2 = f3 * (long) g2;
186-
long f3g3_2 = f3_2 * (long) g3;
187-
long f3g4 = f3 * (long) g4;
188-
long f3g5_2 = f3_2 * (long) g5;
189-
long f3g6 = f3 * (long) g6;
153+
long f2g0 = t[2] * (long) g[0];
154+
long f2g1 = t[2] * (long) g[1];
155+
long f2g2 = t[2] * (long) g[2];
156+
long f2g3 = t[2] * (long) g[3];
157+
long f2g4 = t[2] * (long) g[4];
158+
long f2g5 = t[2] * (long) g[5];
159+
long f2g6 = t[2] * (long) g[6];
160+
long f2g7 = t[2] * (long) g[7];
161+
long f2g8_19 = t[2] * (long) g8_19;
162+
long f2g9_19 = t[2] * (long) g9_19;
163+
long f3g0 = t[3] * (long) g[0];
164+
long f3g1_2 = f3_2 * (long) g[1];
165+
long f3g2 = t[3] * (long) g[2];
166+
long f3g3_2 = f3_2 * (long) g[3];
167+
long f3g4 = t[3] * (long) g[4];
168+
long f3g5_2 = f3_2 * (long) g[5];
169+
long f3g6 = t[3] * (long) g[6];
190170
long f3g7_38 = f3_2 * (long) g7_19;
191-
long f3g8_19 = f3 * (long) g8_19;
171+
long f3g8_19 = t[3] * (long) g8_19;
192172
long f3g9_38 = f3_2 * (long) g9_19;
193-
long f4g0 = f4 * (long) g0;
194-
long f4g1 = f4 * (long) g1;
195-
long f4g2 = f4 * (long) g2;
196-
long f4g3 = f4 * (long) g3;
197-
long f4g4 = f4 * (long) g4;
198-
long f4g5 = f4 * (long) g5;
199-
long f4g6_19 = f4 * (long) g6_19;
200-
long f4g7_19 = f4 * (long) g7_19;
201-
long f4g8_19 = f4 * (long) g8_19;
202-
long f4g9_19 = f4 * (long) g9_19;
203-
long f5g0 = f5 * (long) g0;
204-
long f5g1_2 = f5_2 * (long) g1;
205-
long f5g2 = f5 * (long) g2;
206-
long f5g3_2 = f5_2 * (long) g3;
207-
long f5g4 = f5 * (long) g4;
173+
long f4g0 = t[4] * (long) g[0];
174+
long f4g1 = t[4] * (long) g[1];
175+
long f4g2 = t[4] * (long) g[2];
176+
long f4g3 = t[4] * (long) g[3];
177+
long f4g4 = t[4] * (long) g[4];
178+
long f4g5 = t[4] * (long) g[5];
179+
long f4g6_19 = t[4] * (long) g6_19;
180+
long f4g7_19 = t[4] * (long) g7_19;
181+
long f4g8_19 = t[4] * (long) g8_19;
182+
long f4g9_19 = t[4] * (long) g9_19;
183+
long f5g0 = t[5] * (long) g[0];
184+
long f5g1_2 = f5_2 * (long) g[1];
185+
long f5g2 = t[5] * (long) g[2];
186+
long f5g3_2 = f5_2 * (long) g[3];
187+
long f5g4 = t[5] * (long) g[4];
208188
long f5g5_38 = f5_2 * (long) g5_19;
209-
long f5g6_19 = f5 * (long) g6_19;
189+
long f5g6_19 = t[5] * (long) g6_19;
210190
long f5g7_38 = f5_2 * (long) g7_19;
211-
long f5g8_19 = f5 * (long) g8_19;
191+
long f5g8_19 = t[5] * (long) g8_19;
212192
long f5g9_38 = f5_2 * (long) g9_19;
213-
long f6g0 = f6 * (long) g0;
214-
long f6g1 = f6 * (long) g1;
215-
long f6g2 = f6 * (long) g2;
216-
long f6g3 = f6 * (long) g3;
217-
long f6g4_19 = f6 * (long) g4_19;
218-
long f6g5_19 = f6 * (long) g5_19;
219-
long f6g6_19 = f6 * (long) g6_19;
220-
long f6g7_19 = f6 * (long) g7_19;
221-
long f6g8_19 = f6 * (long) g8_19;
222-
long f6g9_19 = f6 * (long) g9_19;
223-
long f7g0 = f7 * (long) g0;
224-
long f7g1_2 = f7_2 * (long) g1;
225-
long f7g2 = f7 * (long) g2;
193+
long f6g0 = t[6] * (long) g[0];
194+
long f6g1 = t[6] * (long) g[1];
195+
long f6g2 = t[6] * (long) g[2];
196+
long f6g3 = t[6] * (long) g[3];
197+
long f6g4_19 = t[6] * (long) g4_19;
198+
long f6g5_19 = t[6] * (long) g5_19;
199+
long f6g6_19 = t[6] * (long) g6_19;
200+
long f6g7_19 = t[6] * (long) g7_19;
201+
long f6g8_19 = t[6] * (long) g8_19;
202+
long f6g9_19 = t[6] * (long) g9_19;
203+
long f7g0 = t[7] * (long) g[0];
204+
long f7g1_2 = f7_2 * (long) g[1];
205+
long f7g2 = t[7] * (long) g[2];
226206
long f7g3_38 = f7_2 * (long) g3_19;
227-
long f7g4_19 = f7 * (long) g4_19;
207+
long f7g4_19 = t[7] * (long) g4_19;
228208
long f7g5_38 = f7_2 * (long) g5_19;
229-
long f7g6_19 = f7 * (long) g6_19;
209+
long f7g6_19 = t[7] * (long) g6_19;
230210
long f7g7_38 = f7_2 * (long) g7_19;
231-
long f7g8_19 = f7 * (long) g8_19;
211+
long f7g8_19 = t[7] * (long) g8_19;
232212
long f7g9_38 = f7_2 * (long) g9_19;
233-
long f8g0 = f8 * (long) g0;
234-
long f8g1 = f8 * (long) g1;
235-
long f8g2_19 = f8 * (long) g2_19;
236-
long f8g3_19 = f8 * (long) g3_19;
237-
long f8g4_19 = f8 * (long) g4_19;
238-
long f8g5_19 = f8 * (long) g5_19;
239-
long f8g6_19 = f8 * (long) g6_19;
240-
long f8g7_19 = f8 * (long) g7_19;
241-
long f8g8_19 = f8 * (long) g8_19;
242-
long f8g9_19 = f8 * (long) g9_19;
243-
long f9g0 = f9 * (long) g0;
213+
long f8g0 = t[8] * (long) g[0];
214+
long f8g1 = t[8] * (long) g[1];
215+
long f8g2_19 = t[8] * (long) g2_19;
216+
long f8g3_19 = t[8] * (long) g3_19;
217+
long f8g4_19 = t[8] * (long) g4_19;
218+
long f8g5_19 = t[8] * (long) g5_19;
219+
long f8g6_19 = t[8] * (long) g6_19;
220+
long f8g7_19 = t[8] * (long) g7_19;
221+
long f8g8_19 = t[8] * (long) g8_19;
222+
long f8g9_19 = t[8] * (long) g9_19;
223+
long f9g0 = t[9] * (long) g[0];
244224
long f9g1_38 = f9_2 * (long) g1_19;
245-
long f9g2_19 = f9 * (long) g2_19;
225+
long f9g2_19 = t[9] * (long) g2_19;
246226
long f9g3_38 = f9_2 * (long) g3_19;
247-
long f9g4_19 = f9 * (long) g4_19;
227+
long f9g4_19 = t[9] * (long) g4_19;
248228
long f9g5_38 = f9_2 * (long) g5_19;
249-
long f9g6_19 = f9 * (long) g6_19;
229+
long f9g6_19 = t[9] * (long) g6_19;
250230
long f9g7_38 = f9_2 * (long) g7_19;
251-
long f9g8_19 = f9 * (long) g8_19;
231+
long f9g8_19 = t[9] * (long) g8_19;
252232
long f9g9_38 = f9_2 * (long) g9_19;
253233
long h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
254234
long h1 = f0g1+f1g0 +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;

0 commit comments

Comments
 (0)