MCPcopy Create free account
hub / github.com/bcgit/bc-java / GF2x

Class GF2x

core/src/main/java/org/bouncycastle/pqc/crypto/hqc/GF2x.java:7–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5import org.bouncycastle.util.Pack;
6
7class GF2x
8{
9 private final int bits;
10 private final int size;
11 private final int sizeExt;
12
13 GF2x(int n)
14 {
15 if ((n & 0xFFFF0001) != 1)
16 throw new IllegalArgumentException();
17
18 bits = n;
19 size = Utils.getByte64SizeFromBitSize(n);
20 sizeExt = size * 2;
21 }
22
23 void addTo(long[] x, long[] z)
24 {
25 Nat.xorTo64(size, x, z);
26 }
27
28 void clear(long[] z)
29 {
30 Nat.zero64(size, z);
31 }
32
33 long[] create()
34 {
35 return new long[size];
36 }
37
38 long[] createExt()
39 {
40 return new long[sizeExt];
41 }
42
43 long equalTo(long[] x, long[] y)
44 {
45 return Nat.equalTo64(size, x, y);
46 }
47
48 void mul(long[] x, long[] y, long[] z)
49 {
50 long[] tt = createExt();
51 long[] tmp = new long[size << 4];
52 karatsuba(size, x, 0, y, 0, tt, 0, tmp, 0);
53 reduce(tt, z);
54 }
55
56 void random(Shake256RandomGenerator generator, long[] z)
57 {
58 byte[] tmp = new byte[size << 3];
59 generator.xofGetBytes(tmp, Utils.getByteSizeFromBitSize(bits));
60 Pack.littleEndianToLong(tmp, 0, z);
61 z[size - 1] &= (1L << (bits & 63)) - 1L;
62 }
63
64 /**

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected