-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNewHopeTest.java
471 lines (424 loc) · 31.3 KB
/
NewHopeTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
package newhope;
/**************************************************************************************************
*
* Basic tests for the New Hope algorithms.
*
**************************************************************************************************/
import java.math.BigInteger;
import java.util.Arrays;
class NewHopeTest {
public static void main (String[] args) {
boolean debug = false;
boolean testfixed = true;
int iterations = 100;
NewHopeKeyExchange kex = new NewHopeKeyExchange ();
int i;
byte[] recData, secretI, secretR, knownAnswer;
byte[][] response;
NewHopeKeyPair keysI, keysR;
if (testfixed) {
System.out.print ("\n\n\t\t\t *** Running known answer test ***\n\n");
NewHopePrivateKey sb = loadFixedBob();
NewHopePublicKey pa = loadFixedAlice();
RingElt eprime = loadFixedEprime();
NewHopePublicKey testB = new NewHopePublicKey (sb, kex.getA());
if (debug)
System.out.println ("Bob's public key = " + testB.getKey() + "\n");
knownAnswer = new byte[] {
(byte) 0xb9, (byte) 0xe8, (byte) 0x0c, (byte) 0x50, (byte) 0xb9, (byte) 0x82, (byte) 0xf8,
(byte) 0x33, (byte) 0x94, (byte) 0x91, (byte) 0x2d, (byte) 0x92, (byte) 0x61, (byte) 0x38,
(byte) 0xfc, (byte) 0xb3, (byte) 0xaa, (byte) 0x89, (byte) 0xd3, (byte) 0x0c, (byte) 0xea,
(byte) 0x35, (byte) 0x66, (byte) 0x05, (byte) 0xc5, (byte) 0x27, (byte) 0x79, (byte) 0xe7,
(byte) 0xe0, (byte) 0xd5, (byte) 0x2b, (byte) 0xb7
};
response = kex.respAgreement (sb, pa, eprime);
if (Arrays.equals (response[0], knownAnswer))
System.out.println ("Known answer test passed :)");
else {
System.out.println ("Known answer test failed :(");
if (debug) {
System.out.print ("\nFixed test: Shared secret = ");
printByteArray (response[0]);
System.out.println ("\n");
}
}
}
System.out.println ("\n\n\t\t\t *** Testing Key Encapsulation ***\n");
NewHopeKem nhkem = new NewHopeKem ();
byte[] secretA;
byte[] secretB = new byte[32];
NewHopeKeyPair AKeys = nhkem.generateKeyPair ();
NewHopeKeyPair BKeys = nhkem.generateKeyPair ();
byte[][] encapsulation = nhkem.encapsulate (BKeys.getPrivateKey(), AKeys.getPublicKey());
RingElt vprime = new RingElt (encapsulation[0]);
System.arraycopy (encapsulation[1], 0, secretB, 0, encapsulation[1].length);
secretA = nhkem.decapsulate (AKeys.getPrivateKey(), BKeys.getPublicKey(), vprime);
if (Arrays.equals (secretA, secretB)) {
System.out.println ("Shared secrets match :)\n");
if (debug) {
System.out.println ("Shared secret = ");
printByteArray (secretA);
System.out.println ("\n\n");
}
}
else {
System.out.println ("Shared secrets do not match :(\n");
if (debug) {
System.out.println ("secretA = ");
printByteArray (secretA);
System.out.print ("\n secretB = ");
printByteArray (secretB);
System.out.println ("\n\n");
}
}
System.out.printf ("\n\n\t\t *** Testing %d key exchanges with randomly generated keys ***\n\n", iterations);
long startTime, endTime, min = 10000000, max = 0, thisTime, totalTime = 0;
for (i = 0; i < iterations; i++) {
startTime = System.nanoTime();
keysI = kex.generateKeyPair ();
keysR = kex.generateKeyPair ();
if (debug) {
System.out.println ("Initiator private key: ");
System.out.println ("\t s = " + keysI.getPrivateKey().getS());
System.out.println ("Initiator public key: ");
System.out.println ("\t k = " + keysI.getPublicKey().getKey() + "\n");
System.out.println ("Responder private key: ");
System.out.println ("\t s = " + keysR.getPrivateKey().getS());
System.out.println ("Responder public key: ");
System.out.println ("\t k = " + keysR.getPublicKey().getKey() + "\n");
}
response = kex.respAgreement (keysR.getPrivateKey(), keysI.getPublicKey());
secretR = response[0];
recData = response[1];
secretI = kex.initAgreement (keysI.getPrivateKey(), keysR.getPublicKey(), recData);
if (Arrays.equals (secretI, secretR)) {
if (debug) {
System.out.print ("Shared secrets match :)\nShared secret = ");
printByteArray (secretI);
System.out.println ("\n");
}
}
else {
System.out.print ("Shared secrets do not match :(\n secretI = ");
printByteArray (secretI);
System.out.print ("\n secretR = ");
printByteArray (secretR);
System.out.println ("\n");
}
endTime = System.nanoTime();
thisTime = (endTime - startTime) / 1000; // convert nanoseconds to microseconds
totalTime += thisTime;
if (min > thisTime)
min = thisTime;
if (max < thisTime)
max = thisTime;
}
System.out.println ("\nTime for " + iterations + " iterations: " + totalTime + " microseconds");
System.out.println ("Average time = " + (totalTime / iterations) + " microseconds");
System.out.println ("Min = " + min + " microseconds");
System.out.println ("Max = " + max + " microseconds\n");
}
public static void printByteArray (byte[] in) {
System.out.print ("0x");
for (int i = 0; i < in.length; i++)
System.out.printf ("%02x ", in[i]);
}
public static NewHopePublicKey loadFixedAlice () {
long[] keydata = new long[] {
0x0025, 0x2052, 0x11ec, 0x115f, 0x2d71, 0x0af9, 0x2553, 0x28e3, 0x2ef9, 0x2a96, 0x2921,
0x1d71, 0x157f, 0x23ab, 0x230b, 0x23d7, 0x120e, 0x0b50, 0x06ac, 0x2710, 0x2820, 0x1251,
0x08a1, 0x1049, 0x1b41, 0x16ab, 0x1d52, 0x061f, 0x0d13, 0x1812, 0x1156, 0x0a19, 0x0384,
0x1cd9, 0x0758, 0x0995, 0x1d14, 0x11af, 0x1551, 0x280a, 0x0a7e, 0x0579, 0x15f7, 0x1994,
0x05a9, 0x2219, 0x0314, 0x0253, 0x170b, 0x2308, 0x089f, 0x0d55, 0x24ca, 0x09d7, 0x0642,
0x0797, 0x15e0, 0x0e56, 0x2f8b, 0x0125, 0x245b, 0x1aa8, 0x15ab, 0x26dc, 0x0ea4, 0x09d6,
0x2321, 0x0be3, 0x1327, 0x1e60, 0x009f, 0x0c63, 0x066a, 0x1a12, 0x2951, 0x0460, 0x0c48,
0x21df, 0x03b2, 0x0189, 0x1fcc, 0x1ff2, 0x2ac7, 0x051c, 0x2a58, 0x050f, 0x217a, 0x16d0,
0x1b7a, 0x1c6f, 0x0bdc, 0x2b7e, 0x27a6, 0x1361, 0x1b48, 0x1d16, 0x2bca, 0x26ac, 0x0775,
0x09c0, 0x0d48, 0x0210, 0x23a9, 0x107e, 0x01b9, 0x23f5, 0x0dc4, 0x0f3b, 0x057a, 0x1d66,
0x20e5, 0x104c, 0x13a2, 0x1a2e, 0x262d, 0x237f, 0x1d72, 0x1bb9, 0x1f06, 0x208e, 0x083c,
0x2c1e, 0x28f8, 0x1f43, 0x1e9d, 0x0d08, 0x18b9, 0x2508, 0x1199, 0x1455, 0x1f8e, 0x2a45,
0x2a3e, 0x2fbc, 0x25da, 0x240a, 0x29ce, 0x15d4, 0x0aaf, 0x1886, 0x0a90, 0x07be, 0x1007,
0x07ad, 0x1731, 0x0ee5, 0x2cfc, 0x2643, 0x1b10, 0x26c7, 0x24a5, 0x28b8, 0x2422, 0x17e6,
0x28ec, 0x205f, 0x17c7, 0x11f2, 0x0f30, 0x0a3e, 0x1a41, 0x1600, 0x1192, 0x181b, 0x1704,
0x0117, 0x0c05, 0x16c1, 0x0214, 0x0955, 0x0622, 0x2c03, 0x00c0, 0x17ae, 0x262a, 0x02c9,
0x1e2a, 0x2fac, 0x2652, 0x23f9, 0x20dc, 0x0000, 0x26a6, 0x1c22, 0x17cd, 0x2e18, 0x1a87,
0x29bf, 0x2fef, 0x0a8c, 0x032e, 0x25dd, 0x25bd, 0x2db1, 0x0e9a, 0x0ae6, 0x2171, 0x2aaf,
0x14e5, 0x202a, 0x088d, 0x2f93, 0x0d6a, 0x0eb2, 0x20ee, 0x11f9, 0x1966, 0x11fc, 0x0208,
0x14ea, 0x08a5, 0x068e, 0x22e5, 0x10ad, 0x06d3, 0x2cf0, 0x28d8, 0x0d66, 0x0da3, 0x259d,
0x09bf, 0x0cfb, 0x2b54, 0x1d91, 0x1362, 0x0b69, 0x03af, 0x193e, 0x0dc5, 0x02b2, 0x2de7,
0x2b77, 0x098f, 0x1d36, 0x2d98, 0x2291, 0x240a, 0x295c, 0x254c, 0x1c32, 0x2a8e, 0x0ff3,
0x19f9, 0x2d42, 0x0732, 0x23ef, 0x0ac9, 0x256d, 0x2e69, 0x2eb0, 0x171b, 0x16b8, 0x26c6,
0x24a5, 0x2513, 0x0268, 0x0df6, 0x2471, 0x07c2, 0x1eac, 0x2f4d, 0x1f64, 0x2f0b, 0x276c,
0x0307, 0x2dc7, 0x0b4b, 0x2035, 0x24f7, 0x0812, 0x094f, 0x0422, 0x1ffc, 0x27b0, 0x0645,
0x16e9, 0x2a26, 0x230c, 0x0417, 0x27a8, 0x00c8, 0x01bb, 0x0fbd, 0x13b8, 0x1ec1, 0x14be,
0x2d37, 0x12f7, 0x0a36, 0x25b7, 0x1f97, 0x2975, 0x28fe, 0x1b34, 0x2ce3, 0x2512, 0x1a30,
0x040c, 0x2bbb, 0x1ed6, 0x0066, 0x12fd, 0x1390, 0x217b, 0x1130, 0x1249, 0x13ed, 0x0332,
0x185b, 0x068d, 0x1d31, 0x1f30, 0x1404, 0x2985, 0x159e, 0x063d, 0x2864, 0x1f80, 0x1ef9,
0x0f3d, 0x172e, 0x2f5a, 0x2858, 0x0585, 0x1df2, 0x2f7b, 0x086f, 0x2ab8, 0x0eba, 0x1336,
0x0bec, 0x1bec, 0x0c94, 0x0db4, 0x0635, 0x2d41, 0x1b39, 0x2155, 0x0fa0, 0x0b7f, 0x2e44,
0x256e, 0x0a7e, 0x2d21, 0x1628, 0x1775, 0x2d17, 0x19dd, 0x1391, 0x096d, 0x0379, 0x03d4,
0x0c08, 0x0df8, 0x005c, 0x2f99, 0x264a, 0x1406, 0x2d17, 0x0464, 0x2df2, 0x0f16, 0x09c4,
0x0ac0, 0x2c46, 0x12ab, 0x009a, 0x2d50, 0x1e7a, 0x0d19, 0x1f74, 0x0611, 0x1782, 0x2922,
0x0773, 0x20f9, 0x21b5, 0x01be, 0x0aa8, 0x15ea, 0x22fa, 0x2412, 0x0bb6, 0x1997, 0x17b5,
0x205d, 0x196b, 0x2b93, 0x2b86, 0x296c, 0x1575, 0x0144, 0x285e, 0x1a67, 0x0fb9, 0x28a2,
0x01b8, 0x0533, 0x2e79, 0x13b6, 0x2c88, 0x114f, 0x2073, 0x004c, 0x0f37, 0x0494, 0x2382,
0x0cf8, 0x1c72, 0x2ff5, 0x0130, 0x1a7b, 0x2586, 0x032c, 0x21a3, 0x263c, 0x1bc6, 0x1ec8,
0x151b, 0x2273, 0x1496, 0x0122, 0x075d, 0x1e5c, 0x2f21, 0x0e22, 0x08e8, 0x28a3, 0x20fa,
0x1271, 0x0041, 0x25fa, 0x264c, 0x2eaa, 0x10df, 0x29ff, 0x2677, 0x1f13, 0x2dc0, 0x2307,
0x0cbe, 0x1239, 0x0c79, 0x24bb, 0x25a1, 0x1baf, 0x1558, 0x2f7d, 0x2361, 0x0421, 0x08a6,
0x1770, 0x0052, 0x28b4, 0x084e, 0x0498, 0x180b, 0x2d6f, 0x1f18, 0x06ae, 0x1784, 0x1303,
0x0d5a, 0x08ba, 0x1356, 0x2d2e, 0x0843, 0x1145, 0x190d, 0x065e, 0x0f12, 0x071e, 0x20f7,
0x241e, 0x03d3, 0x1837, 0x1cdc, 0x255d, 0x04f2, 0x0bfe, 0x2527, 0x0339, 0x2ac5, 0x0cf6,
0x027e, 0x1361, 0x05bb, 0x267a, 0x1dc7, 0x0a7b, 0x06c2, 0x0a20, 0x2813, 0x1171, 0x0bc0,
0x1d3e, 0x0928, 0x1d93, 0x2bfc, 0x1597, 0x0484, 0x1ed9, 0x02a5, 0x04a5, 0x27ae, 0x1fb6,
0x0645, 0x15fd, 0x03a5, 0x2303, 0x29a8, 0x2e12, 0x1a5d, 0x038a, 0x01a0, 0x09b9, 0x0bae,
0x1068, 0x018a, 0x2fb6, 0x11c3, 0x26b2, 0x1202, 0x194e, 0x2571, 0x2ecf, 0x1271, 0x2f25,
0x025c, 0x2e9c, 0x29db, 0x25b8, 0x1f12, 0x1efc, 0x28bd, 0x1f5d, 0x1572, 0x03dc, 0x0045,
0x2f52, 0x1e14, 0x05e1, 0x1d85, 0x01aa, 0x20db, 0x2a3b, 0x1bbc, 0x2492, 0x2848, 0x2980,
0x1fb6, 0x24dc, 0x1534, 0x0f8f, 0x05be, 0x092c, 0x1147, 0x0465, 0x02a0, 0x2c95, 0x22c3,
0x23f1, 0x01a3, 0x03c4, 0x2853, 0x2f81, 0x2be6, 0x249b, 0x0ced, 0x1b13, 0x2f03, 0x006b,
0x1244, 0x105e, 0x291f, 0x1ffe, 0x0d54, 0x0d7a, 0x2523, 0x297b, 0x2a5f, 0x09a0, 0x2b1b,
0x01b6, 0x0713, 0x1b6a, 0x2dc0, 0x2be6, 0x1d32, 0x01d9, 0x250c, 0x2d1c, 0x09b5, 0x02f6,
0x20cf, 0x15a8, 0x0d80, 0x0f05, 0x2a55, 0x1ed2, 0x0e55, 0x008c, 0x1067, 0x1b19, 0x28ba,
0x0d95, 0x095c, 0x29de, 0x0bd8, 0x0c3b, 0x1f28, 0x0c9f, 0x1f4f, 0x00b8, 0x29f5, 0x26dc,
0x264f, 0x208b, 0x1146, 0x0254, 0x22f0, 0x2fe5, 0x043e, 0x1f2a, 0x1715, 0x108a, 0x1873,
0x230f, 0x285b, 0x0cc8, 0x162a, 0x009b, 0x21f3, 0x28c8, 0x04a3, 0x0bbb, 0x0c64, 0x1e50,
0x06b8, 0x0ac0, 0x1eaf, 0x197f, 0x11e0, 0x19aa, 0x27d8, 0x26cc, 0x199f, 0x2b72, 0x2157,
0x2d48, 0x1fae, 0x0231, 0x2005, 0x0102, 0x1104, 0x0c25, 0x0520, 0x0610, 0x22df, 0x1e9f,
0x0bc8, 0x1d19, 0x26bd, 0x1e78, 0x0af4, 0x0081, 0x0495, 0x0d0f, 0x0d0c, 0x2d18, 0x1634,
0x092f, 0x1180, 0x0125, 0x0297, 0x1861, 0x0fd9, 0x2518, 0x10fc, 0x0b3a, 0x0337, 0x2fd7,
0x1059, 0x259d, 0x21b3, 0x088f, 0x1365, 0x0477, 0x173f, 0x03ac, 0x1a13, 0x1e39, 0x174e,
0x17c8, 0x1d3e, 0x20ff, 0x040a, 0x0983, 0x282b, 0x243d, 0x272a, 0x29aa, 0x2300, 0x0937,
0x22ac, 0x2db1, 0x0407, 0x0d3d, 0x2e44, 0x1f7f, 0x03ab, 0x2948, 0x02b6, 0x142a, 0x1a9c,
0x00ce, 0x09ad, 0x059d, 0x0901, 0x2a23, 0x2967, 0x1dd1, 0x114f, 0x0262, 0x22ea, 0x09e8,
0x1ad5, 0x28b8, 0x0641, 0x2859, 0x2ac2, 0x2a63, 0x04bd, 0x2da8, 0x22e4, 0x0a94, 0x1597,
0x1740, 0x2b27, 0x1786, 0x0a3c, 0x2775, 0x2543, 0x0bda, 0x04e3, 0x2a6a, 0x1ba6, 0x0645,
0x2357, 0x14e6, 0x0bb4, 0x1103, 0x00a7, 0x235e, 0x0914, 0x2276, 0x00a8, 0x0d34, 0x0509,
0x07fc, 0x22a2, 0x2881, 0x2f63, 0x2f7b, 0x1b4f, 0x12ea, 0x2339, 0x1485, 0x262f, 0x2365,
0x05dc, 0x0750, 0x005a, 0x0368, 0x25c1, 0x288d, 0x0e76, 0x185d, 0x12c5, 0x10ca, 0x0bc7,
0x043c, 0x0a45, 0x02c4, 0x17bd, 0x1648, 0x2b96, 0x2ae8, 0x2941, 0x0dc3, 0x0915, 0x0393,
0x1f58, 0x276c, 0x04f4, 0x2bf6, 0x0e76, 0x13d2, 0x193b, 0x146a, 0x2af4, 0x00ab, 0x2585,
0x1e2f, 0x26be, 0x1178, 0x1c2a, 0x1775, 0x10b8, 0x0937, 0x0351, 0x2013, 0x13da, 0x19b6,
0x2125, 0x0c09, 0x1d6d, 0x12de, 0x001a, 0x2e25, 0x034e, 0x2c97, 0x0845, 0x11c6, 0x204f,
0x041a, 0x1df2, 0x02b7, 0x0a15, 0x1e54, 0x28b5, 0x2bce, 0x282f, 0x08e9, 0x1cd4, 0x07d8,
0x1cd8, 0x057d, 0x1d4e, 0x1363, 0x279b, 0x0520, 0x1c90, 0x1f31, 0x0e16, 0x2399, 0x1b4f,
0x247d, 0x1327, 0x2a6c, 0x13ad, 0x23b4, 0x0004, 0x0007, 0x28e0, 0x1119, 0x0bed, 0x174c,
0x1103, 0x06b0, 0x1c8e, 0x034b, 0x0973, 0x267d, 0x16d6, 0x0f4e, 0x0609, 0x12d9, 0x09a1,
0x26e5, 0x26bf, 0x2eec, 0x2ba4, 0x133a, 0x1183, 0x290a, 0x247e, 0x019f, 0x2d0e, 0x12c3,
0x2a47, 0x1be5, 0x2013, 0x05ab, 0x10cd, 0x03bd, 0x1989, 0x1d2c, 0x1fe3, 0x043e, 0x13aa,
0x0238, 0x0be8, 0x2be6, 0x29b7, 0x11de, 0x0d5c, 0x04ef, 0x037a, 0x1f29, 0x285d, 0x0e34,
0x1845, 0x1aac, 0x2191, 0x080a, 0x2224, 0x2f15, 0x1b2c, 0x0f6d, 0x2691, 0x22f9, 0x0bc0,
0x24ed, 0x01c3, 0x1464, 0x1ba3, 0x2abf, 0x0d44, 0x0788, 0x294e, 0x1a27, 0x059e, 0x05a3,
0x0ed5, 0x234b, 0x21da, 0x129d, 0x1f94, 0x2e1e, 0x14a8, 0x2d4e, 0x1ec4, 0x0228, 0x0792,
0x2af1, 0x0951, 0x28c9, 0x2cd0, 0x1d16, 0x0675, 0x28a3, 0x2e22, 0x0d4c, 0x2389, 0x01b8,
0x230f, 0x0592, 0x0d13, 0x2079, 0x0097, 0x257e, 0x14fd, 0x2880, 0x1101, 0x17e2, 0x043d,
0x106c, 0x19cb, 0x2962, 0x25ab, 0x0de5, 0x2cf9, 0x1b74, 0x152e, 0x0b55, 0x1d2c, 0x2edc,
0x261e, 0x1295, 0x0f50, 0x09df, 0x09a1, 0x2088, 0x0669, 0x1a06, 0x2ad6, 0x2208, 0x1b2a,
0x0deb, 0x2649, 0x1695, 0x2e01, 0x2c60, 0x0472, 0x2dac, 0x15d5, 0x1fef, 0x0726, 0x2e45,
0x09a9, 0x12f9, 0x205e, 0x1c10, 0x0ab7, 0x1939, 0x25cb, 0x1709, 0x2b0f, 0x10d1, 0x03fe,
0x2f61, 0x082a, 0x2c20, 0x24d2, 0x03b8, 0x1fb1, 0x0620, 0x27fc, 0x148c, 0x12d7, 0x22ce,
0x101d, 0x138c, 0x10d3, 0x1f4c, 0x0daf, 0x0245, 0x2240, 0x09ff, 0x1d64, 0x1f0b, 0x06b9,
0x0226 };
RingElt keyelt = new RingElt (keydata);
return new NewHopePublicKey (keyelt);
}
public static NewHopePrivateKey loadFixedBob () {
long[] keydata = new long[] {
0x2ffe, 0x2fff, 0x3000, 0x3000, 0x0000, 0x0000, 0x2ffa, 0x2ffd, 0x0002, 0x0002, 0x0000,
0x0000, 0x0000, 0x3000, 0x2ffd, 0x2ffe, 0x0000, 0x3000, 0x0001, 0x2ffd, 0x3000, 0x0000,
0x0003, 0x2fff, 0x0000, 0x0001, 0x2fff, 0x2fff, 0x3000, 0x0000, 0x2fff, 0x0003, 0x0002,
0x0002, 0x2fff, 0x3000, 0x0004, 0x0003, 0x2ffc, 0x0003, 0x0002, 0x0000, 0x2fff, 0x0001,
0x3000, 0x0001, 0x2fff, 0x0002, 0x0006, 0x0002, 0x0000, 0x0002, 0x0001, 0x0001, 0x0006,
0x3000, 0x3000, 0x2ffd, 0x0001, 0x3000, 0x0003, 0x0005, 0x0004, 0x0000, 0x0003, 0x0001,
0x2ff9, 0x2ffa, 0x0002, 0x0003, 0x0001, 0x2ffe, 0x0002, 0x0001, 0x0000, 0x0005, 0x2fff,
0x0003, 0x3000, 0x0000, 0x3000, 0x2fff, 0x0000, 0x2ffe, 0x0003, 0x3000, 0x3000, 0x0000,
0x3000, 0x3000, 0x0004, 0x0002, 0x0000, 0x0001, 0x2fff, 0x2ffc, 0x0003, 0x0005, 0x2ffe,
0x0002, 0x0004, 0x2fff, 0x0000, 0x0004, 0x0004, 0x0001, 0x0002, 0x2fff, 0x3000, 0x0001,
0x0000, 0x2ffd, 0x2ffc, 0x3000, 0x0005, 0x0000, 0x3000, 0x3000, 0x2fff, 0x2fff, 0x0001,
0x2ffc, 0x0000, 0x0002, 0x0000, 0x2fff, 0x2ffb, 0x0002, 0x0003, 0x0001, 0x0002, 0x2fff,
0x2fff, 0x0002, 0x0001, 0x0003, 0x2ffd, 0x0002, 0x3000, 0x0000, 0x2fff, 0x2ffd, 0x3000,
0x0000, 0x0001, 0x3000, 0x2fff, 0x2ffe, 0x0001, 0x0005, 0x0001, 0x2ffe, 0x0001, 0x0000,
0x2ffe, 0x2ffc, 0x0000, 0x3000, 0x0002, 0x0000, 0x2ffe, 0x2fff, 0x0000, 0x0002, 0x2ffe,
0x0005, 0x3000, 0x0002, 0x0002, 0x0005, 0x3000, 0x2fff, 0x2ffe, 0x3000, 0x0001, 0x0003,
0x3000, 0x0001, 0x0004, 0x0005, 0x0006, 0x3000, 0x3000, 0x0006, 0x0002, 0x2ffe, 0x0000,
0x0000, 0x2fff, 0x0004, 0x0000, 0x2ffe, 0x0000, 0x2fff, 0x0003, 0x0000, 0x0001, 0x2ffd,
0x3000, 0x0001, 0x2ffc, 0x0006, 0x0001, 0x0002, 0x0001, 0x2ffd, 0x2fff, 0x2ffe, 0x0006,
0x0000, 0x2ffd, 0x3000, 0x0001, 0x0002, 0x0002, 0x0000, 0x0004, 0x2fff, 0x2ffd, 0x2ffc,
0x0000, 0x0002, 0x0000, 0x0001, 0x2fff, 0x0001, 0x0004, 0x2ffd, 0x0002, 0x0003, 0x2ffd,
0x0001, 0x2ffd, 0x0001, 0x3000, 0x0001, 0x0002, 0x0004, 0x0002, 0x2ffd, 0x2ffe, 0x2fff,
0x2ffc, 0x3000, 0x2ffd, 0x0001, 0x0007, 0x2fff, 0x0001, 0x0003, 0x0002, 0x0001, 0x0003,
0x0001, 0x2fff, 0x0000, 0x0003, 0x2ffd, 0x2fff, 0x0004, 0x0001, 0x0004, 0x0000, 0x3000,
0x2ffd, 0x0002, 0x2ffe, 0x0006, 0x2fff, 0x0003, 0x0000, 0x0004, 0x0000, 0x0001, 0x0001,
0x3000, 0x2ffc, 0x2ffe, 0x3000, 0x0000, 0x2ffc, 0x2ffe, 0x0001, 0x2ffe, 0x2ffb, 0x2ffb,
0x0000, 0x0002, 0x0003, 0x2ffe, 0x2ffd, 0x0000, 0x3000, 0x0006, 0x2ffe, 0x2ffa, 0x0002,
0x2fff, 0x0001, 0x2ffe, 0x0001, 0x0000, 0x0004, 0x2ffd, 0x0002, 0x0000, 0x2fff, 0x2ffe,
0x3000, 0x0000, 0x0003, 0x2ffe, 0x3000, 0x2ffc, 0x0005, 0x0004, 0x3000, 0x2ffb, 0x0004,
0x2fff, 0x0002, 0x2ffc, 0x0001, 0x2ffd, 0x3000, 0x2ffd, 0x2ffe, 0x0000, 0x0001, 0x0001,
0x2fff, 0x0001, 0x2ffd, 0x0002, 0x0000, 0x0007, 0x0002, 0x3000, 0x0005, 0x0000, 0x0003,
0x0000, 0x0005, 0x2ff7, 0x2ffd, 0x0004, 0x0003, 0x2fff, 0x3000, 0x0001, 0x2fff, 0x2ffe,
0x0001, 0x0000, 0x2fff, 0x0000, 0x0001, 0x3000, 0x2fff, 0x2ffe, 0x0002, 0x2ffd, 0x3000,
0x2fff, 0x2ffd, 0x2ffc, 0x0005, 0x0001, 0x3000, 0x2ffa, 0x0003, 0x0001, 0x2ffd, 0x0000,
0x0006, 0x0001, 0x0000, 0x3000, 0x2ffd, 0x2ffc, 0x0000, 0x3000, 0x0004, 0x0004, 0x0002,
0x0000, 0x2ffd, 0x0004, 0x0002, 0x0005, 0x0001, 0x3000, 0x0001, 0x0005, 0x0004, 0x2ffd,
0x0004, 0x0000, 0x2fff, 0x2ffd, 0x0002, 0x2fff, 0x2ffa, 0x0003, 0x3000, 0x2ffc, 0x0000,
0x0000, 0x2ffc, 0x2ffb, 0x0000, 0x3000, 0x2ffc, 0x0000, 0x0000, 0x2fff, 0x2fff, 0x2fff,
0x3000, 0x2fff, 0x0000, 0x0001, 0x3000, 0x0000, 0x3000, 0x3000, 0x2ffb, 0x2ffd, 0x0001,
0x2ff9, 0x2ffc, 0x3000, 0x2ffc, 0x3000, 0x2fff, 0x0006, 0x3000, 0x0001, 0x0004, 0x0005,
0x2ffe, 0x0002, 0x0002, 0x0002, 0x0001, 0x0000, 0x0001, 0x0001, 0x0000, 0x2fff, 0x3000,
0x2ffe, 0x2ffd, 0x0005, 0x2ffc, 0x0004, 0x0001, 0x0003, 0x0002, 0x0002, 0x0001, 0x0006,
0x2fff, 0x0002, 0x2ffe, 0x2ffd, 0x0001, 0x0004, 0x0004, 0x2ffe, 0x2fff, 0x0004, 0x0004,
0x0000, 0x0001, 0x0001, 0x0002, 0x3000, 0x0004, 0x0001, 0x0000, 0x2fff, 0x0002, 0x0000,
0x0001, 0x0007, 0x0000, 0x3000, 0x3000, 0x0000, 0x0002, 0x3000, 0x3000, 0x0003, 0x3000,
0x0000, 0x0003, 0x2ffc, 0x0000, 0x2ffe, 0x2ffe, 0x3000, 0x2fff, 0x0006, 0x3000, 0x2ffc,
0x2fff, 0x0003, 0x0000, 0x2ffe, 0x2ffc, 0x0003, 0x3000, 0x2ffe, 0x0004, 0x0001, 0x0003,
0x2ffd, 0x0002, 0x2ffd, 0x2ffd, 0x2fff, 0x3000, 0x0000, 0x2fff, 0x2ffc, 0x2fff, 0x0002,
0x2fff, 0x2ffb, 0x2fff, 0x0003, 0x0001, 0x0000, 0x2ffb, 0x0000, 0x0001, 0x2ffe, 0x3000,
0x2ffe, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x3000, 0x3000, 0x2ffe, 0x0003,
0x0003, 0x2ffd, 0x0003, 0x0004, 0x0000, 0x3000, 0x0004, 0x0000, 0x2ffe, 0x2fff, 0x2ffb,
0x0005, 0x0006, 0x0004, 0x0002, 0x0005, 0x0001, 0x0000, 0x2ffe, 0x0001, 0x0000, 0x0003,
0x2ffe, 0x0006, 0x3000, 0x0001, 0x2ffe, 0x0000, 0x0003, 0x0000, 0x0005, 0x0000, 0x2ffe,
0x0003, 0x2ffd, 0x2ffe, 0x0002, 0x3000, 0x0001, 0x0000, 0x2ffe, 0x0003, 0x0000, 0x2fff,
0x2ffe, 0x0001, 0x0002, 0x0002, 0x3000, 0x3000, 0x2ffd, 0x2fff, 0x0005, 0x0001, 0x2ffe,
0x0004, 0x2ffc, 0x3000, 0x0002, 0x0004, 0x2ffc, 0x3000, 0x0001, 0x0002, 0x2ffc, 0x0003,
0x0003, 0x0001, 0x2fff, 0x0003, 0x0002, 0x0000, 0x0000, 0x0002, 0x0002, 0x0000, 0x0002,
0x0003, 0x0001, 0x0000, 0x2ffd, 0x0001, 0x2ffc, 0x2ffd, 0x3000, 0x0009, 0x2ffd, 0x0003,
0x3000, 0x0001, 0x2ffe, 0x0002, 0x2ffe, 0x2fff, 0x2ffd, 0x2fff, 0x0001, 0x3000, 0x2ffe,
0x2fff, 0x0000, 0x0003, 0x0001, 0x2ffb, 0x2fff, 0x0000, 0x0004, 0x0000, 0x2fff, 0x2ffe,
0x3000, 0x2ffc, 0x0000, 0x2fff, 0x2fff, 0x2fff, 0x0003, 0x0002, 0x2fff, 0x0000, 0x0003,
0x0001, 0x2fff, 0x0001, 0x2ffd, 0x0001, 0x0006, 0x0000, 0x3000, 0x0000, 0x0001, 0x2fff,
0x0001, 0x2fff, 0x3000, 0x2fff, 0x2fff, 0x2ffe, 0x0001, 0x0004, 0x0002, 0x0002, 0x2fff,
0x0003, 0x3000, 0x0003, 0x0001, 0x2ffd, 0x2fff, 0x2fff, 0x2ffe, 0x0000, 0x0003, 0x2ffb,
0x0004, 0x2ffe, 0x0002, 0x3000, 0x0001, 0x3000, 0x0000, 0x3000, 0x0001, 0x0004, 0x0002,
0x2fff, 0x0000, 0x0001, 0x0006, 0x0000, 0x3000, 0x0001, 0x0001, 0x2fff, 0x0000, 0x2ffe,
0x0003, 0x3000, 0x0002, 0x3000, 0x0001, 0x0000, 0x2ffc, 0x2ffc, 0x3000, 0x3000, 0x0001,
0x0007, 0x2fff, 0x0007, 0x2fff, 0x3000, 0x2ffa, 0x2ffb, 0x2ffd, 0x0001, 0x2ffe, 0x2ffc,
0x2ffe, 0x0001, 0x0002, 0x0000, 0x0005, 0x0003, 0x0000, 0x0004, 0x2fff, 0x2ffc, 0x0005,
0x0003, 0x3000, 0x2ffc, 0x0002, 0x0000, 0x3000, 0x2fff, 0x0000, 0x0000, 0x0006, 0x0000,
0x0004, 0x0003, 0x0000, 0x0001, 0x0003, 0x2ffe, 0x0004, 0x0003, 0x0000, 0x3000, 0x0004,
0x0000, 0x0000, 0x0001, 0x2fff, 0x2ffd, 0x2ffe, 0x0000, 0x2ffb, 0x2fff, 0x0002, 0x0000,
0x0004, 0x0000, 0x0002, 0x0001, 0x2ffb, 0x2ffd, 0x0002, 0x3000, 0x0001, 0x0002, 0x0002,
0x0000, 0x0003, 0x2ffe, 0x0004, 0x3000, 0x0001, 0x2ffb, 0x2fff, 0x3000, 0x0005, 0x0002,
0x3000, 0x0002, 0x0001, 0x0000, 0x2ffc, 0x2ffb, 0x0005, 0x0003, 0x2ffe, 0x0001, 0x0002,
0x2ffe, 0x3000, 0x0001, 0x2ffe, 0x0000, 0x2fff, 0x0001, 0x0005, 0x3000, 0x0004, 0x2ff9,
0x3000, 0x0002, 0x3000, 0x0000, 0x3000, 0x0003, 0x2ffd, 0x2fff, 0x0000, 0x0004, 0x0003,
0x2ffe, 0x2ffe, 0x2fff, 0x2ffa, 0x2fff, 0x0005, 0x2ffe, 0x0006, 0x2fff, 0x3000, 0x0000,
0x3000, 0x2ffc, 0x0002, 0x0001, 0x3000, 0x2ffd, 0x2ffd, 0x2ffd, 0x0003, 0x0000, 0x3000,
0x2fff, 0x0002, 0x0000, 0x0000, 0x0004, 0x0004, 0x2fff, 0x0001, 0x2ffd, 0x0001, 0x0001,
0x3000, 0x0003, 0x0003, 0x3000, 0x2ffe, 0x0002, 0x2ffc, 0x0000, 0x0003, 0x2ffc, 0x0000,
0x2fff, 0x2ffe, 0x0001, 0x0001, 0x0001, 0x0000, 0x3000, 0x0002, 0x0000, 0x3000, 0x2ffe,
0x0003, 0x0002, 0x0004, 0x0001, 0x0000, 0x0000, 0x2ffe, 0x0002, 0x2ffe, 0x0001, 0x3000,
0x0001, 0x0004, 0x0002, 0x0001, 0x0005, 0x0001, 0x3000, 0x2ffe, 0x2ffb, 0x0005, 0x3000,
0x2ffe, 0x0000, 0x3000, 0x0002, 0x2ffd, 0x2ffe, 0x0002, 0x2fff, 0x0004, 0x0001, 0x2ffe,
0x2fff, 0x0006, 0x0000, 0x2ffd, 0x0002, 0x2fff, 0x0005, 0x2fff, 0x2ffe, 0x0004, 0x0000,
0x2fff, 0x2fff, 0x0001, 0x0002, 0x0003, 0x0003, 0x0002, 0x2ffe, 0x0005, 0x2fff, 0x0003,
0x0000, 0x3000, 0x2fff, 0x3000, 0x2fff, 0x3000, 0x3000, 0x0001, 0x3000, 0x2fff, 0x2fff,
0x0002, 0x3000, 0x3000, 0x2ffe, 0x2ffd, 0x2ff9, 0x0001, 0x2fff, 0x0001, 0x0001, 0x2fff,
0x0002, 0x0002, 0x2fff, 0x2ffe, 0x2ffd, 0x0003, 0x0003, 0x0001, 0x3000, 0x0001, 0x0001,
0x2ffd, 0x0001, 0x2fff, 0x2ffc, 0x0000, 0x2ffd, 0x2fff, 0x0000, 0x0001, 0x0003, 0x0000,
0x0001, 0x0000, 0x0000, 0x2fff, 0x0004, 0x0002, 0x0002, 0x0001, 0x2ffd, 0x0004, 0x0001,
0x2ffe, 0x2ffd, 0x0002, 0x2ffe, 0x0000, 0x0002, 0x2ffe, 0x2ffa, 0x0000, 0x0000, 0x2fff,
0x2ffe
};
RingElt keyelt = new RingElt (keydata);
return new NewHopePrivateKey (keyelt, Constants.ORDINARY);
}
public static RingElt loadFixedEprime () {
long[] edata = new long[] {
0x0002, 0x3000, 0x0002, 0x0005, 0x0003, 0x0002, 0x0001, 0x0005, 0x0004, 0x0000, 0x2fff,
0x2fff, 0x0001, 0x0000, 0x2ffb, 0x3000, 0x0001, 0x0001, 0x3000, 0x0005, 0x0000, 0x0001,
0x0000, 0x2ffc, 0x2ffc, 0x2fff, 0x0000, 0x3000, 0x0003, 0x3000, 0x2ffc, 0x2fff, 0x2ffc,
0x2ffd, 0x2ffd, 0x0003, 0x0002, 0x3000, 0x0004, 0x0003, 0x0000, 0x0003, 0x0001, 0x2ffa,
0x3000, 0x0002, 0x0004, 0x3000, 0x2fff, 0x3000, 0x0003, 0x0001, 0x0005, 0x0002, 0x0001,
0x0001, 0x2ffe, 0x0004, 0x2ffe, 0x0001, 0x2ffc, 0x0004, 0x0004, 0x3000, 0x3000, 0x2ffd,
0x0000, 0x0000, 0x2ffe, 0x0002, 0x3000, 0x0001, 0x0002, 0x3000, 0x2ffc, 0x0002, 0x0004,
0x3000, 0x2fff, 0x0002, 0x0001, 0x0004, 0x2fff, 0x2fff, 0x0002, 0x0006, 0x0003, 0x0005,
0x2fff, 0x2ffb, 0x0004, 0x2ffb, 0x0001, 0x0000, 0x0001, 0x0002, 0x0002, 0x0000, 0x0000,
0x0005, 0x0004, 0x0001, 0x0003, 0x2ffd, 0x0002, 0x2ffc, 0x0006, 0x3000, 0x2ffe, 0x2ffd,
0x0000, 0x0002, 0x3000, 0x0001, 0x0000, 0x0000, 0x0004, 0x0002, 0x2fff, 0x0007, 0x3000,
0x2ffc, 0x2ffd, 0x0002, 0x0002, 0x3000, 0x2fff, 0x0000, 0x0003, 0x2ffd, 0x0002, 0x0001,
0x0004, 0x3000, 0x3000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0004, 0x0003, 0x0002, 0x2ffd,
0x3000, 0x0000, 0x2fff, 0x0002, 0x3000, 0x2ffd, 0x2ffe, 0x0002, 0x0000, 0x0005, 0x0000,
0x0003, 0x0001, 0x0004, 0x0002, 0x0007, 0x0001, 0x2ffe, 0x0000, 0x0001, 0x3000, 0x2fff,
0x0003, 0x2fff, 0x2fff, 0x0002, 0x0005, 0x0001, 0x2ffd, 0x0003, 0x0000, 0x3000, 0x2ffe,
0x0001, 0x3000, 0x2fff, 0x0005, 0x0002, 0x0000, 0x0001, 0x0000, 0x3000, 0x0001, 0x0000,
0x0001, 0x3000, 0x3000, 0x0001, 0x0004, 0x0000, 0x0003, 0x2fff, 0x0003, 0x2ffd, 0x0000,
0x0003, 0x0001, 0x0003, 0x0000, 0x0000, 0x0004, 0x0003, 0x2fff, 0x2fff, 0x0006, 0x3000,
0x2ffe, 0x0001, 0x3000, 0x0001, 0x0003, 0x0001, 0x0000, 0x2fff, 0x2ffe, 0x0006, 0x0001,
0x0005, 0x0004, 0x0002, 0x0000, 0x0000, 0x2ffd, 0x2ffd, 0x0001, 0x0009, 0x0001, 0x2fff,
0x0001, 0x0006, 0x0004, 0x2ffc, 0x2ffe, 0x0001, 0x0001, 0x0000, 0x0001, 0x3000, 0x0001,
0x0007, 0x3000, 0x2ffe, 0x2ffe, 0x0001, 0x2fff, 0x0004, 0x0005, 0x0007, 0x0003, 0x0001,
0x2fff, 0x0000, 0x2ffd, 0x3000, 0x3000, 0x2ffd, 0x2ffc, 0x2ffc, 0x2ffc, 0x2ffc, 0x0003,
0x0003, 0x2ffe, 0x3000, 0x0000, 0x0000, 0x0000, 0x0001, 0x2ffc, 0x0003, 0x2ffd, 0x2fff,
0x2fff, 0x2ffd, 0x0001, 0x2ffe, 0x3000, 0x2fff, 0x2fff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0001, 0x0000, 0x3000, 0x0000, 0x3000, 0x0005, 0x0006, 0x3000, 0x0003, 0x3000, 0x2ffe,
0x3000, 0x0002, 0x0000, 0x0000, 0x0001, 0x2fff, 0x0002, 0x2ffd, 0x3000, 0x2fff, 0x0002,
0x0000, 0x0004, 0x0001, 0x3000, 0x0001, 0x0002, 0x2ffd, 0x0002, 0x0003, 0x2ffd, 0x3000,
0x0000, 0x0002, 0x2fff, 0x2ffc, 0x3000, 0x0000, 0x0000, 0x3000, 0x0000, 0x0000, 0x3000,
0x0000, 0x2ffe, 0x2fff, 0x0004, 0x0002, 0x0001, 0x3000, 0x0005, 0x2ffd, 0x0003, 0x0000,
0x0002, 0x0002, 0x0000, 0x2fff, 0x2ffe, 0x0003, 0x0001, 0x0003, 0x0000, 0x2fff, 0x0005,
0x0002, 0x0001, 0x0005, 0x0000, 0x0000, 0x2ffc, 0x3000, 0x0001, 0x2fff, 0x2ffc, 0x2ffe,
0x0002, 0x3000, 0x0001, 0x3000, 0x0003, 0x2ffe, 0x3000, 0x0000, 0x0003, 0x3000, 0x2ffe,
0x0006, 0x0005, 0x0005, 0x0000, 0x0000, 0x0001, 0x2fff, 0x0000, 0x2ffe, 0x0001, 0x2fff,
0x2fff, 0x0002, 0x3000, 0x2ffe, 0x0002, 0x0002, 0x0002, 0x0004, 0x0004, 0x3000, 0x3000,
0x3000, 0x0002, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x3000, 0x2ffe, 0x2fff, 0x0003,
0x0000, 0x0002, 0x3000, 0x0001, 0x0005, 0x2ffd, 0x2ffe, 0x0002, 0x3000, 0x0003, 0x0001,
0x0002, 0x3000, 0x0000, 0x0000, 0x3000, 0x0001, 0x2ffd, 0x2ffa, 0x3000, 0x0004, 0x0003,
0x2ffb, 0x2ffd, 0x2ffe, 0x0002, 0x0000, 0x0002, 0x2ffc, 0x0001, 0x0001, 0x2fff, 0x2ffe,
0x2fff, 0x2fff, 0x0000, 0x3000, 0x3000, 0x0004, 0x3000, 0x0001, 0x0002, 0x0002, 0x0008,
0x0007, 0x2fff, 0x2ffe, 0x3000, 0x3000, 0x0002, 0x2ffe, 0x0000, 0x0000, 0x0002, 0x0003,
0x2fff, 0x2fff, 0x3000, 0x3000, 0x2ffd, 0x0000, 0x0004, 0x0003, 0x0002, 0x3000, 0x0000,
0x0001, 0x0004, 0x0004, 0x0001, 0x2ffd, 0x0007, 0x0003, 0x0001, 0x2fff, 0x0003, 0x2ffb,
0x0002, 0x2fff, 0x0008, 0x0006, 0x0000, 0x2ffe, 0x0003, 0x0002, 0x0000, 0x0002, 0x0001,
0x0000, 0x0000, 0x0001, 0x0002, 0x3000, 0x0005, 0x2fff, 0x0002, 0x2ff9, 0x0002, 0x3000,
0x3000, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x2ffb, 0x3000, 0x0002,
0x0001, 0x0003, 0x0003, 0x2fff, 0x0002, 0x0002, 0x0002, 0x2ffb, 0x3000, 0x2ffe, 0x0000,
0x2ffe, 0x0001, 0x2fff, 0x0001, 0x0000, 0x2ffe, 0x0002, 0x0001, 0x0000, 0x2ffa, 0x0005,
0x0000, 0x0001, 0x2ffe, 0x3000, 0x0000, 0x0000, 0x0005, 0x3000, 0x0001, 0x2ffb, 0x3000,
0x0000, 0x3000, 0x0001, 0x0002, 0x0000, 0x2fff, 0x2ffd, 0x3000, 0x0001, 0x0001, 0x0001,
0x0005, 0x0001, 0x0004, 0x3000, 0x2ffe, 0x2fff, 0x0000, 0x2fff, 0x0003, 0x2fff, 0x0004,
0x0002, 0x2ffe, 0x0002, 0x0003, 0x0001, 0x2fff, 0x2ffc, 0x2ffe, 0x2ffc, 0x2ffd, 0x2ffc,
0x0006, 0x3000, 0x0000, 0x0000, 0x2fff, 0x2ffe, 0x0001, 0x0003, 0x2ffe, 0x3000, 0x3000,
0x0001, 0x0000, 0x0001, 0x0001, 0x0000, 0x0003, 0x0000, 0x0001, 0x0003, 0x3000, 0x0000,
0x0000, 0x2ffe, 0x2ffe, 0x3000, 0x2fff, 0x0000, 0x2ffd, 0x0000, 0x0004, 0x2ffd, 0x0001,
0x0002, 0x3000, 0x2fff, 0x3000, 0x2fff, 0x0001, 0x0003, 0x2ffd, 0x3000, 0x2fff, 0x3000,
0x2ffd, 0x0000, 0x2ffe, 0x0004, 0x0001, 0x0001, 0x2ffe, 0x0002, 0x3000, 0x3000, 0x0006,
0x0000, 0x0000, 0x2fff, 0x2fff, 0x3000, 0x2ffe, 0x0000, 0x2ffe, 0x0001, 0x2ffd, 0x0000,
0x2ffd, 0x3000, 0x0000, 0x2ffd, 0x0002, 0x0001, 0x0000, 0x0000, 0x3000, 0x2fff, 0x3000,
0x0002, 0x0008, 0x0002, 0x0003, 0x3000, 0x0003, 0x0001, 0x0003, 0x2ffe, 0x2ffc, 0x3000,
0x0005, 0x0000, 0x0001, 0x0006, 0x0005, 0x0001, 0x0001, 0x2fff, 0x0002, 0x0004, 0x0001,
0x0001, 0x2ffe, 0x0005, 0x0002, 0x0000, 0x2ffd, 0x0000, 0x0004, 0x0000, 0x2ffa, 0x2fff,
0x0000, 0x3000, 0x0004, 0x0001, 0x0003, 0x3000, 0x0000, 0x0002, 0x2ffc, 0x0004, 0x2fff,
0x3000, 0x0005, 0x3000, 0x2ffd, 0x0001, 0x0001, 0x2ffe, 0x0002, 0x0000, 0x2ffe, 0x0002,
0x2ffe, 0x0006, 0x0000, 0x0001, 0x3000, 0x0003, 0x0000, 0x0002, 0x0000, 0x2ffb, 0x0006,
0x0000, 0x0002, 0x0001, 0x3000, 0x2fff, 0x0005, 0x3000, 0x0001, 0x0001, 0x0001, 0x2fff,
0x0001, 0x0001, 0x0002, 0x0005, 0x0001, 0x0000, 0x2ffb, 0x0003, 0x3000, 0x0001, 0x0004,
0x0002, 0x3000, 0x0002, 0x2ffd, 0x0000, 0x0001, 0x3000, 0x2ffa, 0x0001, 0x0002, 0x0004,
0x0001, 0x3000, 0x0001, 0x0000, 0x2ffc, 0x2fff, 0x2fff, 0x0002, 0x0000, 0x2ffe, 0x0001,
0x0000, 0x0007, 0x2fff, 0x0000, 0x0000, 0x0000, 0x2ffd, 0x0000, 0x0003, 0x0001, 0x0005,
0x0000, 0x3000, 0x0002, 0x2ffb, 0x0001, 0x2fff, 0x2fff, 0x3000, 0x0000, 0x0002, 0x3000,
0x3000, 0x0000, 0x2ffd, 0x0000, 0x2ffe, 0x2fff, 0x0001, 0x0001, 0x3000, 0x3000, 0x0001,
0x0000, 0x3000, 0x0001, 0x0000, 0x0001, 0x2ffa, 0x2fff, 0x0000, 0x0008, 0x3000, 0x2fff,
0x3000, 0x0002, 0x3000, 0x0000, 0x2ffe, 0x3000, 0x0000, 0x2fff, 0x2ffe, 0x0004, 0x0000,
0x0005, 0x0001, 0x0003, 0x3000, 0x0003, 0x3000, 0x0007, 0x0000, 0x0003, 0x0000, 0x0002,
0x0000, 0x2fff, 0x0000, 0x0006, 0x2ffd, 0x0001, 0x0003, 0x0000, 0x3000, 0x0004, 0x0002,
0x0000, 0x0001, 0x2ffd, 0x0000, 0x0002, 0x0001, 0x0001, 0x0002, 0x2fff, 0x0000, 0x3000,
0x2ffc, 0x2ffb, 0x2fff, 0x3000, 0x0006, 0x0001, 0x2ffe, 0x0002, 0x0002, 0x0003, 0x0001,
0x2ff8, 0x0001, 0x0001, 0x0001, 0x0002, 0x0000, 0x2ff9, 0x2fff, 0x2ffc, 0x0003, 0x0004,
0x0004, 0x0000, 0x2ffe, 0x3000, 0x3000, 0x0001, 0x2fff, 0x3000, 0x0002, 0x2ffb, 0x2fff,
0x0002, 0x0002, 0x0005, 0x0003, 0x0000, 0x0003, 0x3000, 0x2ffc, 0x0001, 0x0002, 0x2ffb,
0x0000, 0x3000, 0x0003, 0x0003, 0x3000, 0x3000, 0x0005, 0x2fff, 0x0001, 0x0001, 0x0001,
0x2ffe, 0x0000, 0x3000, 0x0001, 0x2fff, 0x0000, 0x0001, 0x0001, 0x3000, 0x0002, 0x0005,
0x0003, 0x0000, 0x3000, 0x0001, 0x3000, 0x3000, 0x3000, 0x2fff, 0x0001, 0x3000, 0x2ffc,
0x0002, 0x0001, 0x0000, 0x0002, 0x3000, 0x0003, 0x0006, 0x3000, 0x2ffd, 0x3000, 0x2fff,
0x2fff, 0x0000, 0x0002, 0x2ffd, 0x2ffe, 0x0003, 0x0003, 0x3000, 0x0001, 0x3000, 0x0000,
0x2fff, 0x2fff, 0x2ffe, 0x2fff, 0x0000, 0x2ffb, 0x0005, 0x0003, 0x0003, 0x3000, 0x0003,
0x2fff, 0x0000, 0x0006, 0x3000, 0x3000, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x2ffe,
0x2ff9, 0x3000, 0x2fff, 0x0005, 0x0001, 0x3000, 0x2fff, 0x3000, 0x3000, 0x2ffe, 0x2fff,
0x3000, 0x0001, 0x2ffd, 0x3000, 0x0003, 0x0002, 0x0000, 0x0000, 0x3000, 0x3000, 0x0004,
0x0000, 0x0004, 0x0003, 0x0002, 0x2ffb, 0x0000, 0x3000, 0x0000, 0x2ffe, 0x2ffe, 0x0005,
0x2fff, 0x0001, 0x0003, 0x0005, 0x0003, 0x0007, 0x0001, 0x2ffd, 0x0002, 0x0002, 0x2fff,
0x3000
};
return new RingElt (edata);
}
}