finitefields 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ ## finitefields
2
+
3
+ Polynomials, Galois fields and Elliptic curves - in JS
4
+
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galois.d.ts","sourceRoot":"","sources":["galois.ts"],"names":[],"mappings":"AAWA,QAAA,IAAI,IAAI,EAAC,KAAK,CAAC;AAwFf,UAAU,OAAO;IACb,MAAM,EAAC,MAAI,IAAI,CAAC;IAChB,WAAW,EAAC,QAAQ,CAAC;CACxB;AAED,UAAU,KAAK;IACX,OAAO,EAAE,CAAC,CAAC,EAAC,MAAM,EAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,MAAM,KAAG,OAAO,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,KAAG,MAAM,CAAC;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,KAAG,MAAM,CAAC;CAC3C;AAED,cAAM,EAAG,YAAW,OAAO;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAEtB,MAAM,IAAI,IAAI;gBAST,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;CAazC;AAED,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC"}
package/galois.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galois.js","sourceRoot":"","sources":["galois.ts"],"names":[],"mappings":"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"}
package/galois.ts ADDED
@@ -0,0 +1,143 @@
1
+ /*
2
+ * galois fields
3
+ *
4
+ * finitefields package by @dr-Jonas-Birch
5
+ *
6
+ * 2026
7
+ *
8
+ */
9
+
10
+ let log:(...x:any[])=>void;
11
+ let fail:(...x:any[])=>never;
12
+ let Util:Iutil;
13
+
14
+ log = console.log;
15
+ fail = (...args:any[]): never => {
16
+ console.error(...args);
17
+ throw new Error(args.toString());
18
+
19
+ return void 0 as never;
20
+ }
21
+
22
+ const arithmetics = (p:bigint,op:fieldops) =>
23
+ (op==fieldops.$add) ?
24
+ (a:bigint,b:bigint) => (a+b)%p :
25
+ (op==fieldops.$sub) ?
26
+ (a:bigint,b:bigint) => (a-b)%p :
27
+ (op==fieldops.$mul) ?
28
+ (a:bigint,b:bigint) => (a*b)%p :
29
+ (op==fieldops.$div) ?
30
+ (a:bigint,b:bigint) => (b%p)?(a/b)%p:fail() :
31
+ fail();
32
+
33
+
34
+ Util = {
35
+ countbits(x:bigint): bigint {
36
+ let n:bigint;
37
+ let y:bigint;
38
+
39
+ for (n=0n, y=x; y; y>>=1n, n++);
40
+
41
+ return n;
42
+ },
43
+
44
+ isprime(p:bigint, bitlen:bigint=256n, s:number=12): boolean {
45
+ let n:number;
46
+ let r:bigint;
47
+ let ret:boolean;
48
+
49
+ if (p<2n)
50
+ return true;
51
+
52
+ for (n=0, ret=true; n<s; n++) {
53
+ r = this.rnd(bitlen,(p-1n));
54
+ r += 1n;
55
+ if (((r**(p-1n))%p) != 1n) {
56
+ ret = false;
57
+ break;
58
+ }
59
+ }
60
+
61
+ return ret;
62
+ },
63
+
64
+ rnd(bitlen:bigint, max:bigint=0n): bigint {
65
+ let rnd_:(b:bigint,n:bigint)=>bigint;
66
+ let mkrnd:()=>bigint;
67
+ let val:bigint;
68
+
69
+ mkrnd = (): bigint =>
70
+ BigInt(
71
+ (Math.floor(Math.random()*10000000000000000))
72
+ );
73
+
74
+ rnd_ = (b:bigint,n:bigint): bigint => {
75
+ if (b < 1)
76
+ return n;
77
+ else
78
+ return rnd_((b-=58n),
79
+ ((n<<58n)
80
+ |mkrnd()));
81
+ }
82
+
83
+ val = rnd_(bitlen, mkrnd());
84
+ while (this.countbits(val>>=1n)>bitlen);
85
+
86
+ if (max && (val>max))
87
+ return (val%max);
88
+ else
89
+ return val;
90
+ }
91
+ }
92
+
93
+ enum fieldops {
94
+ $add,
95
+ $sub,
96
+ $mul,
97
+ $div
98
+ }
99
+
100
+ interface Igalois {
101
+ verify:()=>void;
102
+ constructor:Function;
103
+ }
104
+
105
+ interface Iutil {
106
+ isprime: (p:bigint,bitlen?:bigint,s?:number)=>boolean;
107
+ countbits: (x:bigint)=>bigint;
108
+ rnd: (bitlen:bigint,max:bigint)=>bigint;
109
+ }
110
+
111
+ class GF implements Igalois {
112
+ private modulus: bigint;
113
+ private bitlen: bigint;
114
+ private add: (a:bigint,b:bigint)=>bigint;
115
+ private sub: typeof this.add;
116
+ private mul: typeof this.add;
117
+ private div: typeof this.add;
118
+
119
+ public verify(): void {
120
+ if (!Util.isprime(this.modulus))
121
+ return fail(this.modulus, 'needs to be prime');
122
+ else if (Util.countbits(this.modulus) > this.bitlen)
123
+ return fail(this.modulus, 'does not fit in bitlen:', this.bitlen);
124
+
125
+ return void 0;
126
+ }
127
+
128
+ constructor(field:bigint,bitlen:bigint) {
129
+ this.modulus = field;
130
+ this.bitlen = bitlen;
131
+ this.verify();
132
+
133
+ this.add = arithmetics(this.modulus, fieldops.$add);
134
+ this.sub = arithmetics(this.modulus, fieldops.$sub);
135
+ this.mul = arithmetics(this.modulus, fieldops.$mul);
136
+ this.div = arithmetics(this.modulus, fieldops.$div);
137
+
138
+ return this;
139
+ }
140
+
141
+ }
142
+
143
+ export { Util, GF };
package/main.js CHANGED
@@ -17,7 +17,7 @@ p1 = new Polynomial([x0, x1, x2, x3], 2n);
17
17
  p2 = new Polynomial({ tobject: 0n, x3: 1n, x2: 0n, x: 1n, 1: 1n }, 2n);
18
18
  // log(p1, " + ", p2, " =");
19
19
  // p3 = Polynomial.add(p1,p2);
20
- p3 = new Polynomial(256n, 2n);
20
+ p3 = new Polynomial(1n << 254n, 2n);
21
21
  log(p3, p3.eval());
22
22
  // log(p3.eval());
23
23
  //# sourceMappingURL=main.js.map
package/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,IAAI,GAAsB,CAAC;AAC3B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAElB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AAEd,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEf,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAClE,4BAA4B;AAC5B,8BAA8B;AAC9B,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE9B,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACnB,kBAAkB"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,IAAI,GAAsB,CAAC;AAC3B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAElB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAa,CAAC;AAClB,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AACd,IAAI,EAAS,CAAC;AAEd,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEf,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,EAAE,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAClE,4BAA4B;AAC5B,8BAA8B;AAC9B,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,IAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAElC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACnB,kBAAkB"}
package/main.ts CHANGED
@@ -21,7 +21,7 @@ p1 = new Polynomial([x0, x1, x2, x3], 2n);
21
21
  p2 = new Polynomial({ tobject:0n, x3:1n, x2:0n, x:1n, 1:1n }, 2n);
22
22
  // log(p1, " + ", p2, " =");
23
23
  // p3 = Polynomial.add(p1,p2);
24
- p3 = new Polynomial(256n, 2n);
24
+ p3 = new Polynomial(1n<<254n, 2n);
25
25
 
26
26
  log(p3, p3.eval());
27
27
  // log(p3.eval());
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "finitefields",
3
3
  "type": "module",
4
- "version": "0.0.3",
4
+ "version": "0.0.4",
5
5
  "description": "Galois/Finite field crypto and raw elliptic curves",
6
6
  "main": "main.js",
7
7
  "scripts": {
package/.lesshst DELETED
@@ -1,3 +0,0 @@
1
- .less-history-file:
2
- .search
3
- "token
package/.viminfo DELETED
@@ -1,112 +0,0 @@
1
- # This viminfo file was generated by Vim 9.0.
2
- # You may edit it if you're careful!
3
-
4
- # Viminfo version
5
- |1,4
6
-
7
- # Value of 'encoding' when this file was written
8
- *encoding=latin1
9
-
10
-
11
- # hlsearch on (H) or off (h):
12
- ~h
13
- # Command Line History (newest to oldest):
14
- :wq
15
- |2,0,1770671027,,"wq"
16
-
17
- # Search String History (newest to oldest):
18
-
19
- # Expression History (newest to oldest):
20
-
21
- # Input Line History (newest to oldest):
22
-
23
- # Debug Line History (newest to oldest):
24
-
25
- # Registers:
26
- ""- CHAR 0
27
- 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
28
- |3,1,36,0,1,0,1770671022,"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"
29
-
30
- # File marks:
31
- '0 1 72 ~/.npmrc
32
- |4,48,1,72,1770671027,"~/.npmrc"
33
- '1 1 39 /home/jobj/token
34
- |4,49,1,39,1770670606,"/home/jobj/token"
35
- '2 5 11 ~/.gitignore
36
- |4,50,5,11,1770670071,"~/.gitignore"
37
- '3 4 8 ~/.gitignore
38
- |4,51,4,8,1770670048,"~/.gitignore"
39
- '4 4 8 ~/.gitignore
40
- |4,52,4,8,1770670048,"~/.gitignore"
41
-
42
- # Jumplist (newest first):
43
- -' 1 72 ~/.npmrc
44
- |4,39,1,72,1770671027,"~/.npmrc"
45
- -' 1 39 /home/jobj/token
46
- |4,39,1,39,1770670606,"/home/jobj/token"
47
- -' 1 39 /home/jobj/token
48
- |4,39,1,39,1770670606,"/home/jobj/token"
49
- -' 5 11 ~/.gitignore
50
- |4,39,5,11,1770670071,"~/.gitignore"
51
- -' 5 11 ~/.gitignore
52
- |4,39,5,11,1770670071,"~/.gitignore"
53
- -' 5 11 ~/.gitignore
54
- |4,39,5,11,1770670071,"~/.gitignore"
55
- -' 5 11 ~/.gitignore
56
- |4,39,5,11,1770670071,"~/.gitignore"
57
- -' 4 8 ~/.gitignore
58
- |4,39,4,8,1770670065,"~/.gitignore"
59
- -' 4 8 ~/.gitignore
60
- |4,39,4,8,1770670065,"~/.gitignore"
61
- -' 4 8 ~/.gitignore
62
- |4,39,4,8,1770670065,"~/.gitignore"
63
- -' 4 8 ~/.gitignore
64
- |4,39,4,8,1770670065,"~/.gitignore"
65
- -' 4 8 ~/.gitignore
66
- |4,39,4,8,1770670048,"~/.gitignore"
67
- -' 4 8 ~/.gitignore
68
- |4,39,4,8,1770670048,"~/.gitignore"
69
- -' 4 8 ~/.gitignore
70
- |4,39,4,8,1770670048,"~/.gitignore"
71
- -' 4 8 ~/.gitignore
72
- |4,39,4,8,1770670048,"~/.gitignore"
73
- -' 1 0 ~/.gitignore
74
- |4,39,1,0,1770670030,"~/.gitignore"
75
- -' 1 0 ~/.gitignore
76
- |4,39,1,0,1770670030,"~/.gitignore"
77
- -' 1 0 ~/.gitignore
78
- |4,39,1,0,1770670030,"~/.gitignore"
79
- -' 1 0 ~/.gitignore
80
- |4,39,1,0,1770670030,"~/.gitignore"
81
- -' 1 0 ~/.gitignore
82
- |4,39,1,0,1770670030,"~/.gitignore"
83
- -' 1 0 ~/.gitignore
84
- |4,39,1,0,1770670030,"~/.gitignore"
85
- -' 1 0 ~/.gitignore
86
- |4,39,1,0,1770670030,"~/.gitignore"
87
- -' 1 0 ~/.gitignore
88
- |4,39,1,0,1770670030,"~/.gitignore"
89
-
90
- # History of marks within files (newest to oldest):
91
-
92
- > ~/.npmrc
93
- * 1770671026 0
94
- " 1 72
95
- ^ 1 73
96
- . 1 57
97
- + 1 57
98
-
99
- > /home/jobj/token
100
- * 1770670605 0
101
- " 1 39
102
- ^ 1 40
103
- . 1 24
104
- + 1 24
105
-
106
- > ~/.gitignore
107
- * 1770670070 0
108
- " 5 11
109
- ^ 5 12
110
- . 5 11
111
- + 4 8
112
- + 5 11
package/Makefile DELETED
@@ -1,13 +0,0 @@
1
- .PHONY: run clean
2
-
3
- all: build
4
-
5
- build:
6
- npm run build
7
-
8
- run:
9
- npm run start
10
-
11
- clean:
12
- rm -f *.js
13
-
package/main.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main.d.ts.map
package/polynomial.d.ts DELETED
@@ -1,37 +0,0 @@
1
- declare let zip: (xs: bigint[], ys: bigint[]) => zipped;
2
- type zipitem = {
3
- x: bigint;
4
- y: bigint;
5
- };
6
- type zipped = zipitem[];
7
- type xs = 'tobject' | '1' | 'x' | 'x2' | 'x3' | 'x4' | 'x5' | 'x6' | 'x7';
8
- type Polysource = bigint | bigint[] | Tobject;
9
- type Tobject = {
10
- [K in xs]?: bigint;
11
- };
12
- interface Ipolynomial {
13
- fromarr(src: bigint[]): void;
14
- fromobj(src: Tobject): void;
15
- fromint(src: bigint): void;
16
- verifyorder(order: bigint): boolean;
17
- eval(): bigint;
18
- constructor: Function;
19
- }
20
- declare class Polynomial implements Ipolynomial {
21
- private data;
22
- private degree;
23
- private order;
24
- static int2pol(src: bigint): bigint[];
25
- static int2pol_(val: bigint, arr: bigint[]): bigint[];
26
- static evaluate(src: bigint[], order: bigint): bigint;
27
- static evaluate_(src: bigint[], order: bigint, val: bigint): bigint;
28
- static add(a: Polynomial, b: Polynomial): Polynomial;
29
- constructor(src: Polysource, order: bigint);
30
- fromarr(src: bigint[]): void;
31
- fromobj(src: Tobject): void;
32
- fromint(src: bigint): void;
33
- verifyorder(order: bigint): boolean;
34
- eval(): bigint;
35
- }
36
- export { Polynomial, zip };
37
- //# sourceMappingURL=polynomial.d.ts.map
package/polynomial.js DELETED
@@ -1,129 +0,0 @@
1
- /*
2
- * polynomial data structure
3
- *
4
- * finitefields package by @dr-Jonas-Birch
5
- *
6
- * 2026
7
- *
8
- */
9
- let fail;
10
- let log;
11
- let zip;
12
- fail = () => {
13
- throw new Error();
14
- return void 0;
15
- };
16
- zip = (xs, ys) => (xs.length == ys.length) ? xs
17
- .map((x, idx) => ({ x, y: (ys[idx] || 0n) })) :
18
- fail();
19
- log = console.log;
20
- class Polynomial {
21
- data;
22
- degree;
23
- order;
24
- static int2pol(src) {
25
- return Polynomial.int2pol_(src, []);
26
- }
27
- static int2pol_(val, arr) {
28
- let x;
29
- let y;
30
- let bit;
31
- if (!val)
32
- return arr;
33
- y = (val >> 1n);
34
- bit = (val & 1n);
35
- x = new Array(bit, ...arr);
36
- return Polynomial.int2pol_(y, x);
37
- }
38
- static evaluate(src, order) {
39
- return Polynomial.evaluate_(src, order, 0n);
40
- }
41
- static evaluate_(src, order, val) {
42
- let x;
43
- let y;
44
- let z;
45
- let arr;
46
- if (!src.length)
47
- return val;
48
- else
49
- y = (order * val);
50
- arr = new Array(...src);
51
- z = arr.shift()
52
- || 0n;
53
- x = (y + z);
54
- return Polynomial.evaluate_(arr, order, x);
55
- }
56
- static add(a, b) {
57
- let z;
58
- let p;
59
- let arr;
60
- z = zip(a.data, b.data);
61
- arr = z
62
- .map(({ x, y }) => ((x + y) % BigInt(a.order)));
63
- return new Polynomial(arr, a.order);
64
- }
65
- constructor(src, order) {
66
- this.data = [];
67
- this.degree = 0;
68
- if (!src)
69
- fail();
70
- switch (true) {
71
- case src instanceof Array:
72
- this.fromarr(src);
73
- break;
74
- case typeof src === 'bigint':
75
- if (order != 2n)
76
- fail();
77
- this.fromint(src);
78
- break;
79
- case ((typeof src !== 'bigint') && ('tobject' in src)):
80
- this.fromobj(src);
81
- break;
82
- default:
83
- fail();
84
- break;
85
- }
86
- if (this.verifyorder(order))
87
- this.order = order;
88
- else
89
- fail();
90
- return this;
91
- }
92
- fromarr(src) {
93
- if (!src)
94
- fail();
95
- this.data = src;
96
- this.degree = this.data.length;
97
- return void 0;
98
- }
99
- fromobj(src) {
100
- if (!src)
101
- fail();
102
- const { tobject, ...obj } = src;
103
- this.data = Object.values(obj);
104
- this.degree = this.data.length;
105
- return void 0;
106
- }
107
- fromint(src) {
108
- if (!src)
109
- fail();
110
- this.data = Polynomial.int2pol(src);
111
- this.degree = this.data.length;
112
- return void 0;
113
- }
114
- verifyorder(order) {
115
- let arr;
116
- if (!order)
117
- fail();
118
- else if (!this.degree)
119
- return true;
120
- arr = this.data
121
- .map((x) => !(x >= order));
122
- return arr.every((x) => x);
123
- }
124
- eval() {
125
- return Polynomial.evaluate(this.data, this.order);
126
- }
127
- }
128
- export { Polynomial, zip };
129
- //# sourceMappingURL=polynomial.js.map