functionalscript 0.8.0 → 0.8.2
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/bnf/data/module.f.d.ts +6 -0
- package/bnf/data/module.f.js +57 -4
- package/bnf/data/test.f.d.ts +1 -0
- package/bnf/data/test.f.js +67 -1
- package/ci/module.f.d.ts +3 -0
- package/ci/module.f.js +169 -0
- package/ci/module.js +3 -0
- package/crypto/hmac/module.f.d.ts +5 -4
- package/crypto/hmac/module.f.js +9 -18
- package/crypto/hmac/test.f.d.ts +1 -0
- package/crypto/hmac/test.f.js +16 -8
- package/crypto/secp/module.f.d.ts +14 -11
- package/crypto/secp/module.f.js +33 -13
- package/crypto/secp/test.f.js +12 -13
- package/crypto/sha2/module.f.d.ts +11 -5
- package/crypto/sha2/module.f.js +4 -3
- package/crypto/sha2/test.f.d.ts +4 -1
- package/crypto/sha2/test.f.js +41 -31
- package/crypto/sign/module.f.d.ts +17 -4
- package/crypto/sign/module.f.js +141 -46
- package/crypto/sign/test.f.d.ts +11 -1
- package/crypto/sign/test.f.js +631 -1
- package/dev/tf/all.test.js +9 -1
- package/djs/ast/module.f.d.ts +3 -3
- package/djs/ast/test.f.js +7 -8
- package/djs/parser/module.f.d.ts +3 -3
- package/djs/parser/module.f.js +4 -4
- package/djs/parser/test.f.js +76 -77
- package/djs/serializer/module.f.d.ts +8 -8
- package/djs/serializer/module.f.js +4 -7
- package/djs/serializer/test.f.js +8 -9
- package/djs/tokenizer/module.f.d.ts +2 -2
- package/djs/tokenizer/module.f.js +3 -5
- package/djs/tokenizer/test.f.js +8 -10
- package/djs/transpiler/module.f.d.ts +3 -3
- package/djs/transpiler/module.f.js +2 -0
- package/fsc/bnf.f.d.ts +1 -1
- package/fsc/bnf.f.js +39 -51
- package/fsc/json.f.d.ts +1 -1
- package/fsc/json.f.js +56 -81
- package/fsc/test.f.js +4 -6
- package/fsm/module.f.js +3 -3
- package/fsm/test.f.js +21 -25
- package/html/module.f.js +17 -4
- package/html/test.f.d.ts +7 -0
- package/html/test.f.js +37 -0
- package/issues/031-json.f.d.ts +1 -0
- package/js/tokenizer/module.f.d.ts +4 -4
- package/js/tokenizer/module.f.js +12 -17
- package/js/tokenizer/test.f.js +9 -11
- package/json/module.f.d.ts +6 -6
- package/json/module.f.js +5 -10
- package/json/parser/module.f.d.ts +4 -4
- package/json/parser/module.f.js +7 -4
- package/json/parser/test.f.js +47 -49
- package/json/serializer/module.f.d.ts +6 -6
- package/json/serializer/module.f.js +3 -2
- package/json/serializer/test.f.js +13 -13
- package/json/test.f.js +13 -15
- package/json/tokenizer/module.f.d.ts +4 -4
- package/json/tokenizer/module.f.js +6 -7
- package/json/tokenizer/test.f.js +7 -9
- package/nanvm-lib/tests/vm/test.f.js +1 -1
- package/package.json +5 -5
- package/path/module.f.d.ts +3 -2
- package/text/ascii/test.f.js +2 -2
- package/text/module.f.d.ts +3 -2
- package/text/module.f.js +2 -2
- package/text/test.f.js +3 -3
- package/text/utf16/test.f.js +2 -2
- package/text/utf8/test.f.js +2 -2
- package/types/array/test.f.js +2 -2
- package/types/bigint/module.f.d.ts +6 -3
- package/types/bigint/module.f.js +12 -11
- package/types/bigint/test.f.d.ts +2 -0
- package/types/bigint/test.f.js +21 -2
- package/types/bit_vec/module.f.d.ts +66 -34
- package/types/bit_vec/module.f.js +97 -32
- package/types/bit_vec/test.f.d.ts +7 -0
- package/types/bit_vec/test.f.js +283 -62
- package/types/btree/find/test.f.js +9 -8
- package/types/btree/remove/test.f.js +4 -4
- package/types/btree/set/test.f.js +4 -4
- package/types/btree/test.f.js +7 -7
- package/types/byte_set/test.f.js +2 -2
- package/types/function/compare/module.f.d.ts +15 -1
- package/types/function/compare/module.f.js +1 -1
- package/types/function/compare/test.f.js +37 -4
- package/types/list/test.f.js +93 -93
- package/types/monoid/module.f.d.ts +4 -4
- package/types/monoid/module.f.js +3 -3
- package/types/monoid/test.f.js +3 -3
- package/types/nominal/module.f.d.ts +5 -0
- package/types/nominal/module.f.js +4 -0
- package/types/nominal/test.f.d.ts +5 -0
- package/types/nominal/test.f.js +53 -0
- package/types/number/module.f.js +2 -2
- package/{crypto → types}/prime_field/module.f.d.ts +2 -2
- package/{crypto → types}/prime_field/module.f.js +5 -4
- package/{crypto → types}/prime_field/test.f.js +13 -13
- package/types/range_map/test.f.js +21 -21
- package/types/sorted_list/test.f.js +10 -10
- package/types/sorted_set/test.f.js +14 -14
- package/types/string/module.f.js +2 -2
- package/types/string_set/module.f.js +3 -3
- package/bnf/func/module.f.d.ts +0 -148
- package/bnf/func/module.f.js +0 -132
- package/bnf/func/test.f.d.ts +0 -12
- package/bnf/func/test.f.js +0 -171
- package/bnf/func/testlib.f.d.ts +0 -25
- package/bnf/func/testlib.f.js +0 -150
- /package/{issues/31-json.f.d.ts → ci/module.d.ts} +0 -0
- /package/issues/{31-json.f.js → 031-json.f.js} +0 -0
- /package/{crypto → types}/prime_field/test.f.d.ts +0 -0
package/crypto/sign/test.f.js
CHANGED
|
@@ -1 +1,631 @@
|
|
|
1
|
-
|
|
1
|
+
import { utf8 } from "../../text/module.f.js";
|
|
2
|
+
import { empty, msb, repeat, vec, vec8 } from "../../types/bit_vec/module.f.js";
|
|
3
|
+
import { hmac } from "../hmac/module.f.js";
|
|
4
|
+
import { curve, secp192r1, secp256r1, secp384r1, secp521r1 } from "../secp/module.f.js";
|
|
5
|
+
import { computeSync, sha224, sha256, sha384, sha512 } from "../sha2/module.f.js";
|
|
6
|
+
import { all, concat, computeK, fromCurve, sign } from "./module.f.js";
|
|
7
|
+
const sample = utf8("sample");
|
|
8
|
+
const test = utf8("test");
|
|
9
|
+
const x00 = vec8(0x00n);
|
|
10
|
+
const x01 = vec8(0x01n);
|
|
11
|
+
const v168 = vec(168n);
|
|
12
|
+
const v256 = vec(256n);
|
|
13
|
+
const v600 = vec(600n);
|
|
14
|
+
const r32 = repeat(32n);
|
|
15
|
+
const hmac256 = hmac(sha256);
|
|
16
|
+
export default {
|
|
17
|
+
bits2int: () => {
|
|
18
|
+
if (all(7n).bits2int(vec(5n)(20n)) !== 5n) {
|
|
19
|
+
throw new Error("fail");
|
|
20
|
+
}
|
|
21
|
+
if (all(17n).bits2int(vec(3n)(5n)) !== 5n) {
|
|
22
|
+
throw new Error("fail");
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
int2octets: () => {
|
|
26
|
+
// 3 bit prime
|
|
27
|
+
if (all(5n).int2octets(5n) !== vec(8n)(5n)) {
|
|
28
|
+
throw new Error("fail");
|
|
29
|
+
}
|
|
30
|
+
// 5 bit prime
|
|
31
|
+
if (all(17n).int2octets(20n) !== vec(8n)(20n)) {
|
|
32
|
+
throw new Error("fail");
|
|
33
|
+
}
|
|
34
|
+
// 15 bit prime
|
|
35
|
+
if (all(16387n).int2octets(0x13n) !== vec(16n)(0x13n)) {
|
|
36
|
+
throw new Error("fail");
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
bit2octets: () => {
|
|
40
|
+
if (all(11n).bits2octets(vec(4n)(13n)) !== vec(8n)(2n)) {
|
|
41
|
+
throw new Error("fail");
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
k: () => {
|
|
45
|
+
//
|
|
46
|
+
const q = 0x4000000000000000000020108a2e0cc0d99f8a5efn;
|
|
47
|
+
const { qlen, int2octets, bits2octets, bits2int } = all(q);
|
|
48
|
+
if (qlen !== 163n) {
|
|
49
|
+
throw qlen;
|
|
50
|
+
}
|
|
51
|
+
const x = 0x09a4d6792295a7f730fc3f2b49cbc0f62e862272fn;
|
|
52
|
+
const h1 = computeSync(sha256)([sample]);
|
|
53
|
+
if (h1 !== v256(0xaf2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bfn)) {
|
|
54
|
+
throw h1;
|
|
55
|
+
}
|
|
56
|
+
const xi2o = int2octets(x);
|
|
57
|
+
if (xi2o !== v168(0x009a4d6792295a7f730fc3f2b49cbc0f62e862272fn)) {
|
|
58
|
+
throw xi2o;
|
|
59
|
+
}
|
|
60
|
+
const h1b2o = bits2octets(h1);
|
|
61
|
+
if (h1b2o !== v168(0x01795edf0d54db760f156d0dac04c0322b3a204224n)) {
|
|
62
|
+
throw h1b2o;
|
|
63
|
+
}
|
|
64
|
+
let v = r32(x01);
|
|
65
|
+
if (v !== v256(0x0101010101010101010101010101010101010101010101010101010101010101n)) {
|
|
66
|
+
throw v;
|
|
67
|
+
}
|
|
68
|
+
let k = r32(x00);
|
|
69
|
+
if (k !== v256(0x0000000000000000000000000000000000000000000000000000000000000000n)) {
|
|
70
|
+
throw k;
|
|
71
|
+
}
|
|
72
|
+
// d.
|
|
73
|
+
// 256 + 8 + 168 + 168 = 600
|
|
74
|
+
const vv = concat(v, x00, xi2o, h1b2o);
|
|
75
|
+
const vvu = 0x010101010101010101010101010101010101010101010101010101010101010100009a4d6792295a7f730fc3f2b49cbc0f62e862272f01795edf0d54db760f156d0dac04c0322b3a204224n;
|
|
76
|
+
if (vv !== v600(vvu)) {
|
|
77
|
+
throw [vv.toString(16), vvu.toString(16)];
|
|
78
|
+
}
|
|
79
|
+
k = hmac256(k)(vv);
|
|
80
|
+
if (k !== v256(0x09999a9bfef972d3346911883fad7951d23f2c8b47f420222d1171eeeeac5ab8n)) {
|
|
81
|
+
throw k;
|
|
82
|
+
}
|
|
83
|
+
// e.
|
|
84
|
+
v = hmac256(k)(v);
|
|
85
|
+
if (v !== v256(0xd5f4030f755ee86aa10bba8c09df114ff6b6111c238500d13c7343a8c01becf7n)) {
|
|
86
|
+
throw v;
|
|
87
|
+
}
|
|
88
|
+
// f. K = HMAC_K(V || 0x01 || int2octets(x) || bits2octets(h1))
|
|
89
|
+
k = hmac256(k)(concat(v, x01, xi2o, h1b2o));
|
|
90
|
+
if (k !== v256(0x0cf2fe96d5619c9ef53cb7417d49d37ea68a4ffed0d7e623e38689289911bd57n)) {
|
|
91
|
+
throw k;
|
|
92
|
+
}
|
|
93
|
+
// g.
|
|
94
|
+
v = hmac256(k)(v);
|
|
95
|
+
if (v !== v256(0x783457c1cf3148a8f2a9ae73ed472fa98ed9cd925d8e964ce0764def3f842b9an)) {
|
|
96
|
+
throw v;
|
|
97
|
+
}
|
|
98
|
+
// h.
|
|
99
|
+
v = hmac256(k)(v);
|
|
100
|
+
let t = msb.concat(empty)(v);
|
|
101
|
+
if (t !== v256(0x9305a46de7ff8eb107194debd3fd48aa20d5e7656cbe0ea69d2a8d4e7c67314an)) {
|
|
102
|
+
throw t;
|
|
103
|
+
}
|
|
104
|
+
// 3.
|
|
105
|
+
let kk = bits2int(t);
|
|
106
|
+
if (kk !== 0x4982d236f3ffc758838ca6f5e9fea455106af3b2bn) {
|
|
107
|
+
throw kk;
|
|
108
|
+
}
|
|
109
|
+
// 3. second try
|
|
110
|
+
k = hmac256(k)(concat(v, x00));
|
|
111
|
+
if (k !== v256(0x75cb5c05b2a78c3d81df12d74d7be0a0e94ab19815781d4d8e2902a79d0a6699n)) {
|
|
112
|
+
throw k;
|
|
113
|
+
}
|
|
114
|
+
v = hmac256(k)(v);
|
|
115
|
+
if (v !== v256(0xdcb9ca126107a9c27ce77ba58ea871c8c912d835eaddc305f2445d88f66c4c43n)) {
|
|
116
|
+
throw v;
|
|
117
|
+
}
|
|
118
|
+
v = hmac256(k)(v);
|
|
119
|
+
t = msb.concat(empty)(v);
|
|
120
|
+
if (t !== v256(0xc70c78608a3b5be9289be90ef6e81a9e2c1516d5751d2f75f50033e45f73bdebn)) {
|
|
121
|
+
throw t;
|
|
122
|
+
}
|
|
123
|
+
kk = bits2int(t);
|
|
124
|
+
if (kk !== 0x63863c30451dadf4944df4877b740d4f160a8b6abn) {
|
|
125
|
+
throw kk;
|
|
126
|
+
}
|
|
127
|
+
// 3. third try
|
|
128
|
+
k = hmac256(k)(concat(v, x00));
|
|
129
|
+
if (k !== v256(0x0a5a64b99c059520103686cb6f36bcfca788eb3bcf69ba66a5bb080b0593ba53n)) {
|
|
130
|
+
throw k;
|
|
131
|
+
}
|
|
132
|
+
v = hmac256(k)(v);
|
|
133
|
+
if (v !== v256(0x0b3b196811b19f6c6f729c43f35bcf0dfd725f17ca3430e8721453e55550a18fn)) {
|
|
134
|
+
throw v;
|
|
135
|
+
}
|
|
136
|
+
v = hmac256(k)(v);
|
|
137
|
+
t = msb.concat(empty)(v);
|
|
138
|
+
if (t !== v256(0x475e80e992140567fcc3a50dab90fe84bcd7bb03638e9c4656a06f37f6508a7cn)) {
|
|
139
|
+
throw t;
|
|
140
|
+
}
|
|
141
|
+
kk = bits2int(t);
|
|
142
|
+
if (kk !== 0x23af4074c90a02b3fe61d286d5c87f425e6bdd81bn) {
|
|
143
|
+
throw kk;
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
computeK: () => {
|
|
147
|
+
const q = 0x4000000000000000000020108a2e0cc0d99f8a5efn;
|
|
148
|
+
const a = all(q);
|
|
149
|
+
if (a.qlen !== 163n) {
|
|
150
|
+
throw a.qlen;
|
|
151
|
+
}
|
|
152
|
+
const x = 0x09a4d6792295a7f730fc3f2b49cbc0f62e862272fn;
|
|
153
|
+
const k = computeK(a)(sha256)(x)(sample);
|
|
154
|
+
if (k !== 0x23af4074c90a02b3fe61d286d5c87f425e6bdd81bn) {
|
|
155
|
+
throw k;
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
investigate: () => {
|
|
159
|
+
const q = 0xf2c3119374ce76c9356990b465374a17f23f9ed35089bd969f61c6dde9998c1fn;
|
|
160
|
+
const x = 0x69c7548c21d0dfea6b9a51c9ead4e27c33d3b3f180316e5bcab92c933f0e4dbcn;
|
|
161
|
+
const a = all(q);
|
|
162
|
+
const k = computeK(a)(sha384)(x)(sample);
|
|
163
|
+
if (k !== 0xc345d5ab3da0a5bcb7ec8f8fb7a7e96069e03b206371ef7d83e39068ec564920n) {
|
|
164
|
+
throw k;
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
kk: () => {
|
|
168
|
+
const a = fromCurve(secp192r1);
|
|
169
|
+
const x = 0x6fab034934e4c0fc9ae67f5b5659a9d7d1fefd187ee09fd4n;
|
|
170
|
+
const m = utf8("sample");
|
|
171
|
+
const kk = computeK(a)(sha224)(x)(m);
|
|
172
|
+
if (kk !== 0x4381526b3fc1e7128f202e194505592f01d5ff4c5af015d8n) {
|
|
173
|
+
throw kk;
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
a2: () => {
|
|
177
|
+
const check = ({ q, x, msg0, msg1 }) => {
|
|
178
|
+
const a = all(q);
|
|
179
|
+
const check = (sha, expected, m) => {
|
|
180
|
+
const k = computeK(a)(sha)(x)(m);
|
|
181
|
+
if (k !== expected) {
|
|
182
|
+
throw [k.toString(16), expected.toString(16)];
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const check4 = (m, h) => {
|
|
186
|
+
check(sha224, h[0], m);
|
|
187
|
+
check(sha256, h[1], m);
|
|
188
|
+
check(sha384, h[2], m);
|
|
189
|
+
check(sha512, h[3], m);
|
|
190
|
+
};
|
|
191
|
+
check4(sample, msg0);
|
|
192
|
+
check4(test, msg1);
|
|
193
|
+
};
|
|
194
|
+
const testVectors = {
|
|
195
|
+
x1: {
|
|
196
|
+
q: 0x996f967f6c8e388d9e28d01e205fba957a5698b1n,
|
|
197
|
+
x: 0x411602cb19a6ccc34494d79d98ef1e7ed5af25f7n,
|
|
198
|
+
msg0: [
|
|
199
|
+
0x562097c06782d60c3037ba7be104774344687649n,
|
|
200
|
+
0x519ba0546d0c39202a7d34d7dfa5e760b318bcfbn,
|
|
201
|
+
0x95897cd7bbb944aa932dbc579c1c09eb6fcfc595n,
|
|
202
|
+
0x09ece7ca27d0f5a4dd4e556c9df1d21d28104f8bn
|
|
203
|
+
],
|
|
204
|
+
msg1: [
|
|
205
|
+
0x4598b8efc1a53bc8aecd58d1abbb0c0c71e67297n,
|
|
206
|
+
0x5a67592e8128e03a417b0484410fb72c0b630e1an,
|
|
207
|
+
0x220156b761f6ca5e6c9f1b9cf9c24be25f98cd89n,
|
|
208
|
+
0x65d2c2eeb175e370f28c75bfcdc028d22c7dbe9cn
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
x3: {
|
|
212
|
+
q: 0xffffffffffffffffffffffff99def836146bc9b1b4d22831n,
|
|
213
|
+
x: 0x6fab034934e4c0fc9ae67f5b5659a9d7d1fefd187ee09fd4n,
|
|
214
|
+
msg0: [
|
|
215
|
+
0x4381526b3fc1e7128f202e194505592f01d5ff4c5af015d8n,
|
|
216
|
+
0x32b1b6d7d42a05cb449065727a84804fb1a3e34d8f261496n,
|
|
217
|
+
0x4730005c4fcb01834c063a7b6760096dbe284b8252ef4311n,
|
|
218
|
+
0xa2ac7ab055e4f20692d49209544c203a7d1f2c0bfbc75db1n
|
|
219
|
+
],
|
|
220
|
+
msg1: [
|
|
221
|
+
0xf5dc805f76ef851800700cce82e7b98d8911b7d510059fben,
|
|
222
|
+
0x5c4ce89cf56d9e7c77c8585339b006b97b5f0680b4306c6cn,
|
|
223
|
+
0x5afefb5d3393261b828db6c91fbc68c230727b030c975693n,
|
|
224
|
+
0x0758753a5254759c7cfbad2e2d9b0792eee44136c9480527n,
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
x4: {
|
|
228
|
+
q: 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3dn,
|
|
229
|
+
x: 0xf220266e1105bfe3083e03ec7a3a654651f45e37167e88600bf257c1n,
|
|
230
|
+
msg0: [
|
|
231
|
+
0xc1d1f2f10881088301880506805feb4825fe09acb6816c36991aa06dn,
|
|
232
|
+
0xad3029e0278f80643de33917ce6908c70a8ff50a411f06e41dedfcdcn,
|
|
233
|
+
0x52b40f5a9d3d13040f494e83d3906c6079f29981035c7bd51e5cac40n,
|
|
234
|
+
0x9db103ffededf9cfdba05184f925400c1653b8501bab89cea0fbec14n,
|
|
235
|
+
],
|
|
236
|
+
msg1: [
|
|
237
|
+
0xdf8b38d40dca3e077d0ac520bf56b6d565134d9b5f2eae0d34900524n,
|
|
238
|
+
0xff86f57924da248d6e44e8154eb69f0ae2aebaee9931d0b5a969f904n,
|
|
239
|
+
0x7046742b839478c1b5bd31db2e862ad868e1a45c863585b5f22bdc2dn,
|
|
240
|
+
0xe39c2aa4ea6be2306c72126d40ed77bf9739bb4d6ef2bbb1dcb6169dn,
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
x8: {
|
|
244
|
+
q: 0x4000000000000000000020108a2e0cc0d99f8a5efn,
|
|
245
|
+
x: 0x09a4d6792295a7f730fc3f2b49cbc0f62e862272fn,
|
|
246
|
+
msg0: [
|
|
247
|
+
0x323e7b28bfd64e6082f5b12110aa87bc0d6a6e159n,
|
|
248
|
+
0x23af4074c90a02b3fe61d286d5c87f425e6bdd81bn,
|
|
249
|
+
0x2132abe0ed518487d3e4fa7fd24f8bed1f29ccfcen,
|
|
250
|
+
0x00bbcc2f39939388fdfe841892537ec7b1ff33aa3n,
|
|
251
|
+
],
|
|
252
|
+
msg1: [
|
|
253
|
+
0x091dd986f38eb936be053dd6ace3419d2642ade8dn,
|
|
254
|
+
0x193649ce51f0cff0784cfc47628f4fa854a93f7a2n,
|
|
255
|
+
0x37c73c6f8b404ec83da17a6ebca724b3ff1f7eeban,
|
|
256
|
+
0x331ad98d3186f73967b1e0b120c80b1e22efc2988n,
|
|
257
|
+
],
|
|
258
|
+
},
|
|
259
|
+
x9: {
|
|
260
|
+
q: 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdfn,
|
|
261
|
+
x: 0x103b2142bdc2a3c3b55080d09df1808f79336da2399f5ca7171d1be9b0n,
|
|
262
|
+
msg0: [
|
|
263
|
+
0x71626a309d9cd80ad0b975d757fe6bf4b84e49f8f34c780070d7746f19n,
|
|
264
|
+
0x73552f9cac5774f74f485fa253871f2109a0c86040552eaa67dba92dc9n,
|
|
265
|
+
0x17d726a67539c609bd99e29aa3737ef247724b71455c3b6310034038c8n,
|
|
266
|
+
0x0e535c328774cde546be3af5d7fcd263872f107e807435105ba2fdc166n,
|
|
267
|
+
],
|
|
268
|
+
msg1: [
|
|
269
|
+
0x67634d0aba2c9bf7ae54846f26dcd166e7100654bce6fdc96667631aa2n,
|
|
270
|
+
0x2ce5aedc155acc0ddc5e679ebacfd21308362e5efc05c5e99b2557a8d7n,
|
|
271
|
+
0x1b4bd3903e74fd0b31e23f956c70062014dfefee21832032ea5352a055n,
|
|
272
|
+
0x1775ed919ca491b5b014c5d5e86af53578b5a7976378f192af665cb705n,
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
x10: {
|
|
276
|
+
q: 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61n,
|
|
277
|
+
x: 0x06a0777356e87b89ba1ed3a3d845357be332173c8f7a65bdc7db4fab3c4cc79acc8194en,
|
|
278
|
+
msg0: [
|
|
279
|
+
0x1b4c4e3b2f6b08b5991bd2bdde277a7016da527ad0aae5bc61b64c5a0ee63e8b502ef61n,
|
|
280
|
+
0x1ceb9e8e0dff53ce687deb81339aca3c98e7a657d5a9499ef779f887a934408ecbe5a38n,
|
|
281
|
+
0x1460a5c41745a5763a9d548ae62f2c3630bbed71b6aa549d7f829c22442a728c5d965dan,
|
|
282
|
+
0x00f3b59fcb5c1a01a1a2a0019e98c244dff61502d6e6b9c4e957eddceb258ef4dbef04an,
|
|
283
|
+
],
|
|
284
|
+
msg1: [
|
|
285
|
+
0x045e13ea645ce01d9b25ea38c8a8a170e04c83bb7f231ee3152209fe10ec8b2e565536cn,
|
|
286
|
+
0x0b585a7a68f51089691d6ede2b43fc4451f66c10e65f134b963d4cbd4eb844b0e1469a6n,
|
|
287
|
+
0x1e88738e14482a09ee16a73d490a7fe8739df500039538d5c4b6c8d6d7f208d6ca56760n,
|
|
288
|
+
0x00e5f24a223bd459653f682763c3bb322d4ee75dd89c63d4dc61518d543e76585076bban,
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
x11: {
|
|
292
|
+
q: 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcfn,
|
|
293
|
+
x: 0x29c16768f01d1b8a89fda85e2efd73a09558b92a178a2931f359e4d70ad853e569cdaf16daa569758fb4e73089e4525d8bbfcfn,
|
|
294
|
+
msg0: [
|
|
295
|
+
0x512340db682c7b8ebe407bf1aa54194dfe85d49025fe0f632c9b8a06a996f2fcd0d73c752fb09d23db8fbe50605dc25df0745cn,
|
|
296
|
+
0x782385f18baf5a36a588637a76dfab05739a14163bf723a4417b74bd1469d37ac9e8cce6aec8ff63f37b815aaf14a876eed962n,
|
|
297
|
+
0x4da637cb2e5c90e486744e45a73935dd698d4597e736da332a06eda8b26d5abc6153ec2ece14981cf3e5e023f36ffa55eea6d7n,
|
|
298
|
+
0x57055b293ecfdfe983cef716166091e573275c53906a39eadc25c89c5ec8d7a7e5629fcfdfad514e1348161c9a34ea1c42d58cn,
|
|
299
|
+
],
|
|
300
|
+
msg1: [
|
|
301
|
+
0x3c5352929d4ebe3cce87a2dce380f0d2b33c901e61abc530daf3506544ab0930ab9bfd553e51fcda44f06cd2f49e17e07db519n,
|
|
302
|
+
0x251e32dee10ed5ea4ad7370df3eff091e467d5531ca59de3aa791763715e1169ab5e18c2a11cd473b0044fb45308e8542f2eb0n,
|
|
303
|
+
0x11c540ea46c5038fe28bb66e2e9e9a04c9fe9567adf33d56745953d44c1dc8b5b92922f53a174e431c0ed8267d919329f19014n,
|
|
304
|
+
0x59527ce953bc09df5e85155cae7bb1d7f342265f41635545b06044f844ecb4fa6476e7d47420adc8041e75460ec0a4ec760e95n,
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
x12: {
|
|
308
|
+
q: 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001n,
|
|
309
|
+
x: 0x0c16f58550d824ed7b95569d4445375d3a490bc7e0194c41a39deb732c29396cdf1d66de02dd1460a816606f3bec0f32202c7bd18a32d87506466aa92032f1314ed7b19762b0d22n,
|
|
310
|
+
msg0: [
|
|
311
|
+
0x0b599d068a1a00498ee0b9ad6f388521f594bd3f234e47f7a1db6490d7b57d60b0101b36f39cc22885f78641c69411279706f0989e6991e5d5b53619e43efb397e25e0814ef02bcn,
|
|
312
|
+
0x0f79d53e63d89fb87f4d9e6dc5949f5d9388bcfe9ebcb4c2f7ce497814cf40e845705f8f18dbf0f860de0b1cc4a433ef74a5741f3202e958c082e0b76e16ecd5866aa0f5f3df300n,
|
|
313
|
+
0x0308253c022d25f8a9ebcd24459dd6596590bdec7895618eee8a2623a98d2a2b2e7594ee6b7ad3a39d70d68cb4ed01cb28e2129f8e2cc0cc8dc7780657e28bcd655f0be9b7d35a2n,
|
|
314
|
+
0x0c5ee7070af55f84ebc43a0d481458cede1dcebb57720a3c92f59b4941a044fecff4f703940f3121773595e880333772acf822f2449e17c64da286bcd65711dd5da44d7155bf004n,
|
|
315
|
+
],
|
|
316
|
+
msg1: [
|
|
317
|
+
0x1da875065b9d94dbe75c61848d69578bcc267935792624f9887b53c9af9e43cabfc42e4c3f9a456ba89e717d24f1412f33cfd297a7a4d403b18b5438654c74d592d5022125e0c6bn,
|
|
318
|
+
0x04ddd0707e81bb56ea2d1d45d7fafdbdd56912cae224086802fea1018db306c4fb8d93338dbf6841ce6c6ab1506e9a848d2c0463e0889268843dee4acb552cffcb858784ed116b2n,
|
|
319
|
+
0x0141b53dc6e569d8c0c0718a58a5714204502fda146e7e2133e56d19e905b79413457437095de13cf68b5cf5c54a1f2e198a55d974fc3e507afc0acf95ed391c93cc79e3b3fe37cn,
|
|
320
|
+
0x14842f97f263587a164b215dd0f912c588a88dc4ab6af4c530adc1226f16e086d62c14435e6bfab56f019886c88922d2321914ee41a8f746aaa2b964822e4ac6f40ee2492b66824n,
|
|
321
|
+
],
|
|
322
|
+
},
|
|
323
|
+
x13: {
|
|
324
|
+
q: 0x40000000000000000000292fe77e70c12a4234c33n,
|
|
325
|
+
x: 0x35318fc447d48d7e6bc93b48617dddedf26aa658fn,
|
|
326
|
+
msg0: [
|
|
327
|
+
0x3b24c5e2c2d935314eabf57a6484289b291adfe3fn,
|
|
328
|
+
0x3d7086a59e6981064a9cdb684653f3a81b6ec0f0bn,
|
|
329
|
+
0x3b1e4443443486c7251a68ef184a936f05f8b17c7n,
|
|
330
|
+
0x2edf5cfcac7553c17421fdf54ad1d2ef928a879d2n,
|
|
331
|
+
],
|
|
332
|
+
msg1: [
|
|
333
|
+
0x34f46de59606d56c75406bfb459537a7cc280aa62n,
|
|
334
|
+
0x38145e3ffca94e4ddacc20ad6e0997bd0e3b669d2n,
|
|
335
|
+
0x375813210ece9c4d7ab42ddc3c55f89189cf6dffdn,
|
|
336
|
+
0x25ad8b393bc1e9363600fda1a2ab6df40079179a3n,
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
x14: {
|
|
340
|
+
q: 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7n,
|
|
341
|
+
x: 0x07adc13dd5bf34d1ddeeb50b2ce23b5f5e6d18067306d60c5f6ff11e5d3n,
|
|
342
|
+
msg0: [
|
|
343
|
+
0x0f2b1c1e80beb58283aaa79857f7b83bdf724120d0913606fd07f7ffb2cn,
|
|
344
|
+
0x034a53897b0bbdb484302e19bf3f9b34a2abfed639d109a388dc52006b5n,
|
|
345
|
+
0x04d4670b28990bc92eeb49840b482a1fa03fe028d09f3d21f89c67eca85n,
|
|
346
|
+
0x0de108aaada760a14f42c057ef81c0a31af6b82e8fbca8dc86e443ab549n,
|
|
347
|
+
],
|
|
348
|
+
msg1: [
|
|
349
|
+
0x07bdb6a7fd080d9ec2fc84bff9e3e15750789dc04290c84fed00e109bbdn,
|
|
350
|
+
0x00376886e89013f7ff4b5214d56a30d49c99f53f211a3afe01aa2bde12dn,
|
|
351
|
+
0x03726870de75613c5e529e453f4d92631c03d08a7f63813e497d4cb3877n,
|
|
352
|
+
0x09ce5810f1ac68810b0dffbb6beef2e0053bb937969ae7886f9d064a8c4n,
|
|
353
|
+
],
|
|
354
|
+
},
|
|
355
|
+
x15: {
|
|
356
|
+
q: 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307n,
|
|
357
|
+
x: 0x14510d4bc44f2d26f4553942c98073c1bd35545ceabb5cc138853c5158d2729ea408836n,
|
|
358
|
+
msg0: [
|
|
359
|
+
0x14cc8fcfeecd6b999b4dc6084ebb06fded0b44d5c507802cc7a5e9ecf36e69da6ae23c6n,
|
|
360
|
+
0x38c9d662188982943e080b794a4cfb0732dba37c6f40d5b8cfaded6ff31c5452ba3f877n,
|
|
361
|
+
0x21b7265debf90e6f988cffdb62b121a02105226c652807cc324ed6fb119a287a72680abn,
|
|
362
|
+
0x20583259dc179d9da8e5387e89bff2a3090788cf1496bcabfe7d45bb120b0c811eb8980n,
|
|
363
|
+
],
|
|
364
|
+
msg1: [
|
|
365
|
+
0x2e5c1f00677a0e015ec3f799fa9e9a004309dbd784640eaaf5e1ce64d3045b9fe9c1fa1n,
|
|
366
|
+
0x018a7d44f2b4341fefe68f6bd8894960f97e08124aab92c1ffbbe90450fcc9356c9aaa5n,
|
|
367
|
+
0x3c75397ba4cf1b931877076af29f2e2f4231b117ab4b8e039f7f9704de1bd3522f150b6n,
|
|
368
|
+
0x14e66b18441fa54c21e3492d0611d2b48e19de3108d915fd5ca08e786327a2675f11074n,
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
x16: {
|
|
372
|
+
q: 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173n,
|
|
373
|
+
x: 0x0494994cc325b08e7b4ce038bd9436f90b5e59a2c13c3140cd3ae07c04a01fc489f572ce0569a6db7b8060393de76330c624177n,
|
|
374
|
+
msg0: [
|
|
375
|
+
0x0c933f1dc4c70838c2ad16564715acaf545bcdd8dc203d25af3ec63949c65cb2e68ac1f60ca7eaca2a823f4e240927aa82ceec5n,
|
|
376
|
+
0x08ec42d13a3909a20c41bebd2dfed8cacce56c7a7d1251df43f3e9e289dae00e239f6960924ac451e125b784cb687c7f23283fdn,
|
|
377
|
+
0x0da881bce3ba851485879ef8ac585a63f1540b9198ecb8a1096d70cb25a104e2f8a96b108ae76cb49cf34491abc70e9d2aad450n,
|
|
378
|
+
0x0750926ffad7ff5de85df7960b3a4f9e3d38cf5a049bfc89739c48d42b34fbee03d2c047025134cc3145b60afd22a68df0a7fb2n,
|
|
379
|
+
],
|
|
380
|
+
msg1: [
|
|
381
|
+
0x01adeb94c19951b460a146b8275d81638c07735b38a525d76023aaf26aa8a058590e1d5b1e78ab3c91608bda67cffbe6fc8a6ccn,
|
|
382
|
+
0x06eba3d58d0e0dfc406d67fc72ef0c943624cf40019d1e48c3b54ccab0594afd5dee30aebaa22e693dbcfecad1a85d774313dadn,
|
|
383
|
+
0x0a45b787db44c06deab846511eedbf7bfcfd3bd2c11d965c92fc195f67328f36a2dc83c0352885dab96b55b02fcf49dccb0e2dan,
|
|
384
|
+
0x0b90f8a0e757e81d4ea6891766729c96a6d01f9aedc0d334932d1f81cc4e1973a4f01c33555ff08530a5098cadb6edae268abb5n,
|
|
385
|
+
],
|
|
386
|
+
},
|
|
387
|
+
x17: {
|
|
388
|
+
q: 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47n,
|
|
389
|
+
x: 0x028a04857f24c1c082df0d909c0e72f453f2e2340ccb071f0e389bca2575da19124198c57174929ad26e348cf63f78d28021ef5a9bf2d5cbeaf6b7ccb6c4da824dd5c82cfb24e11n,
|
|
390
|
+
msg0: [
|
|
391
|
+
0x2eafad4ac8644deb29095bbaa88d19f31316434f1766ad4423e0b54dd2fe0c05e307758581b0daed2902683bbc7c47b00e63e3e429ba54ea6ba3aec33a94c9a24a6ef8e27b7677an,
|
|
392
|
+
0x15c2c6b7d1a070274484774e558b69fdfa193bdb7a23f27c2cd24298ce1b22a6cc9b7fb8cabfd6cf7c6b1cf3251e5a1cddd16fbfed28de79935bb2c631b8b8ea9cc4bcc937e669en,
|
|
393
|
+
0x0fef0b68cb49453a4c6ecbf1708dbeefc885c57fdafb88417aaefa5b1c35017b4b498507937adce2f1d9effa5fe8f5aeb116b804fd182a6cf1518fdb62d53f60a0ff6eb707d856bn,
|
|
394
|
+
0x3ff373833a06c791d7ad586afa3990f6ef76999c35246c4ad0d519bff180ca1880e11f2fb38b764854a0ae3becddb50f05ac4fcee542f207c0a6229e2e19652f0e647b9c4882193n,
|
|
395
|
+
],
|
|
396
|
+
msg1: [
|
|
397
|
+
0x333c711f8c62f205f926593220233b06228285261d34026232f6f729620c6de12220f282f4206d223226705608688b20b8ba86d8dfe54f07a37ec48f253283ac33c3f5102c8cc3en,
|
|
398
|
+
0x328e02cf07c7b5b6d3749d8302f1ae5bfaa8f239398459af4a2c859c7727a8123a7fe9be8b228413fc8dc0e9de16af3f8f43005107f9989a5d97a5c4455da895e81336710a3fb2cn,
|
|
399
|
+
0x2a77e29ead9e811a9fda0284c14cdfa1d9f8fa712da59d530a06cde54187e250ad1d4fb5788161938b8de049616399c5a56b0737c9564c9d4d845a4c6a7cdfcbff0f01a82be672en,
|
|
400
|
+
0x21ce6ee4a2c72c9f93bdb3b552f4a633b8c20c200f894f008643240184be57bb282a1645e47fbbe131e899b4c61244efc2486d88cdbd1dd4a65ebdd837019d02628d0dcd6ed8fb5n,
|
|
401
|
+
],
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
for (const v of Object.values(testVectors)) {
|
|
405
|
+
check(v);
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
a2s: () => {
|
|
409
|
+
const check = ({ q, x, msg0, msg1 }) => {
|
|
410
|
+
const a = all(q.nf.p);
|
|
411
|
+
const check = (sha, { k, r, s }, m) => {
|
|
412
|
+
const k0 = computeK(a)(sha)(x)(m);
|
|
413
|
+
if (k0 !== k) {
|
|
414
|
+
throw [k0.toString(16), k.toString(16)];
|
|
415
|
+
}
|
|
416
|
+
const [r0, s0] = sign(q)(sha)(x)(m);
|
|
417
|
+
if (r0 !== r) {
|
|
418
|
+
throw [r0, r];
|
|
419
|
+
}
|
|
420
|
+
if (s0 !== s) {
|
|
421
|
+
throw [s0, s];
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
const check4 = (m, h) => {
|
|
425
|
+
check(sha224, h[0], m);
|
|
426
|
+
check(sha256, h[1], m);
|
|
427
|
+
check(sha384, h[2], m);
|
|
428
|
+
check(sha512, h[3], m);
|
|
429
|
+
};
|
|
430
|
+
check4(sample, msg0);
|
|
431
|
+
check4(test, msg1);
|
|
432
|
+
};
|
|
433
|
+
const testVectors = {
|
|
434
|
+
x3: {
|
|
435
|
+
q: secp192r1,
|
|
436
|
+
x: 0x6fab034934e4c0fc9ae67f5b5659a9d7d1fefd187ee09fd4n,
|
|
437
|
+
msg0: [
|
|
438
|
+
{
|
|
439
|
+
k: 0x4381526b3fc1e7128f202e194505592f01d5ff4c5af015d8n,
|
|
440
|
+
r: 0xa1f00dad97aeec91c95585f36200c65f3c01812aa60378f5n,
|
|
441
|
+
s: 0xe07ec1304c7c6c9debbe980b9692668f81d4de7922a0f97an,
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
k: 0x32b1b6d7d42a05cb449065727a84804fb1a3e34d8f261496n,
|
|
445
|
+
r: 0x4b0b8ce98a92866a2820e20aa6b75b56382e0f9bfd5ecb55n,
|
|
446
|
+
s: 0xccdb006926ea9565cbadc840829d8c384e06de1f1e381b85n,
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
k: 0x4730005c4fcb01834c063a7b6760096dbe284b8252ef4311n,
|
|
450
|
+
r: 0xda63bf0b9abcf948fbb1e9167f136145f7a20426dcc287d5n,
|
|
451
|
+
s: 0xc3aa2c960972bd7a2003a57e1c4c77f0578f8ae95e31ec5en,
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
k: 0xa2ac7ab055e4f20692d49209544c203a7d1f2c0bfbc75db1n,
|
|
455
|
+
r: 0x4d60c5ab1996bd848343b31c00850205e2ea6922dac2e4b8n,
|
|
456
|
+
s: 0x3f6e837448f027a1bf4b34e796e32a811cbb4050908d8f67n,
|
|
457
|
+
}
|
|
458
|
+
],
|
|
459
|
+
msg1: [
|
|
460
|
+
{
|
|
461
|
+
k: 0xf5dc805f76ef851800700cce82e7b98d8911b7d510059fben,
|
|
462
|
+
r: 0x6945a1c1d1b2206b8145548f633bb61cef04891baf26ed34n,
|
|
463
|
+
s: 0xb7fb7fdfc339c0b9bd61a9f5a8eaf9be58fc5cba2cb15293n,
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
k: 0x5c4ce89cf56d9e7c77c8585339b006b97b5f0680b4306c6cn,
|
|
467
|
+
r: 0x3a718bd8b4926c3b52ee6bbe67ef79b18cb6eb62b1ad97aen,
|
|
468
|
+
s: 0x5662e6848a4a19b1f1ae2f72acd4b8bbe50f1eac65d9124fn,
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
k: 0x5afefb5d3393261b828db6c91fbc68c230727b030c975693n,
|
|
472
|
+
r: 0xb234b60b4db75a733e19280a7a6034bd6b1ee88af5332367n,
|
|
473
|
+
s: 0x7994090b2d59bb782be57e74a44c9a1c700413f8abefe77an,
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
k: 0x0758753a5254759c7cfbad2e2d9b0792eee44136c9480527n,
|
|
477
|
+
r: 0xfe4f4ae86a58b6507946715934fe2d8ff9d95b6b098fe739n,
|
|
478
|
+
s: 0x74cf5605c98fba0e1ef34d4b5a1577a7dcf59457cae52290n,
|
|
479
|
+
}
|
|
480
|
+
],
|
|
481
|
+
},
|
|
482
|
+
x5: {
|
|
483
|
+
q: secp256r1,
|
|
484
|
+
x: 0xc9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721n,
|
|
485
|
+
msg0: [
|
|
486
|
+
{
|
|
487
|
+
k: 0x103f90ee9dc52e5e7fb5132b7033c63066d194321491862059967c715985d473n,
|
|
488
|
+
r: 0x53b2fff5d1752b2c689df257c04c40a587fababb3f6fc2702f1343af7ca9aa3fn,
|
|
489
|
+
s: 0xb9afb64fdc03dc1a131c7d2386d11e349f070aa432a4acc918bea988bf75c74cn,
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
k: 0xa6e3c57dd01abe90086538398355dd4c3b17aa873382b0f24d6129493d8aad60n,
|
|
493
|
+
r: 0xefd48b2aacb6a8fd1140dd9cd45e81d69d2c877b56aaf991c34d0ea84eaf3716n,
|
|
494
|
+
s: 0xf7cb1c942d657c41d436c7a1b6e29f65f3e900dbb9aff4064dc4ab2f843acda8n,
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
k: 0x09f634b188cefd98e7ec88b1aa9852d734d0bc272f7d2a47decc6ebeb375aad4n,
|
|
498
|
+
r: 0x0eafea039b20e9b42309fb1d89e213057cbf973dc0cfc8f129edddc800ef7719n,
|
|
499
|
+
s: 0x4861f0491e6998b9455193e34e7b0d284ddd7149a74b95b9261f13abde940954n,
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
k: 0x5fa81c63109badb88c1f367b47da606da28cad69aa22c4fe6ad7df73a7173aa5n,
|
|
503
|
+
r: 0x8496a60b5e9b47c825488827e0495b0e3fa109ec4568fd3f8d1097678eb97f00n,
|
|
504
|
+
s: 0x2362ab1adbe2b8adf9cb9edab740ea6049c028114f2460f96554f61fae3302fen,
|
|
505
|
+
}
|
|
506
|
+
],
|
|
507
|
+
msg1: [
|
|
508
|
+
{
|
|
509
|
+
k: 0x669f4426f2688b8be0db3a6bd1989bdaefff84b649eeb84f3dd26080f667faa7n,
|
|
510
|
+
r: 0xc37edb6f0ae79d47c3c27e962fa269bb4f441770357e114ee511f662ec34a692n,
|
|
511
|
+
s: 0xc820053a05791e521fcaad6042d40aea1d6b1a540138558f47d0719800e18f2dn,
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
k: 0xd16b6ae827f17175e040871a1c7ec3500192c4c92677336ec2537acaee0008e0n,
|
|
515
|
+
r: 0xf1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d38367n,
|
|
516
|
+
s: 0x019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083n,
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
k: 0x16aeffa357260b04b1dd199693960740066c1a8f3e8edd79070aa914d361b3b8n,
|
|
520
|
+
r: 0x83910e8b48bb0c74244ebdf7f07a1c5413d61472bd941ef3920e623fbccebeb6n,
|
|
521
|
+
s: 0x8ddbec54cf8cd5874883841d712142a56a8d0f218f5003cb0296b6b509619f2cn,
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
k: 0x6915d11632aca3c40d5d51c08daf9c555933819548784480e93499000d9f0b7fn,
|
|
525
|
+
r: 0x461d93f31b6540894788fd206c07cfa0cc35f46fa3c91816fff1040ad1581a04n,
|
|
526
|
+
s: 0x39af9f15de0db8d97e72719c74820d304ce5226e32dedae67519e840d1194e55n,
|
|
527
|
+
},
|
|
528
|
+
],
|
|
529
|
+
},
|
|
530
|
+
x6: {
|
|
531
|
+
q: secp384r1,
|
|
532
|
+
x: 0x6b9d3dad2e1b8c1c05b19875b6659f4de23c3b667bf297ba9aa47740787137d896d5724e4c70a825f872c9ea60d2edf5n,
|
|
533
|
+
msg0: [
|
|
534
|
+
{
|
|
535
|
+
k: 0xa4e4d2f0e729eb786b31fc20ad5d849e304450e0ae8e3e341134a5c1afa03cab8083ee4e3c45b06a5899ea56c51b5879n,
|
|
536
|
+
r: 0x42356e76b55a6d9b4631c865445dbe54e056d3b3431766d0509244793c3f9366450f76ee3de43f5a125333a6be060122n,
|
|
537
|
+
s: 0x9da0c81787064021e78df658f2fbb0b042bf304665db721f077a4298b095e4834c082c03d83028efbf93a3c23940ca8dn,
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
k: 0x180ae9f9aec5438a44bc159a1fcb277c7be54fa20e7cf404b490650a8acc414e375572342863c899f9f2edf9747a9b60n,
|
|
541
|
+
r: 0x21b13d1e013c7fa1392d03c5f99af8b30c570c6f98d4ea8e354b63a21d3daa33bde1e888e63355d92fa2b3c36d8fb2cdn,
|
|
542
|
+
s: 0xf3aa443fb107745bf4bd77cb3891674632068a10ca67e3d45db2266fa7d1feebefdc63eccd1ac42ec0cb8668a4fa0ab0n,
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
k: 0x94ed910d1a099dad3254e9242ae85abde4ba15168eaf0ca87a555fd56d10fbca2907e3e83ba95368623b8c4686915cf9n,
|
|
546
|
+
r: 0x94edbb92a5ecb8aad4736e56c691916b3f88140666ce9fa73d64c4ea95ad133c81a648152e44acf96e36dd1e80fabe46n,
|
|
547
|
+
s: 0x99ef4aeb15f178cea1fe40db2603138f130e740a19624526203b6351d0a3a94fa329c145786e679e7b82c71a38628ac8n,
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
k: 0x92fc3c7183a883e24216d1141f1a8976c5b0dd797dfa597e3d7b32198bd35331a4e966532593a52980d0e3aaa5e10ec3n,
|
|
551
|
+
r: 0xed0959d5880ab2d869ae7f6c2915c6d60f96507f9cb3e047c0046861da4a799cfe30f35cc900056d7c99cd7882433709n,
|
|
552
|
+
s: 0x512c8cceee3890a84058ce1e22dbc2198f42323ce8aca9135329f03c068e5112dc7cc3ef3446defceb01a45c2667fdd5n,
|
|
553
|
+
}
|
|
554
|
+
],
|
|
555
|
+
msg1: [
|
|
556
|
+
{
|
|
557
|
+
k: 0x18fa39db95aa5f561f30fa3591dc59c0fa3653a80daffa0b48d1a4c6dfcbff6e3d33be4dc5eb8886a8ecd093f2935726n,
|
|
558
|
+
r: 0xe8c9d0b6ea72a0e7837fea1d14a1a9557f29faa45d3e7ee888fc5bf954b5e62464a9a817c47ff78b8c11066b24080e72n,
|
|
559
|
+
s: 0x07041d4a7a0379ac7232ff72e6f77b6ddb8f09b16cce0ec3286b2bd43fa8c6141c53ea5abef0d8231077a04540a96b66n,
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
k: 0x0cfac37587532347dc3389fdc98286bba8c73807285b184c83e62e26c401c0faa48dd070ba79921a3457abff2d630ad7n,
|
|
563
|
+
r: 0x6d6defac9ab64dabafe36c6bf510352a4cc27001263638e5b16d9bb51d451559f918eedaf2293be5b475cc8f0188636bn,
|
|
564
|
+
s: 0x2d46f3becbcc523d5f1a1256bf0c9b024d879ba9e838144c8ba6baeb4b53b47d51ab373f9845c0514eefb14024787265n,
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
k: 0x015ee46a5bf88773ed9123a5ab0807962d193719503c527b031b4c2d225092ada71f4a459bc0da98adb95837db8312ean,
|
|
568
|
+
r: 0x8203b63d3c853e8d77227fb377bcf7b7b772e97892a80f36ab775d509d7a5feb0542a7f0812998da8f1dd3ca3cf023dbn,
|
|
569
|
+
s: 0xddd0760448d42d8a43af45af836fce4de8be06b485e9b61b827c2f13173923e06a739f040649a667bf3b828246baa5a5n,
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
k: 0x3780c4f67cb15518b6acae34c9f83568d2e12e47deab6c50a4e4ee5319d1e8ce0e2cc8a136036dc4b9c00e6888f66b6cn,
|
|
573
|
+
r: 0xa0d5d090c9980faf3c2ce57b7ae951d31977dd11c775d314af55f76c676447d06fb6495cd21b4b6e340fc236584fb277n,
|
|
574
|
+
s: 0x976984e59b4c77b0e8e4460dca3d9f20e07b9bb1f63beefaf576f6b2e8b224634a2092cd3792e0159ad9cee37659c736n,
|
|
575
|
+
}
|
|
576
|
+
],
|
|
577
|
+
},
|
|
578
|
+
x7: {
|
|
579
|
+
q: secp521r1,
|
|
580
|
+
x: 0x0fad06daa62ba3b25d2fb40133da757205de67f5bb0018fee8c86e1b68c7e75caa896eb32f1f47c70855836a6d16fcc1466f6d8fbec67db89ec0c08b0e996b83538n,
|
|
581
|
+
msg0: [
|
|
582
|
+
{
|
|
583
|
+
k: 0x121415ec2cd7726330a61f7f3fa5de14be9436019c4db8cb4041f3b54cf31be0493ee3f427fb906393d895a19c9523f3a1d54bb8702bd4aa9c99dab2597b92113f3n,
|
|
584
|
+
r: 0x1776331cfcdf927d666e032e00cf776187bc9fdd8e69d0dabb4109ffe1b5e2a30715f4cc923a4a5e94d2503e9acfed92857b7f31d7152e0f8c00c15ff3d87e2ed2en,
|
|
585
|
+
s: 0x050cb5265417fe2320bbb5a122b8e1a32bd699089851128e360e620a30c7e17ba41a666af126ce100e5799b153b60528d5300d08489ca9178fb610a2006c254b41fn,
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
k: 0x0edf38afcaaecab4383358b34d67c9f2216c8382aaea44a3dad5fdc9c32575761793fef24eb0fc276dfc4f6e3ec476752f043cf01415387470bcbd8678ed2c7e1a0n,
|
|
589
|
+
r: 0x1511bb4d675114fe266fc4372b87682baecc01d3cc62cf2303c92b3526012659d16876e25c7c1e57648f23b73564d67f61c6f14d527d54972810421e7d87589e1a7n,
|
|
590
|
+
s: 0x04a171143a83163d6df460aaf61522695f207a58b95c0644d87e52aa1a347916e4f7a72930b1bc06dbe22ce3f58264afd23704cbb63b29b931f7de6c9d949a7ecfcn,
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
k: 0x1546a108bc23a15d6f21872f7ded661fa8431ddbd922d0dcdb77cc878c8553ffad064c95a920a750ac9137e527390d2d92f153e66196966ea554d9adfcb109c4211n,
|
|
594
|
+
r: 0x1ea842a0e17d2de4f92c15315c63ddf72685c18195c2bb95e572b9c5136ca4b4b576ad712a52be9730627d16054ba40cc0b8d3ff035b12ae75168397f5d50c67451n,
|
|
595
|
+
s: 0x1f21a3cee066e1961025fb048bd5fe2b7924d0cd797babe0a83b66f1e35eeaf5fde143fa85dc394a7dee766523393784484bdf3e00114a1c857cde1aa203db65d61n,
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
k: 0x1dae2ea071f8110dc26882d4d5eae0621a3256fc8847fb9022e2b7d28e6f10198b1574fdd03a9053c08a1854a168aa5a57470ec97dd5ce090124ef52a2f7ecbffd3n,
|
|
599
|
+
r: 0x0c328fafcbd79dd77850370c46325d987cb525569fb63c5d3bc53950e6d4c5f174e25a1ee9017b5d450606add152b534931d7d4e8455cc91f9b15bf05ec36e377fan,
|
|
600
|
+
s: 0x0617cce7cf5064806c467f678d3b4080d6f1cc50af26ca209417308281b68af282623eaa63e5b5c0723d8b8c37ff0777b1a20f8ccb1dccc43997f1ee0e44da4a67an,
|
|
601
|
+
}
|
|
602
|
+
],
|
|
603
|
+
msg1: [
|
|
604
|
+
{
|
|
605
|
+
k: 0x040d09fcf3c8a5f62cf4fb223cbbb2b9937f6b0577c27020a99602c25a01136987e452988781484edbbcf1c47e554e7fc901bc3085e5206d9f619cff07e73d6f706n,
|
|
606
|
+
r: 0x1c7ed902e123e6815546065a2c4af977b22aa8eaddb68b2c1110e7ea44d42086bfe4a34b67ddc0e17e96536e358219b23a706c6a6e16ba77b65e1c595d43cae17fbn,
|
|
607
|
+
s: 0x177336676304fcb343ce028b38e7b4fba76c1c1b277da18cad2a8478b2a9a9f5bec0f3ba04f35db3e4263569ec6aade8c92746e4c82f8299ae1b8f1739f8fd519a4n,
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
k: 0x01de74955efaabc4c4f17f8e84d881d1310b5392d7700275f82f145c61e843841af09035bf7a6210f5a431a6a9e81c9323354a9e69135d44ebd2fcaa7731b909258n,
|
|
611
|
+
r: 0x00e871c4a14f993c6c7369501900c4bc1e9c7b0b4ba44e04868b30b41d8071042eb28c4c250411d0ce08cd197e4188ea4876f279f90b3d8d74a3c76e6f1e4656aa8n,
|
|
612
|
+
s: 0x0cd52dbaa33b063c3a6cd8058a1fb0a46a4754b034fcc644766ca14da8ca5ca9fde00e88c1ad60ccba759025299079d7a427ec3cc5b619bfbc828e7769bcd694e86n,
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
k: 0x1f1fc4a349a7da9a9e116bfdd055dc08e78252ff8e23ac276ac88b1770ae0b5dceb1ed14a4916b769a523ce1e90ba22846af11df8b300c38818f713dadd85de0c88n,
|
|
616
|
+
r: 0x14bee21a18b6d8b3c93fab08d43e739707953244fdbe924fa926d76669e7ac8c89df62ed8975c2d8397a65a49dcc09f6b0ac62272741924d479354d74ff6075578cn,
|
|
617
|
+
s: 0x133330865c067a0eaf72362a65e2d7bc4e461e8c8995c3b6226a21bd1aa78f0ed94fe536a0dca35534f0cd1510c41525d163fe9d74d134881e35141ed5e8e95b979n,
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
k: 0x16200813020ec986863bedfc1b121f605c1215645018aea1a7b215a564de9eb1b38a67aa1128b80ce391c4fb71187654aaa3431027bfc7f395766ca988c964dc56dn,
|
|
621
|
+
r: 0x13e99020abf5cee7525d16b69b229652ab6bdf2affcaef38773b4b7d08725f10cdb93482fdcc54edcee91eca4166b2a7c6265ef0ce2bd7051b7cef945babd47ee6dn,
|
|
622
|
+
s: 0x1fbd0013c674aa79cb39849527916ce301c66ea7ce8b80682786ad60f98f7e78a19ca69eff5c57400e3b3a0ad66ce0978214d13baf4e9ac60752f7b155e2de4dce3n,
|
|
623
|
+
},
|
|
624
|
+
]
|
|
625
|
+
},
|
|
626
|
+
};
|
|
627
|
+
for (const v of Object.values(testVectors)) {
|
|
628
|
+
check(v);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
};
|
package/dev/tf/all.test.js
CHANGED
|
@@ -3,9 +3,17 @@ import { loadModuleMap } from "../module.f.js";
|
|
|
3
3
|
import { isTest, parseTestSet } from "./module.f.js";
|
|
4
4
|
import * as nodeTest from 'node:test';
|
|
5
5
|
const isBun = typeof Bun !== 'undefined';
|
|
6
|
+
const isPlaywright = typeof process !== 'undefined' && process?.env?.PLAYWRIGHT_TEST !== undefined;
|
|
6
7
|
const createFramework = (fw) => (prefix, f) => fw.test(prefix, t => f((name, v) => t.test(name, v)));
|
|
8
|
+
// Bun doesn't support nested tests yet.
|
|
7
9
|
const createBunFramework = (fw) => (prefix, f) => f((name, v) => fw.test(`${prefix}: ${name}`, v));
|
|
8
|
-
const
|
|
10
|
+
const createPlaywrihtFramework = async () => {
|
|
11
|
+
const pwTest = (await import('@playwright/test')).test;
|
|
12
|
+
return (prefix, f) => f((name, v) => pwTest(`${prefix}: ${name}`, v));
|
|
13
|
+
};
|
|
14
|
+
const framework = isPlaywright ? await createPlaywrihtFramework() :
|
|
15
|
+
isBun ? createBunFramework(nodeTest) :
|
|
16
|
+
createFramework(nodeTest);
|
|
9
17
|
const parse = parseTestSet(io.tryCatch);
|
|
10
18
|
const scanModule = (x) => async (subTestRunner) => {
|
|
11
19
|
let subTests = [x];
|
package/djs/ast/module.f.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { Primitive, Array, Unknown } from '../module.f.ts';
|
|
2
2
|
export type AstModule = [readonly string[], AstBody];
|
|
3
|
-
export type AstConst =
|
|
3
|
+
export type AstConst = Primitive | AstModuleRef | AstArray | AstObject;
|
|
4
4
|
export type AstModuleRef = ['aref' | 'cref', number];
|
|
5
5
|
export type AstArray = ['array', readonly AstConst[]];
|
|
6
6
|
export type AstObject = {
|
|
7
7
|
readonly [k in string]: AstConst;
|
|
8
8
|
};
|
|
9
9
|
export type AstBody = readonly AstConst[];
|
|
10
|
-
export declare const run: (body: AstBody) => (args:
|
|
10
|
+
export declare const run: (body: AstBody) => (args: Array) => Unknown;
|