@nockchain/rose-ts 0.1.1-alpha
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 +373 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/belt.d.ts +16 -0
- package/dist/core/belt.d.ts.map +1 -0
- package/dist/core/belt.js +120 -0
- package/dist/core/belt.js.map +1 -0
- package/dist/core/digest.d.ts +9 -0
- package/dist/core/digest.d.ts.map +1 -0
- package/dist/core/digest.js +76 -0
- package/dist/core/digest.js.map +1 -0
- package/dist/core/hashable.d.ts +21 -0
- package/dist/core/hashable.d.ts.map +1 -0
- package/dist/core/hashable.js +128 -0
- package/dist/core/hashable.js.map +1 -0
- package/dist/core/lock.d.ts +8 -0
- package/dist/core/lock.d.ts.map +1 -0
- package/dist/core/lock.js +95 -0
- package/dist/core/lock.js.map +1 -0
- package/dist/core/merkle.d.ts +7 -0
- package/dist/core/merkle.d.ts.map +1 -0
- package/dist/core/merkle.js +57 -0
- package/dist/core/merkle.js.map +1 -0
- package/dist/core/must.d.ts +3 -0
- package/dist/core/must.d.ts.map +1 -0
- package/dist/core/must.js +14 -0
- package/dist/core/must.js.map +1 -0
- package/dist/core/tip5/constants.d.ts +10 -0
- package/dist/core/tip5/constants.d.ts.map +1 -0
- package/dist/core/tip5/constants.js +70 -0
- package/dist/core/tip5/constants.js.map +1 -0
- package/dist/core/tip5/index.d.ts +5 -0
- package/dist/core/tip5/index.d.ts.map +1 -0
- package/dist/core/tip5/index.js +100 -0
- package/dist/core/tip5/index.js.map +1 -0
- package/dist/core/u256.d.ts +21 -0
- package/dist/core/u256.d.ts.map +1 -0
- package/dist/core/u256.js +96 -0
- package/dist/core/u256.js.map +1 -0
- package/dist/core/ubig.d.ts +20 -0
- package/dist/core/ubig.d.ts.map +1 -0
- package/dist/core/ubig.js +81 -0
- package/dist/core/ubig.js.map +1 -0
- package/dist/core/zbase.d.ts +11 -0
- package/dist/core/zbase.d.ts.map +1 -0
- package/dist/core/zbase.js +82 -0
- package/dist/core/zbase.js.map +1 -0
- package/dist/crypto/bpoly.d.ts +3 -0
- package/dist/crypto/bpoly.d.ts.map +1 -0
- package/dist/crypto/bpoly.js +121 -0
- package/dist/crypto/bpoly.js.map +1 -0
- package/dist/crypto/cheetah.d.ts +25 -0
- package/dist/crypto/cheetah.d.ts.map +1 -0
- package/dist/crypto/cheetah.js +250 -0
- package/dist/crypto/cheetah.js.map +1 -0
- package/dist/crypto/index.d.ts +7 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +24 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/privateKey.d.ts +11 -0
- package/dist/crypto/privateKey.d.ts.map +1 -0
- package/dist/crypto/privateKey.js +88 -0
- package/dist/crypto/privateKey.js.map +1 -0
- package/dist/crypto/publicKey.d.ts +18 -0
- package/dist/crypto/publicKey.d.ts.map +1 -0
- package/dist/crypto/publicKey.js +79 -0
- package/dist/crypto/publicKey.js.map +1 -0
- package/dist/crypto/slip10.d.ts +10 -0
- package/dist/crypto/slip10.d.ts.map +1 -0
- package/dist/crypto/slip10.js +104 -0
- package/dist/crypto/slip10.js.map +1 -0
- package/dist/grpc/index.d.ts +12 -0
- package/dist/grpc/index.d.ts.map +1 -0
- package/dist/grpc/index.js +13 -0
- package/dist/grpc/index.js.map +1 -0
- package/dist/grpc/proto.d.ts +26 -0
- package/dist/grpc/proto.d.ts.map +1 -0
- package/dist/grpc/proto.js +219 -0
- package/dist/grpc/proto.js.map +1 -0
- package/dist/hash/index.d.ts +32 -0
- package/dist/hash/index.d.ts.map +1 -0
- package/dist/hash/index.js +138 -0
- package/dist/hash/index.js.map +1 -0
- package/dist/hash/note.d.ts +13 -0
- package/dist/hash/note.d.ts.map +1 -0
- package/dist/hash/note.js +78 -0
- package/dist/hash/note.js.map +1 -0
- package/dist/hash/noteData.d.ts +12 -0
- package/dist/hash/noteData.d.ts.map +1 -0
- package/dist/hash/noteData.js +115 -0
- package/dist/hash/noteData.js.map +1 -0
- package/dist/hash/noun.d.ts +4 -0
- package/dist/hash/noun.d.ts.map +1 -0
- package/dist/hash/noun.js +15 -0
- package/dist/hash/noun.js.map +1 -0
- package/dist/hash/structural.d.ts +5 -0
- package/dist/hash/structural.d.ts.map +1 -0
- package/dist/hash/structural.js +41 -0
- package/dist/hash/structural.js.map +1 -0
- package/dist/hash/tx.d.ts +15 -0
- package/dist/hash/tx.d.ts.map +1 -0
- package/dist/hash/tx.js +146 -0
- package/dist/hash/tx.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/noun/belts.d.ts +9 -0
- package/dist/noun/belts.d.ts.map +1 -0
- package/dist/noun/belts.js +73 -0
- package/dist/noun/belts.js.map +1 -0
- package/dist/noun/bitwriter.d.ts +14 -0
- package/dist/noun/bitwriter.d.ts.map +1 -0
- package/dist/noun/bitwriter.js +100 -0
- package/dist/noun/bitwriter.js.map +1 -0
- package/dist/noun/codec.d.ts +9 -0
- package/dist/noun/codec.d.ts.map +1 -0
- package/dist/noun/codec.js +144 -0
- package/dist/noun/codec.js.map +1 -0
- package/dist/noun/cue.d.ts +3 -0
- package/dist/noun/cue.d.ts.map +1 -0
- package/dist/noun/cue.js +152 -0
- package/dist/noun/cue.js.map +1 -0
- package/dist/noun/encode.d.ts +12 -0
- package/dist/noun/encode.d.ts.map +1 -0
- package/dist/noun/encode.js +37 -0
- package/dist/noun/encode.js.map +1 -0
- package/dist/noun/index.d.ts +10 -0
- package/dist/noun/index.d.ts.map +1 -0
- package/dist/noun/index.js +29 -0
- package/dist/noun/index.js.map +1 -0
- package/dist/noun/jam.d.ts +3 -0
- package/dist/noun/jam.d.ts.map +1 -0
- package/dist/noun/jam.js +107 -0
- package/dist/noun/jam.js.map +1 -0
- package/dist/noun/types.d.ts +21 -0
- package/dist/noun/types.d.ts.map +1 -0
- package/dist/noun/types.js +66 -0
- package/dist/noun/types.js.map +1 -0
- package/dist/noun/words.d.ts +3 -0
- package/dist/noun/words.d.ts.map +1 -0
- package/dist/noun/words.js +6 -0
- package/dist/noun/words.js.map +1 -0
- package/dist/proto/decode.d.ts +10 -0
- package/dist/proto/decode.d.ts.map +1 -0
- package/dist/proto/decode.js +44 -0
- package/dist/proto/decode.js.map +1 -0
- package/dist/proto/digest.d.ts +21 -0
- package/dist/proto/digest.d.ts.map +1 -0
- package/dist/proto/digest.js +29 -0
- package/dist/proto/digest.js.map +1 -0
- package/dist/proto/index.d.ts +9 -0
- package/dist/proto/index.d.ts.map +1 -0
- package/dist/proto/index.js +140 -0
- package/dist/proto/index.js.map +1 -0
- package/dist/proto/note.d.ts +4 -0
- package/dist/proto/note.d.ts.map +1 -0
- package/dist/proto/note.js +99 -0
- package/dist/proto/note.js.map +1 -0
- package/dist/proto/rawTx.d.ts +3 -0
- package/dist/proto/rawTx.d.ts.map +1 -0
- package/dist/proto/rawTx.js +186 -0
- package/dist/proto/rawTx.js.map +1 -0
- package/dist/rpc/client.d.ts +13 -0
- package/dist/rpc/client.d.ts.map +1 -0
- package/dist/rpc/client.js +75 -0
- package/dist/rpc/client.js.map +1 -0
- package/dist/rpc/types.d.ts +18 -0
- package/dist/rpc/types.d.ts.map +1 -0
- package/dist/rpc/types.js +2 -0
- package/dist/rpc/types.js.map +1 -0
- package/dist/rpc/wire/encode.d.ts +4 -0
- package/dist/rpc/wire/encode.d.ts.map +1 -0
- package/dist/rpc/wire/encode.js +168 -0
- package/dist/rpc/wire/encode.js.map +1 -0
- package/dist/rpc/wire/protobuf.d.ts +10 -0
- package/dist/rpc/wire/protobuf.d.ts.map +1 -0
- package/dist/rpc/wire/protobuf.js +50 -0
- package/dist/rpc/wire/protobuf.js.map +1 -0
- package/dist/stubs.d.ts +6 -0
- package/dist/stubs.d.ts.map +1 -0
- package/dist/stubs.js +12 -0
- package/dist/stubs.js.map +1 -0
- package/dist/tx/accessors.d.ts +13 -0
- package/dist/tx/accessors.d.ts.map +1 -0
- package/dist/tx/accessors.js +65 -0
- package/dist/tx/accessors.js.map +1 -0
- package/dist/tx/builder.d.ts +63 -0
- package/dist/tx/builder.d.ts.map +1 -0
- package/dist/tx/builder.js +601 -0
- package/dist/tx/builder.js.map +1 -0
- package/dist/tx/display.d.ts +7 -0
- package/dist/tx/display.d.ts.map +1 -0
- package/dist/tx/display.js +34 -0
- package/dist/tx/display.js.map +1 -0
- package/dist/tx/fee.d.ts +8 -0
- package/dist/tx/fee.d.ts.map +1 -0
- package/dist/tx/fee.js +81 -0
- package/dist/tx/fee.js.map +1 -0
- package/dist/tx/htlc.d.ts +21 -0
- package/dist/tx/htlc.d.ts.map +1 -0
- package/dist/tx/htlc.js +65 -0
- package/dist/tx/htlc.js.map +1 -0
- package/dist/tx/index.d.ts +19 -0
- package/dist/tx/index.d.ts.map +1 -0
- package/dist/tx/index.js +64 -0
- package/dist/tx/index.js.map +1 -0
- package/dist/tx/multisig.d.ts +3 -0
- package/dist/tx/multisig.d.ts.map +1 -0
- package/dist/tx/multisig.js +8 -0
- package/dist/tx/multisig.js.map +1 -0
- package/dist/tx/outputs.d.ts +3 -0
- package/dist/tx/outputs.d.ts.map +1 -0
- package/dist/tx/outputs.js +57 -0
- package/dist/tx/outputs.js.map +1 -0
- package/dist/tx/spend.d.ts +10 -0
- package/dist/tx/spend.d.ts.map +1 -0
- package/dist/tx/spend.js +17 -0
- package/dist/tx/spend.js.map +1 -0
- package/dist/tx/spends.d.ts +8 -0
- package/dist/tx/spends.d.ts.map +1 -0
- package/dist/tx/spends.js +48 -0
- package/dist/tx/spends.js.map +1 -0
- package/dist/tx/types.d.ts +5 -0
- package/dist/tx/types.d.ts.map +1 -0
- package/dist/tx/types.js +2 -0
- package/dist/tx/types.js.map +1 -0
- package/dist/tx/unlocks.d.ts +4 -0
- package/dist/tx/unlocks.d.ts.map +1 -0
- package/dist/tx/unlocks.js +49 -0
- package/dist/tx/unlocks.js.map +1 -0
- package/dist/tx/witness.d.ts +14 -0
- package/dist/tx/witness.d.ts.map +1 -0
- package/dist/tx/witness.js +81 -0
- package/dist/tx/witness.js.map +1 -0
- package/dist/types.d.ts +311 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { badd, bmul, bneg, bsub, binv } from "../core/belt.js";
|
|
2
|
+
import { mustAt } from "../core/must.js";
|
|
3
|
+
import { base58 } from "@scure/base";
|
|
4
|
+
import { digestFromBelts, digestToBase58 } from "../core/digest.js";
|
|
5
|
+
import { hashVarlen } from "../core/tip5/index.js";
|
|
6
|
+
import { G_ORDER, truncGOrder, U256 } from "../core/u256.js";
|
|
7
|
+
import { bpegcd } from "./bpoly.js";
|
|
8
|
+
export const F6_ZERO = [0n, 0n, 0n, 0n, 0n, 0n];
|
|
9
|
+
export const F6_ONE = [1n, 0n, 0n, 0n, 0n, 0n];
|
|
10
|
+
export const A_ID = { x: [...F6_ZERO], y: [...F6_ONE], inf: true };
|
|
11
|
+
export const A_GEN = {
|
|
12
|
+
x: [
|
|
13
|
+
2754611494552410273n,
|
|
14
|
+
8599518745794843693n,
|
|
15
|
+
10526511002404673680n,
|
|
16
|
+
4830863958577994148n,
|
|
17
|
+
375185138577093320n,
|
|
18
|
+
12938930721685970739n,
|
|
19
|
+
],
|
|
20
|
+
y: [
|
|
21
|
+
15384029202802550068n,
|
|
22
|
+
2774812795997841935n,
|
|
23
|
+
14375303400746062753n,
|
|
24
|
+
10708493419890101954n,
|
|
25
|
+
13187678623570541764n,
|
|
26
|
+
9990732138772505951n,
|
|
27
|
+
],
|
|
28
|
+
inf: false,
|
|
29
|
+
};
|
|
30
|
+
function f6Eq(a, b) {
|
|
31
|
+
return a.every((v, i) => v === b[i]);
|
|
32
|
+
}
|
|
33
|
+
function karat3(a, b) {
|
|
34
|
+
const m = [
|
|
35
|
+
bmul(mustAt(a, 0), mustAt(b, 0)),
|
|
36
|
+
bmul(mustAt(a, 1), mustAt(b, 1)),
|
|
37
|
+
bmul(mustAt(a, 2), mustAt(b, 2)),
|
|
38
|
+
];
|
|
39
|
+
return [
|
|
40
|
+
mustAt(m, 0),
|
|
41
|
+
bsub(bmul(badd(mustAt(a, 0), mustAt(a, 1)), badd(mustAt(b, 0), mustAt(b, 1))), badd(mustAt(m, 0), mustAt(m, 1))),
|
|
42
|
+
badd(bsub(bmul(badd(mustAt(a, 0), mustAt(a, 2)), badd(mustAt(b, 0), mustAt(b, 2))), badd(mustAt(m, 0), mustAt(m, 2))), mustAt(m, 1)),
|
|
43
|
+
bsub(bmul(badd(mustAt(a, 1), mustAt(a, 2)), badd(mustAt(b, 1), mustAt(b, 2))), badd(mustAt(m, 1), mustAt(m, 2))),
|
|
44
|
+
mustAt(m, 2),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
export function f6Mul(f, g) {
|
|
48
|
+
const f0g0 = karat3([mustAt(f, 0), mustAt(f, 1), mustAt(f, 2)], [mustAt(g, 0), mustAt(g, 1), mustAt(g, 2)]);
|
|
49
|
+
const f1g1 = karat3([mustAt(f, 3), mustAt(f, 4), mustAt(f, 5)], [mustAt(g, 3), mustAt(g, 4), mustAt(g, 5)]);
|
|
50
|
+
const foil = karat3([badd(mustAt(f, 0), mustAt(f, 3)), badd(mustAt(f, 1), mustAt(f, 4)), badd(mustAt(f, 2), mustAt(f, 5))], [badd(mustAt(g, 0), mustAt(g, 3)), badd(mustAt(g, 1), mustAt(g, 4)), badd(mustAt(g, 2), mustAt(g, 5))]);
|
|
51
|
+
const cross = [
|
|
52
|
+
bsub(mustAt(foil, 0), badd(mustAt(f0g0, 0), mustAt(f1g1, 0))),
|
|
53
|
+
bsub(mustAt(foil, 1), badd(mustAt(f0g0, 1), mustAt(f1g1, 1))),
|
|
54
|
+
bsub(mustAt(foil, 2), badd(mustAt(f0g0, 2), mustAt(f1g1, 2))),
|
|
55
|
+
bsub(mustAt(foil, 3), badd(mustAt(f0g0, 3), mustAt(f1g1, 3))),
|
|
56
|
+
bsub(mustAt(foil, 4), badd(mustAt(f0g0, 4), mustAt(f1g1, 4))),
|
|
57
|
+
];
|
|
58
|
+
const seven = 7n;
|
|
59
|
+
return [
|
|
60
|
+
badd(mustAt(f0g0, 0), bmul(seven, badd(mustAt(cross, 3), mustAt(f1g1, 0)))),
|
|
61
|
+
badd(mustAt(f0g0, 1), bmul(seven, badd(mustAt(cross, 4), mustAt(f1g1, 1)))),
|
|
62
|
+
badd(mustAt(f0g0, 2), bmul(seven, mustAt(f1g1, 2))),
|
|
63
|
+
badd(badd(mustAt(f0g0, 3), mustAt(cross, 0)), bmul(seven, mustAt(f1g1, 3))),
|
|
64
|
+
badd(badd(mustAt(f0g0, 4), mustAt(cross, 1)), bmul(seven, mustAt(f1g1, 4))),
|
|
65
|
+
mustAt(cross, 2),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function bpscal(scalar, b, res) {
|
|
69
|
+
for (let i = 0; i < b.length; i++)
|
|
70
|
+
res[i] = bmul(scalar, mustAt(b, i));
|
|
71
|
+
}
|
|
72
|
+
export function f6Inv(f) {
|
|
73
|
+
if (f6Eq(f, F6_ZERO))
|
|
74
|
+
return null;
|
|
75
|
+
const res = new Array(6).fill(0n);
|
|
76
|
+
const d = new Array(7).fill(0n);
|
|
77
|
+
const u = new Array(7).fill(0n);
|
|
78
|
+
const v = new Array(6).fill(0n);
|
|
79
|
+
bpegcd(f, [bneg(7n), 0n, 0n, 0n, 0n, 0n, 1n], d, u, v);
|
|
80
|
+
const inv = binv(mustAt(d, 0));
|
|
81
|
+
bpscal(inv, u, res);
|
|
82
|
+
return res;
|
|
83
|
+
}
|
|
84
|
+
function f6Div(f, g) {
|
|
85
|
+
const gInv = f6Inv(g);
|
|
86
|
+
if (!gInv)
|
|
87
|
+
return null;
|
|
88
|
+
return f6Mul(f, gInv);
|
|
89
|
+
}
|
|
90
|
+
function f6Add(f1, f2) {
|
|
91
|
+
return f1.map((v, i) => badd(v, mustAt(f2, i)));
|
|
92
|
+
}
|
|
93
|
+
function f6Neg(f) {
|
|
94
|
+
return f.map((v) => bneg(v));
|
|
95
|
+
}
|
|
96
|
+
function f6Sub(f1, f2) {
|
|
97
|
+
return f1.map((v, i) => bsub(v, mustAt(f2, i)));
|
|
98
|
+
}
|
|
99
|
+
function f6Scal(s, f) {
|
|
100
|
+
return f.map((v) => bmul(s, v));
|
|
101
|
+
}
|
|
102
|
+
function f6Square(f) {
|
|
103
|
+
return f6Mul(f, f);
|
|
104
|
+
}
|
|
105
|
+
function pointsEqual(a, b) {
|
|
106
|
+
return a.inf === b.inf && f6Eq(a.x, b.x) && f6Eq(a.y, b.y);
|
|
107
|
+
}
|
|
108
|
+
function chDoubleUnsafe(x, y) {
|
|
109
|
+
const slope = f6Div(f6Add(f6Scal(3n, f6Square(x)), F6_ONE), f6Scal(2n, y));
|
|
110
|
+
if (!slope)
|
|
111
|
+
return null;
|
|
112
|
+
const xOut = f6Sub(f6Square(slope), f6Scal(2n, x));
|
|
113
|
+
const yOut = f6Sub(f6Mul(slope, f6Sub(x, xOut)), y);
|
|
114
|
+
return { x: xOut, y: yOut, inf: false };
|
|
115
|
+
}
|
|
116
|
+
function chDouble(p) {
|
|
117
|
+
if (p.inf || f6Eq(p.y, F6_ZERO))
|
|
118
|
+
return { ...A_ID, x: [...A_ID.x], y: [...A_ID.y] };
|
|
119
|
+
return chDoubleUnsafe(p.x, p.y);
|
|
120
|
+
}
|
|
121
|
+
function chAddUnsafe(p, q) {
|
|
122
|
+
const slope = f6Div(f6Sub(p.y, q.y), f6Sub(p.x, q.x));
|
|
123
|
+
if (!slope)
|
|
124
|
+
return null;
|
|
125
|
+
const xOut = f6Sub(f6Square(slope), f6Add(p.x, q.x));
|
|
126
|
+
const yOut = f6Sub(f6Mul(slope, f6Sub(p.x, xOut)), p.y);
|
|
127
|
+
return { x: xOut, y: yOut, inf: false };
|
|
128
|
+
}
|
|
129
|
+
export function chNeg(p) {
|
|
130
|
+
return { x: [...p.x], y: f6Neg(p.y), inf: p.inf };
|
|
131
|
+
}
|
|
132
|
+
export function chAdd(p, q) {
|
|
133
|
+
if (p.inf)
|
|
134
|
+
return { ...q, x: [...q.x], y: [...q.y] };
|
|
135
|
+
if (q.inf)
|
|
136
|
+
return { ...p, x: [...p.x], y: [...p.y] };
|
|
137
|
+
if (pointsEqual(p, chNeg(q)))
|
|
138
|
+
return { ...A_ID, x: [...A_ID.x], y: [...A_ID.y] };
|
|
139
|
+
if (pointsEqual(p, q))
|
|
140
|
+
return chDouble(p);
|
|
141
|
+
return chAddUnsafe(p, q);
|
|
142
|
+
}
|
|
143
|
+
export function chScalBig(n, p) {
|
|
144
|
+
if (n.eq(U256.ZERO))
|
|
145
|
+
return { ...A_ID, x: [...A_ID.x], y: [...A_ID.y] };
|
|
146
|
+
let acc = { ...A_ID, x: [...A_ID.x], y: [...A_ID.y] };
|
|
147
|
+
const pCopy = { ...p, x: [...p.x], y: [...p.y] };
|
|
148
|
+
for (const byte of n.toBeBytes()) {
|
|
149
|
+
for (let bit = 7; bit >= 0; bit--) {
|
|
150
|
+
const doubled = chDouble(acc);
|
|
151
|
+
if (!doubled)
|
|
152
|
+
return null;
|
|
153
|
+
acc = doubled;
|
|
154
|
+
if ((byte >> bit) & 1) {
|
|
155
|
+
const added = chAdd(acc, pCopy);
|
|
156
|
+
if (!added)
|
|
157
|
+
return null;
|
|
158
|
+
acc = added;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return acc;
|
|
163
|
+
}
|
|
164
|
+
const CHEETAH_POINT_BYTES = 97;
|
|
165
|
+
export function cheetahPointToBase58(point) {
|
|
166
|
+
return base58.encode(publicKeyToBeBytes(point));
|
|
167
|
+
}
|
|
168
|
+
export function cheetahPointFromBase58(b58) {
|
|
169
|
+
const decoded = base58.decode(b58);
|
|
170
|
+
const bytes = new Uint8Array(CHEETAH_POINT_BYTES);
|
|
171
|
+
bytes.set(decoded, CHEETAH_POINT_BYTES - decoded.length);
|
|
172
|
+
return publicKeyFromBeBytes(bytes);
|
|
173
|
+
}
|
|
174
|
+
export function publicKeyToBeBytes(point) {
|
|
175
|
+
const out = new Uint8Array(97);
|
|
176
|
+
out[0] = 0x01;
|
|
177
|
+
for (let i = 0; i < 6; i++) {
|
|
178
|
+
const yVal = mustAt(point.y, 5 - i);
|
|
179
|
+
const xVal = mustAt(point.x, 5 - i);
|
|
180
|
+
const yOff = 1 + i * 8;
|
|
181
|
+
const xOff = 49 + i * 8;
|
|
182
|
+
for (let j = 0; j < 8; j++) {
|
|
183
|
+
out[yOff + j] = Number((yVal >> BigInt((7 - j) * 8)) & 0xffn);
|
|
184
|
+
out[xOff + j] = Number((xVal >> BigInt((7 - j) * 8)) & 0xffn);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
export function publicKeyToSlip10Bytes(point) {
|
|
190
|
+
const out = new Uint8Array(96);
|
|
191
|
+
let offset = 0;
|
|
192
|
+
for (const belt of [...point.y.slice().reverse(), ...point.x.slice().reverse()]) {
|
|
193
|
+
for (let j = 0; j < 8; j++) {
|
|
194
|
+
out[offset + j] = Number((belt >> BigInt((7 - j) * 8)) & 0xffn);
|
|
195
|
+
}
|
|
196
|
+
offset += 8;
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
export function publicKeyFromBeBytes(bytes) {
|
|
201
|
+
const x = [0n, 0n, 0n, 0n, 0n, 0n];
|
|
202
|
+
const y = [0n, 0n, 0n, 0n, 0n, 0n];
|
|
203
|
+
for (let i = 0; i < 6; i++) {
|
|
204
|
+
const offset = 1 + i * 8;
|
|
205
|
+
const buf = bytes.subarray(offset, offset + 8);
|
|
206
|
+
let val = 0n;
|
|
207
|
+
for (const b of buf)
|
|
208
|
+
val = (val << 8n) | BigInt(b);
|
|
209
|
+
y[5 - i] = val;
|
|
210
|
+
}
|
|
211
|
+
for (let i = 0; i < 6; i++) {
|
|
212
|
+
const offset = 49 + i * 8;
|
|
213
|
+
const buf = bytes.subarray(offset, offset + 8);
|
|
214
|
+
let val = 0n;
|
|
215
|
+
for (const b of buf)
|
|
216
|
+
val = (val << 8n) | BigInt(b);
|
|
217
|
+
x[5 - i] = val;
|
|
218
|
+
}
|
|
219
|
+
return { x, y, inf: false };
|
|
220
|
+
}
|
|
221
|
+
export function cheetahPointHash(point) {
|
|
222
|
+
const dyck = [
|
|
223
|
+
0n, 0n, 1n, 0n, 1n, 0n, 1n, 0n, 1n, 0n, 1n, 1n, 0n, 0n, 1n, 0n, 1n, 0n, 1n, 0n, 1n, 0n, 1n, 1n,
|
|
224
|
+
];
|
|
225
|
+
const leaves = [...point.x, ...point.y, point.inf ? 0n : 1n];
|
|
226
|
+
const hashInput = [BigInt(leaves.length), ...leaves, ...dyck];
|
|
227
|
+
return digestToBase58(digestFromBelts(hashVarlen(hashInput)));
|
|
228
|
+
}
|
|
229
|
+
export function verifySignature(publicKeyBytes, cHex, sHex, messageDigest) {
|
|
230
|
+
const c = U256.fromLeHex(cHex);
|
|
231
|
+
const s = U256.fromLeHex(sHex);
|
|
232
|
+
if (c.eq(U256.ZERO) || !c.lt(G_ORDER) || s.eq(U256.ZERO) || !s.lt(G_ORDER)) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
const pubkey = publicKeyFromBeBytes(publicKeyBytes);
|
|
236
|
+
const sg = chScalBig(s, A_GEN);
|
|
237
|
+
if (!sg)
|
|
238
|
+
return false;
|
|
239
|
+
const cPk = chScalBig(c, pubkey);
|
|
240
|
+
if (!cPk)
|
|
241
|
+
return false;
|
|
242
|
+
const negCPk = chNeg(cPk);
|
|
243
|
+
const scalar = chAdd(sg, negCPk);
|
|
244
|
+
if (!scalar)
|
|
245
|
+
return false;
|
|
246
|
+
const transcript = [...scalar.x, ...scalar.y, ...pubkey.x, ...pubkey.y, ...messageDigest];
|
|
247
|
+
const chal = truncGOrder(hashVarlen(transcript));
|
|
248
|
+
return chal.eq(c);
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=cheetah.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cheetah.js","sourceRoot":"","sources":["../../src/crypto/cheetah.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Signature } from "../types.js";
|
|
2
|
+
export { deriveMasterKey, deriveMasterKeyFromMnemonic, ExtendedKey } from "./slip10.js";
|
|
3
|
+
export { PrivateKey, signMessage } from "./privateKey.js";
|
|
4
|
+
export { PublicKey, publicKeyFromBeBytes, publicKeyFromHex, publicKeyToHex, publicKeyVerify, } from "./publicKey.js";
|
|
5
|
+
export declare function hashPublicKey(publicKeyBytes: Uint8Array): string;
|
|
6
|
+
export declare function verifySignature(publicKeyBytes: Uint8Array, signature: Signature, message: string): boolean;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,aAAa,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAMhE;AAED,wBAAgB,eAAe,CAC7B,cAAc,EAAE,UAAU,EAC1B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAQT"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { beltsFromBytes } from "../core/belt.js";
|
|
2
|
+
import { cheetahPointHash, publicKeyFromBeBytes, verifySignature as verifySig } from "./cheetah.js";
|
|
3
|
+
import { vecToNoun } from "../noun/belts.js";
|
|
4
|
+
import { hashNounWholeBelts } from "../hash/structural.js";
|
|
5
|
+
export { deriveMasterKey, deriveMasterKeyFromMnemonic, ExtendedKey } from "./slip10.js";
|
|
6
|
+
export { PrivateKey, signMessage } from "./privateKey.js";
|
|
7
|
+
export { PublicKey, publicKeyFromBeBytes, publicKeyFromHex, publicKeyToHex, publicKeyVerify, } from "./publicKey.js";
|
|
8
|
+
export function hashPublicKey(publicKeyBytes) {
|
|
9
|
+
if (publicKeyBytes.length !== 97) {
|
|
10
|
+
throw new Error("Public key must be 97 bytes");
|
|
11
|
+
}
|
|
12
|
+
const point = publicKeyFromBeBytes(publicKeyBytes);
|
|
13
|
+
return cheetahPointHash(point);
|
|
14
|
+
}
|
|
15
|
+
export function verifySignature(publicKeyBytes, signature, message) {
|
|
16
|
+
if (publicKeyBytes.length !== 97) {
|
|
17
|
+
throw new Error("Public key must be 97 bytes");
|
|
18
|
+
}
|
|
19
|
+
const belts = beltsFromBytes(new TextEncoder().encode(message));
|
|
20
|
+
const noun = vecToNoun(belts);
|
|
21
|
+
const digest = hashNounWholeBelts(noun);
|
|
22
|
+
return verifySig(publicKeyBytes, signature.c, signature.s, digest);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,UAAU,aAAa,CAAC,cAA0B;IACtD,IAAI,cAAc,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,cAA0B,EAC1B,SAAoB,EACpB,OAAe;IAEf,IAAI,cAAc,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Digest, Signature } from "../types.js";
|
|
2
|
+
export declare class PrivateKey {
|
|
3
|
+
private readonly scalar;
|
|
4
|
+
constructor(signingKeyBytes: Uint8Array);
|
|
5
|
+
static fromBytes(signingKeyBytes: Uint8Array): PrivateKey;
|
|
6
|
+
get publicKey(): Uint8Array;
|
|
7
|
+
signDigest(digest: Digest): Signature;
|
|
8
|
+
private publicKeyPoint;
|
|
9
|
+
}
|
|
10
|
+
export declare function signMessage(privateKeyBytes: Uint8Array, message: string): Signature;
|
|
11
|
+
//# sourceMappingURL=privateKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privateKey.d.ts","sourceRoot":"","sources":["../../src/crypto/privateKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoErD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;gBAElB,eAAe,EAAE,UAAU;IAOvC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU;IAIzD,IAAI,SAAS,IAAI,UAAU,CAG1B;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAOrC,OAAO,CAAC,cAAc;CAKvB;AAED,wBAAgB,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CASnF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { mustAt } from "../core/must.js";
|
|
2
|
+
import { beltsFromBytes } from "../core/belt.js";
|
|
3
|
+
import { digestFromBase58 } from "../core/digest.js";
|
|
4
|
+
import { hashVarlen } from "../core/tip5/index.js";
|
|
5
|
+
import { G_ORDER, truncGOrder, U256 } from "../core/u256.js";
|
|
6
|
+
import { vecToNoun } from "../noun/belts.js";
|
|
7
|
+
import { hashNounWholeBelts } from "../hash/structural.js";
|
|
8
|
+
import { A_GEN, chScalBig, publicKeyToBeBytes, } from "./cheetah.js";
|
|
9
|
+
function leBytesToBelts(bytes) {
|
|
10
|
+
const belts = [];
|
|
11
|
+
for (let i = 0; i < bytes.length; i += 4) {
|
|
12
|
+
const chunk = bytes.subarray(i, Math.min(i + 4, bytes.length));
|
|
13
|
+
let v = 0n;
|
|
14
|
+
for (let j = 0; j < chunk.length; j++) {
|
|
15
|
+
v |= BigInt(mustAt(chunk, j)) << BigInt(j * 8);
|
|
16
|
+
}
|
|
17
|
+
belts.push(v);
|
|
18
|
+
}
|
|
19
|
+
return belts;
|
|
20
|
+
}
|
|
21
|
+
function u256ToLeHex(v) {
|
|
22
|
+
return [...v.toLeBytes()].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
23
|
+
}
|
|
24
|
+
function nonceFor(scalar, pubkey, mBelts) {
|
|
25
|
+
const transcript = [
|
|
26
|
+
...pubkey.x,
|
|
27
|
+
...pubkey.y,
|
|
28
|
+
...mBelts,
|
|
29
|
+
...leBytesToBelts(scalar.toLeBytes()),
|
|
30
|
+
];
|
|
31
|
+
return truncGOrder(hashVarlen(transcript));
|
|
32
|
+
}
|
|
33
|
+
function signMulti(scalar, mBelts, sharedNonce, combinedPubkey) {
|
|
34
|
+
const scalarPt = chScalBig(sharedNonce, A_GEN);
|
|
35
|
+
if (!scalarPt)
|
|
36
|
+
throw new Error("invalid nonce scalar");
|
|
37
|
+
const chal = truncGOrder(hashVarlen([
|
|
38
|
+
...scalarPt.x,
|
|
39
|
+
...scalarPt.y,
|
|
40
|
+
...combinedPubkey.x,
|
|
41
|
+
...combinedPubkey.y,
|
|
42
|
+
...mBelts,
|
|
43
|
+
]));
|
|
44
|
+
const nonce = nonceFor(scalar, combinedPubkey, mBelts);
|
|
45
|
+
const chalMul = chal.mulMod(scalar, G_ORDER);
|
|
46
|
+
const s = nonce.addMod(chalMul, G_ORDER);
|
|
47
|
+
return { c: u256ToLeHex(chal), s: u256ToLeHex(s) };
|
|
48
|
+
}
|
|
49
|
+
export class PrivateKey {
|
|
50
|
+
scalar;
|
|
51
|
+
constructor(signingKeyBytes) {
|
|
52
|
+
if (signingKeyBytes.length !== 32) {
|
|
53
|
+
throw new Error("Private key must be 32 bytes");
|
|
54
|
+
}
|
|
55
|
+
this.scalar = U256.fromBeBytes(signingKeyBytes);
|
|
56
|
+
}
|
|
57
|
+
static fromBytes(signingKeyBytes) {
|
|
58
|
+
return new PrivateKey(signingKeyBytes);
|
|
59
|
+
}
|
|
60
|
+
get publicKey() {
|
|
61
|
+
const pt = this.publicKeyPoint();
|
|
62
|
+
return publicKeyToBeBytes(pt);
|
|
63
|
+
}
|
|
64
|
+
signDigest(digest) {
|
|
65
|
+
const pubkey = this.publicKeyPoint();
|
|
66
|
+
const mBelts = [...digestFromBase58(digest)];
|
|
67
|
+
const nonce = nonceFor(this.scalar, pubkey, mBelts);
|
|
68
|
+
return signMulti(this.scalar, mBelts, nonce, pubkey);
|
|
69
|
+
}
|
|
70
|
+
publicKeyPoint() {
|
|
71
|
+
const pt = chScalBig(this.scalar, A_GEN);
|
|
72
|
+
if (!pt)
|
|
73
|
+
throw new Error("invalid private key");
|
|
74
|
+
return pt;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function signMessage(privateKeyBytes, message) {
|
|
78
|
+
const belts = beltsFromBytes(new TextEncoder().encode(message));
|
|
79
|
+
const noun = vecToNoun(belts);
|
|
80
|
+
const digest = hashNounWholeBelts(noun);
|
|
81
|
+
const scalar = U256.fromBeBytes(privateKeyBytes);
|
|
82
|
+
const pubkeyPt = chScalBig(scalar, A_GEN);
|
|
83
|
+
if (!pubkeyPt)
|
|
84
|
+
throw new Error("invalid private key");
|
|
85
|
+
const nonce = nonceFor(scalar, pubkeyPt, digest);
|
|
86
|
+
return signMulti(scalar, digest, nonce, pubkeyPt);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=privateKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privateKey.js","sourceRoot":"","sources":["../../src/crypto/privateKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Digest, Signature } from "../types.js";
|
|
2
|
+
import { type CheetahPoint } from "./cheetah.js";
|
|
3
|
+
export declare class PublicKey {
|
|
4
|
+
readonly point: CheetahPoint;
|
|
5
|
+
private constructor();
|
|
6
|
+
static fromBeBytes(bytes: Uint8Array): PublicKey;
|
|
7
|
+
static fromHex(hex: string): PublicKey | undefined;
|
|
8
|
+
static fromBase58(b58: string): PublicKey;
|
|
9
|
+
toBeBytes(): Uint8Array;
|
|
10
|
+
toHex(): string;
|
|
11
|
+
toBase58(): string;
|
|
12
|
+
verify(digest: Digest, signature: Signature): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function publicKeyFromHex(hex: string): PublicKey | undefined;
|
|
15
|
+
export declare function publicKeyToHex(pk: PublicKey): string;
|
|
16
|
+
export declare function publicKeyFromBeBytes(bytes: Uint8Array): PublicKey;
|
|
17
|
+
export declare function publicKeyVerify(pk: PublicKey, digest: Digest, signature: Signature): boolean;
|
|
18
|
+
//# sourceMappingURL=publicKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicKey.d.ts","sourceRoot":"","sources":["../../src/crypto/publicKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EASL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB,qBAAa,SAAS;IACA,QAAQ,CAAC,KAAK,EAAE,YAAY;IAAhD,OAAO;IAEP,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS;IAKhD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAalD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAIzC,SAAS,IAAI,UAAU;IAIvB,KAAK,IAAI,MAAM;IAIf,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;CAyBtD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEnE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAEpD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAEjE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAE5F"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { digestFromBase58 } from "../core/digest.js";
|
|
2
|
+
import { G_ORDER, truncGOrder, U256 } from "../core/u256.js";
|
|
3
|
+
import { hashVarlen } from "../core/tip5/index.js";
|
|
4
|
+
import { A_GEN, chAdd, chNeg, chScalBig, cheetahPointFromBase58, cheetahPointToBase58, publicKeyFromBeBytes as pointFromBeBytes, publicKeyToBeBytes, } from "./cheetah.js";
|
|
5
|
+
export class PublicKey {
|
|
6
|
+
point;
|
|
7
|
+
constructor(point) {
|
|
8
|
+
this.point = point;
|
|
9
|
+
}
|
|
10
|
+
static fromBeBytes(bytes) {
|
|
11
|
+
if (bytes.length !== 97)
|
|
12
|
+
throw new Error("Public key must be 97 bytes");
|
|
13
|
+
return new PublicKey(pointFromBeBytes(bytes));
|
|
14
|
+
}
|
|
15
|
+
static fromHex(hex) {
|
|
16
|
+
if (hex.length !== 194)
|
|
17
|
+
return undefined;
|
|
18
|
+
const bytes = new Uint8Array(97);
|
|
19
|
+
for (let i = 0; i < 97; i++) {
|
|
20
|
+
const byteHex = hex.slice(i * 2, i * 2 + 2);
|
|
21
|
+
const v = parseInt(byteHex, 16);
|
|
22
|
+
if (Number.isNaN(v))
|
|
23
|
+
return undefined;
|
|
24
|
+
bytes[i] = v;
|
|
25
|
+
}
|
|
26
|
+
return new PublicKey(pointFromBeBytes(bytes));
|
|
27
|
+
}
|
|
28
|
+
static fromBase58(b58) {
|
|
29
|
+
return new PublicKey(cheetahPointFromBase58(b58));
|
|
30
|
+
}
|
|
31
|
+
toBeBytes() {
|
|
32
|
+
return publicKeyToBeBytes(this.point);
|
|
33
|
+
}
|
|
34
|
+
toHex() {
|
|
35
|
+
return [...this.toBeBytes()].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
36
|
+
}
|
|
37
|
+
toBase58() {
|
|
38
|
+
return cheetahPointToBase58(this.point);
|
|
39
|
+
}
|
|
40
|
+
verify(digest, signature) {
|
|
41
|
+
const c = U256.fromLeHex(signature.c);
|
|
42
|
+
const s = U256.fromLeHex(signature.s);
|
|
43
|
+
if (c.eq(U256.ZERO) || !c.lt(G_ORDER) || s.eq(U256.ZERO) || !s.lt(G_ORDER)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const sg = chScalBig(s, A_GEN);
|
|
47
|
+
if (!sg)
|
|
48
|
+
return false;
|
|
49
|
+
const cPk = chScalBig(c, this.point);
|
|
50
|
+
if (!cPk)
|
|
51
|
+
return false;
|
|
52
|
+
const scalar = chAdd(sg, chNeg(cPk));
|
|
53
|
+
if (!scalar)
|
|
54
|
+
return false;
|
|
55
|
+
const mBelts = [...digestFromBase58(digest)];
|
|
56
|
+
const transcript = [
|
|
57
|
+
...scalar.x,
|
|
58
|
+
...scalar.y,
|
|
59
|
+
...this.point.x,
|
|
60
|
+
...this.point.y,
|
|
61
|
+
...mBelts,
|
|
62
|
+
];
|
|
63
|
+
const chal = truncGOrder(hashVarlen(transcript));
|
|
64
|
+
return chal.eq(c);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function publicKeyFromHex(hex) {
|
|
68
|
+
return PublicKey.fromHex(hex);
|
|
69
|
+
}
|
|
70
|
+
export function publicKeyToHex(pk) {
|
|
71
|
+
return pk.toHex();
|
|
72
|
+
}
|
|
73
|
+
export function publicKeyFromBeBytes(bytes) {
|
|
74
|
+
return PublicKey.fromBeBytes(bytes);
|
|
75
|
+
}
|
|
76
|
+
export function publicKeyVerify(pk, digest, signature) {
|
|
77
|
+
return pk.verify(digest, signature);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=publicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicKey.js","sourceRoot":"","sources":["../../src/crypto/publicKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class ExtendedKey {
|
|
2
|
+
readonly privateKey: Uint8Array | null;
|
|
3
|
+
readonly publicKey: Uint8Array;
|
|
4
|
+
readonly chainCode: Uint8Array;
|
|
5
|
+
constructor(privateKey: Uint8Array | null, publicKey: Uint8Array, chainCode: Uint8Array);
|
|
6
|
+
deriveChild(index: number): ExtendedKey;
|
|
7
|
+
}
|
|
8
|
+
export declare function deriveMasterKey(seed: Uint8Array): ExtendedKey;
|
|
9
|
+
export declare function deriveMasterKeyFromMnemonic(mnemonic: string, passphrase?: string | null): ExtendedKey;
|
|
10
|
+
//# sourceMappingURL=slip10.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slip10.d.ts","sourceRoot":"","sources":["../../src/crypto/slip10.ts"],"names":[],"mappings":"AAoCA,qBAAa,WAAW;IAEpB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IACtC,QAAQ,CAAC,SAAS,EAAE,UAAU;IAC9B,QAAQ,CAAC,SAAS,EAAE,UAAU;gBAFrB,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU;IAGhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;CAyDxC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAa7D;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACzB,WAAW,CAGb"}
|