@ckb-ccc/core 0.1.0-alpha.7 → 0.1.0
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/CHANGELOG.md +27 -0
- package/dist/ckb/transactionLumos.d.ts +2 -1
- package/dist/ckb/transactionLumos.d.ts.map +1 -1
- package/dist/client/client.js +1 -1
- package/dist/signer/btc/signerBtc.d.ts.map +1 -1
- package/dist/signer/btc/signerBtc.js +2 -3
- package/dist/signer/btc/verify.d.ts +14 -1
- package/dist/signer/btc/verify.d.ts.map +1 -1
- package/dist/signer/btc/verify.js +22 -1
- package/dist/signer/doge/index.d.ts +5 -0
- package/dist/signer/doge/index.d.ts.map +1 -0
- package/dist/signer/doge/index.js +4 -0
- package/dist/signer/doge/signerDoge.d.ts +52 -0
- package/dist/signer/doge/signerDoge.d.ts.map +1 -0
- package/dist/signer/doge/signerDoge.js +82 -0
- package/dist/signer/doge/signerDogeAddressReadonly.d.ts +41 -0
- package/dist/signer/doge/signerDogeAddressReadonly.d.ts.map +1 -0
- package/dist/signer/doge/signerDogeAddressReadonly.js +45 -0
- package/dist/signer/doge/signerDogePrivateKey.d.ts +52 -0
- package/dist/signer/doge/signerDogePrivateKey.d.ts.map +1 -0
- package/dist/signer/doge/signerDogePrivateKey.js +68 -0
- package/dist/signer/doge/verify.d.ts +6 -0
- package/dist/signer/doge/verify.d.ts.map +1 -0
- package/dist/signer/doge/verify.js +17 -0
- package/dist/signer/index.d.ts +1 -0
- package/dist/signer/index.d.ts.map +1 -1
- package/dist/signer/index.js +1 -0
- package/dist/signer/nostr/index.d.ts +1 -0
- package/dist/signer/nostr/index.d.ts.map +1 -1
- package/dist/signer/nostr/index.js +1 -0
- package/dist/signer/signer/index.d.ts +4 -2
- package/dist/signer/signer/index.d.ts.map +1 -1
- package/dist/signer/signer/index.js +5 -0
- package/dist.commonjs/address/address.advanced.js +23 -28
- package/dist.commonjs/address/advanced.js +1 -17
- package/dist.commonjs/address/index.js +11 -15
- package/dist.commonjs/advanced.js +2 -31
- package/dist.commonjs/advancedBarrel.js +5 -21
- package/dist.commonjs/barrel.js +12 -41
- package/dist.commonjs/bytes/advanced.js +1 -2
- package/dist.commonjs/bytes/index.js +7 -12
- package/dist.commonjs/ckb/advanced.js +3 -32
- package/dist.commonjs/ckb/index.js +3 -19
- package/dist.commonjs/ckb/molecule.advanced/generated.js +64 -131
- package/dist.commonjs/ckb/molecule.advanced/index.js +2 -19
- package/dist.commonjs/ckb/script.advanced.js +3 -6
- package/dist.commonjs/ckb/script.js +23 -53
- package/dist.commonjs/ckb/transaction.advanced.js +3 -6
- package/dist.commonjs/ckb/transaction.js +122 -163
- package/dist.commonjs/ckb/transactionLumos.d.ts +2 -1
- package/dist.commonjs/ckb/transactionLumos.d.ts.map +1 -1
- package/dist.commonjs/ckb/transactionLumos.js +1 -2
- package/dist.commonjs/client/advanced.js +6 -22
- package/dist.commonjs/client/cache/advanced.js +1 -17
- package/dist.commonjs/client/cache/cache.js +3 -7
- package/dist.commonjs/client/cache/index.js +2 -18
- package/dist.commonjs/client/cache/memory.advanced.js +21 -28
- package/dist.commonjs/client/cache/memory.js +19 -23
- package/dist.commonjs/client/client.js +22 -26
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +22 -25
- package/dist.commonjs/client/clientPublicMainnet.js +8 -15
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +22 -25
- package/dist.commonjs/client/clientPublicTestnet.js +8 -15
- package/dist.commonjs/client/clientTypes.advanced.js +3 -6
- package/dist.commonjs/client/clientTypes.js +29 -43
- package/dist.commonjs/client/index.js +6 -22
- package/dist.commonjs/client/jsonRpc/advanced.js +2 -18
- package/dist.commonjs/client/jsonRpc/index.js +37 -41
- package/dist.commonjs/client/jsonRpc/transformers.js +57 -61
- package/dist.commonjs/client/jsonRpc/types.js +1 -2
- package/dist.commonjs/client/transports/advanced.js +8 -25
- package/dist.commonjs/client/transports/http.js +1 -5
- package/dist.commonjs/client/transports/transport.js +1 -2
- package/dist.commonjs/client/transports/webSocket.js +3 -10
- package/dist.commonjs/fixedPoint/index.js +4 -9
- package/dist.commonjs/hasher/advanced.js +1 -4
- package/dist.commonjs/hasher/hasher.js +1 -2
- package/dist.commonjs/hasher/hasherCkb.js +14 -20
- package/dist.commonjs/hasher/hasherKeecak256.js +7 -11
- package/dist.commonjs/hasher/index.js +3 -19
- package/dist.commonjs/hex/index.js +3 -6
- package/dist.commonjs/index.js +2 -31
- package/dist.commonjs/keystore/index.js +21 -25
- package/dist.commonjs/molecule/codec.js +48 -63
- package/dist.commonjs/molecule/index.js +2 -18
- package/dist.commonjs/molecule/predefined.js +77 -103
- package/dist.commonjs/num/index.js +17 -29
- package/dist.commonjs/signer/btc/index.js +3 -19
- package/dist.commonjs/signer/btc/signerBtc.d.ts.map +1 -1
- package/dist.commonjs/signer/btc/signerBtc.js +20 -25
- package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +4 -8
- package/dist.commonjs/signer/btc/verify.d.ts +14 -1
- package/dist.commonjs/signer/btc/verify.d.ts.map +1 -1
- package/dist.commonjs/signer/btc/verify.js +29 -11
- package/dist.commonjs/signer/ckb/index.js +5 -21
- package/dist.commonjs/signer/ckb/signerCkbPrivateKey.js +16 -20
- package/dist.commonjs/signer/ckb/signerCkbPublicKey.js +20 -24
- package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +8 -12
- package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.js +12 -16
- package/dist.commonjs/signer/ckb/verifyJoyId.js +5 -8
- package/dist.commonjs/signer/doge/index.d.ts +5 -0
- package/dist.commonjs/signer/doge/index.d.ts.map +1 -0
- package/dist.commonjs/signer/doge/index.js +4 -0
- package/dist.commonjs/signer/doge/signerDoge.d.ts +52 -0
- package/dist.commonjs/signer/doge/signerDoge.d.ts.map +1 -0
- package/dist.commonjs/signer/doge/signerDoge.js +82 -0
- package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts +41 -0
- package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts.map +1 -0
- package/dist.commonjs/signer/doge/signerDogeAddressReadonly.js +45 -0
- package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts +52 -0
- package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts.map +1 -0
- package/dist.commonjs/signer/doge/signerDogePrivateKey.js +68 -0
- package/dist.commonjs/signer/doge/verify.d.ts +6 -0
- package/dist.commonjs/signer/doge/verify.d.ts.map +1 -0
- package/dist.commonjs/signer/doge/verify.js +17 -0
- package/dist.commonjs/signer/dummy/alwaysError.js +2 -6
- package/dist.commonjs/signer/dummy/dummy.js +3 -7
- package/dist.commonjs/signer/dummy/index.js +3 -19
- package/dist.commonjs/signer/dummy/openLink.js +2 -6
- package/dist.commonjs/signer/evm/index.js +3 -19
- package/dist.commonjs/signer/evm/signerEvm.js +31 -35
- package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +4 -8
- package/dist.commonjs/signer/evm/verify.js +4 -7
- package/dist.commonjs/signer/index.d.ts +1 -0
- package/dist.commonjs/signer/index.d.ts.map +1 -1
- package/dist.commonjs/signer/index.js +7 -22
- package/dist.commonjs/signer/nostr/index.d.ts +1 -0
- package/dist.commonjs/signer/nostr/index.d.ts.map +1 -1
- package/dist.commonjs/signer/nostr/index.js +2 -17
- package/dist.commonjs/signer/nostr/signerNostr.js +21 -25
- package/dist.commonjs/signer/nostr/verify.js +12 -16
- package/dist.commonjs/signer/signer/index.d.ts +4 -2
- package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
- package/dist.commonjs/signer/signer/index.js +22 -23
- package/dist.commonjs/utils/index.js +6 -12
- package/package.json +3 -1
- package/src/ckb/transactionLumos.ts +2 -1
- package/src/client/client.ts +1 -1
- package/src/signer/btc/signerBtc.ts +2 -3
- package/src/signer/btc/verify.ts +31 -2
- package/src/signer/doge/index.ts +4 -0
- package/src/signer/doge/signerDoge.ts +116 -0
- package/src/signer/doge/signerDogeAddressReadonly.ts +52 -0
- package/src/signer/doge/signerDogePrivateKey.ts +97 -0
- package/src/signer/doge/verify.ts +38 -0
- package/src/signer/index.ts +1 -0
- package/src/signer/nostr/index.ts +1 -0
- package/src/signer/signer/index.ts +9 -0
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignerDummy = void 0;
|
|
4
|
-
const index_js_1 = require("../signer/index.js");
|
|
1
|
+
import { Signer, SignerSignType } from "../signer/index.js";
|
|
5
2
|
/**
|
|
6
3
|
* @public
|
|
7
4
|
*/
|
|
8
|
-
class SignerDummy extends
|
|
5
|
+
export class SignerDummy extends Signer {
|
|
9
6
|
get signType() {
|
|
10
|
-
return
|
|
7
|
+
return SignerSignType.Unknown;
|
|
11
8
|
}
|
|
12
9
|
constructor(client, type) {
|
|
13
10
|
super(client);
|
|
@@ -23,4 +20,3 @@ class SignerDummy extends index_js_1.Signer {
|
|
|
23
20
|
throw new Error("Can't get addresses from SignerDummy");
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
|
-
exports.SignerDummy = SignerDummy;
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./alwaysError.js"), exports);
|
|
18
|
-
__exportStar(require("./dummy.js"), exports);
|
|
19
|
-
__exportStar(require("./openLink.js"), exports);
|
|
1
|
+
export * from "./alwaysError.js";
|
|
2
|
+
export * from "./dummy.js";
|
|
3
|
+
export * from "./openLink.js";
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignerOpenLink = void 0;
|
|
4
|
-
const dummy_js_1 = require("./dummy.js");
|
|
1
|
+
import { SignerDummy } from "./dummy.js";
|
|
5
2
|
/**
|
|
6
3
|
* @public
|
|
7
4
|
*/
|
|
8
|
-
class SignerOpenLink extends
|
|
5
|
+
export class SignerOpenLink extends SignerDummy {
|
|
9
6
|
constructor(client, type, link) {
|
|
10
7
|
super(client, type);
|
|
11
8
|
this.link = link;
|
|
@@ -14,4 +11,3 @@ class SignerOpenLink extends dummy_js_1.SignerDummy {
|
|
|
14
11
|
window.open(this.link, "_blank")?.focus();
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
|
-
exports.SignerOpenLink = SignerOpenLink;
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./signerEvm.js"), exports);
|
|
18
|
-
__exportStar(require("./signerEvmAddressReadonly.js"), exports);
|
|
19
|
-
__exportStar(require("./verify.js"), exports);
|
|
1
|
+
export * from "./signerEvm.js";
|
|
2
|
+
export * from "./signerEvmAddressReadonly.js";
|
|
3
|
+
export * from "./verify.js";
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const index_js_7 = require("../../num/index.js");
|
|
11
|
-
const index_js_8 = require("../../utils/index.js");
|
|
12
|
-
const index_js_9 = require("../signer/index.js");
|
|
1
|
+
import { Address } from "../../address/index.js";
|
|
2
|
+
import { bytesConcat, bytesFrom } from "../../bytes/index.js";
|
|
3
|
+
import { Transaction, WitnessArgs, } from "../../ckb/index.js";
|
|
4
|
+
import { KnownScript } from "../../client/index.js";
|
|
5
|
+
import { HasherKeecak256 } from "../../hasher/index.js";
|
|
6
|
+
import { hexFrom } from "../../hex/index.js";
|
|
7
|
+
import { numToBytes } from "../../num/index.js";
|
|
8
|
+
import { reduceAsync } from "../../utils/index.js";
|
|
9
|
+
import { Signer, SignerSignType, SignerType } from "../signer/index.js";
|
|
13
10
|
/**
|
|
14
11
|
* An abstract class extending Signer for Ethereum Virtual Machine (EVM) based signing operations.
|
|
15
12
|
* This class provides methods to get EVM account, internal address, and signing transactions.
|
|
16
13
|
* @public
|
|
17
14
|
*/
|
|
18
|
-
class SignerEvm extends
|
|
15
|
+
export class SignerEvm extends Signer {
|
|
19
16
|
get type() {
|
|
20
|
-
return
|
|
17
|
+
return SignerType.EVM;
|
|
21
18
|
}
|
|
22
19
|
get signType() {
|
|
23
|
-
return
|
|
20
|
+
return SignerSignType.EvmPersonal;
|
|
24
21
|
}
|
|
25
22
|
/**
|
|
26
23
|
* Gets the internal address, which is the EVM account in this case.
|
|
@@ -57,14 +54,14 @@ class SignerEvm extends index_js_9.Signer {
|
|
|
57
54
|
return [addr];
|
|
58
55
|
}
|
|
59
56
|
async _getOmniLockEvmAddressObj(account) {
|
|
60
|
-
return
|
|
57
|
+
return Address.fromKnownScript(this.client, KnownScript.OmniLock, hexFrom([0x12, ...bytesFrom(account), 0x00]));
|
|
61
58
|
}
|
|
62
59
|
async _getOmniLockOldEvmAddressObj(account) {
|
|
63
|
-
return
|
|
60
|
+
return Address.fromKnownScript(this.client, KnownScript.OmniLock, hexFrom([0x1, ...bytesFrom(account), 0x00]));
|
|
64
61
|
}
|
|
65
62
|
async _getPWLockEvmAddressObj(account) {
|
|
66
63
|
try {
|
|
67
|
-
return
|
|
64
|
+
return Address.fromKnownScript(this.client, KnownScript.PWLock, hexFrom(bytesFrom(account)));
|
|
68
65
|
}
|
|
69
66
|
catch { }
|
|
70
67
|
return;
|
|
@@ -76,18 +73,18 @@ class SignerEvm extends index_js_9.Signer {
|
|
|
76
73
|
* @returns A promise that resolves to the prepared Transaction object.
|
|
77
74
|
*/
|
|
78
75
|
async prepareTransaction(txLike) {
|
|
79
|
-
const tx =
|
|
80
|
-
if ((await tx.findInputIndexByLockId(await this.client.getKnownScript(
|
|
81
|
-
await tx.addCellDepsOfKnownScripts(this.client,
|
|
76
|
+
const tx = Transaction.from(txLike);
|
|
77
|
+
if ((await tx.findInputIndexByLockId(await this.client.getKnownScript(KnownScript.OmniLock), this.client)) !== undefined) {
|
|
78
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);
|
|
82
79
|
}
|
|
83
|
-
if ((await tx.findInputIndexByLockId(await this.client.getKnownScript(
|
|
84
|
-
await tx.addCellDepsOfKnownScripts(this.client,
|
|
80
|
+
if ((await tx.findInputIndexByLockId(await this.client.getKnownScript(KnownScript.PWLock), this.client)) !== undefined) {
|
|
81
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.PWLock);
|
|
85
82
|
}
|
|
86
83
|
const account = await this.getEvmAccount();
|
|
87
84
|
const omniLockAddresses = await this._getOmniLockAddresses(account);
|
|
88
85
|
const pwLockAddresses = await this._getPWLockAddresses(account);
|
|
89
|
-
const omniTx =
|
|
90
|
-
return
|
|
86
|
+
const omniTx = reduceAsync(omniLockAddresses, (tx, { script }) => tx.prepareSighashAllWitness(script, 85, this.client), tx);
|
|
87
|
+
return reduceAsync(pwLockAddresses, (tx, { script }) => tx.prepareSighashAllWitness(script, 65, this.client), omniTx);
|
|
91
88
|
}
|
|
92
89
|
/**
|
|
93
90
|
* Signs a transaction without modifying it.
|
|
@@ -96,15 +93,15 @@ class SignerEvm extends index_js_9.Signer {
|
|
|
96
93
|
* @returns A promise that resolves to a signed Transaction object.
|
|
97
94
|
*/
|
|
98
95
|
async signOnlyTransaction(txLike) {
|
|
99
|
-
let tx =
|
|
96
|
+
let tx = Transaction.from(txLike);
|
|
100
97
|
const account = await this.getEvmAccount();
|
|
101
98
|
const { script: evmScript } = await this._getOmniLockEvmAddressObj(account);
|
|
102
99
|
const { script: oldEvmScript } = await this._getOmniLockOldEvmAddressObj(account);
|
|
103
100
|
tx = await this._signOmniLockScriptForTransaction(tx, evmScript, (hash) => `CKB transaction: ${hash}`);
|
|
104
|
-
tx = await this._signOmniLockScriptForTransaction(tx, oldEvmScript, (hash) =>
|
|
101
|
+
tx = await this._signOmniLockScriptForTransaction(tx, oldEvmScript, (hash) => bytesFrom(hash));
|
|
105
102
|
const pwAddress = await this._getPWLockEvmAddressObj(account);
|
|
106
103
|
if (pwAddress) {
|
|
107
|
-
tx = await this._signPWLockScriptForTransaction(tx, pwAddress.script, (hash) =>
|
|
104
|
+
tx = await this._signPWLockScriptForTransaction(tx, pwAddress.script, (hash) => bytesFrom(hash));
|
|
108
105
|
}
|
|
109
106
|
return tx;
|
|
110
107
|
}
|
|
@@ -113,18 +110,18 @@ class SignerEvm extends index_js_9.Signer {
|
|
|
113
110
|
if (!info) {
|
|
114
111
|
return tx;
|
|
115
112
|
}
|
|
116
|
-
const witness =
|
|
117
|
-
witness.lock =
|
|
113
|
+
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
114
|
+
witness.lock = hexFrom(bytesConcat(numToBytes(5 * 4 + info.signature.length, 4), numToBytes(4 * 4, 4), numToBytes(5 * 4 + info.signature.length, 4), numToBytes(5 * 4 + info.signature.length, 4), numToBytes(info.signature.length, 4), info.signature));
|
|
118
115
|
tx.setWitnessArgsAt(info.position, witness);
|
|
119
116
|
return tx;
|
|
120
117
|
}
|
|
121
118
|
async _signPWLockScriptForTransaction(tx, script, messageTransformer) {
|
|
122
|
-
const info = await this._signPersonalEvmForTransaction(tx, script, messageTransformer, new
|
|
119
|
+
const info = await this._signPersonalEvmForTransaction(tx, script, messageTransformer, new HasherKeecak256());
|
|
123
120
|
if (!info) {
|
|
124
121
|
return tx;
|
|
125
122
|
}
|
|
126
|
-
const witness =
|
|
127
|
-
witness.lock =
|
|
123
|
+
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
124
|
+
witness.lock = hexFrom(info.signature);
|
|
128
125
|
tx.setWitnessArgsAt(info.position, witness);
|
|
129
126
|
return tx;
|
|
130
127
|
}
|
|
@@ -133,11 +130,10 @@ class SignerEvm extends index_js_9.Signer {
|
|
|
133
130
|
if (!info) {
|
|
134
131
|
return;
|
|
135
132
|
}
|
|
136
|
-
const signature =
|
|
133
|
+
const signature = bytesFrom(await this.signMessageRaw(messageTransformer(info.message)));
|
|
137
134
|
if (signature[signature.length - 1] >= 27) {
|
|
138
135
|
signature[signature.length - 1] -= 27;
|
|
139
136
|
}
|
|
140
137
|
return { signature, position: info.position };
|
|
141
138
|
}
|
|
142
139
|
}
|
|
143
|
-
exports.SignerEvm = SignerEvm;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.SignerEvmAddressReadonly = void 0;
|
|
4
|
-
const index_js_1 = require("../../hex/index.js");
|
|
5
|
-
const signerEvm_js_1 = require("./signerEvm.js");
|
|
1
|
+
import { hexFrom } from "../../hex/index.js";
|
|
2
|
+
import { SignerEvm } from "./signerEvm.js";
|
|
6
3
|
/**
|
|
7
4
|
* A class extending SignerEvm that provides read-only access to an EVM address.
|
|
8
5
|
* This class does not support signing operations.
|
|
9
6
|
* @public
|
|
10
7
|
*/
|
|
11
|
-
class SignerEvmAddressReadonly extends
|
|
8
|
+
export class SignerEvmAddressReadonly extends SignerEvm {
|
|
12
9
|
/**
|
|
13
10
|
* Creates an instance of SignerEvmAddressReadonly.
|
|
14
11
|
*
|
|
@@ -17,7 +14,7 @@ class SignerEvmAddressReadonly extends signerEvm_js_1.SignerEvm {
|
|
|
17
14
|
*/
|
|
18
15
|
constructor(client, address) {
|
|
19
16
|
super(client);
|
|
20
|
-
this.address =
|
|
17
|
+
this.address = hexFrom(address);
|
|
21
18
|
}
|
|
22
19
|
/**
|
|
23
20
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
@@ -52,4 +49,3 @@ class SignerEvmAddressReadonly extends signerEvm_js_1.SignerEvm {
|
|
|
52
49
|
return this.address;
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
|
-
exports.SignerEvmAddressReadonly = SignerEvmAddressReadonly;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.verifyMessageEvmPersonal = verifyMessageEvmPersonal;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const index_js_1 = require("../../bytes/index.js");
|
|
1
|
+
import { verifyMessage } from "ethers";
|
|
2
|
+
import { bytesFrom } from "../../bytes/index.js";
|
|
6
3
|
/**
|
|
7
4
|
* @public
|
|
8
5
|
*/
|
|
9
|
-
function verifyMessageEvmPersonal(message, signature, address) {
|
|
6
|
+
export function verifyMessageEvmPersonal(message, signature, address) {
|
|
10
7
|
return (address.toLowerCase() ===
|
|
11
|
-
|
|
8
|
+
verifyMessage(typeof message === "string" ? message : bytesFrom(message), signature).toLowerCase());
|
|
12
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,22 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./btc/index.js"), exports);
|
|
18
|
-
__exportStar(require("./ckb/index.js"), exports);
|
|
19
|
-
__exportStar(require("./dummy/index.js"), exports);
|
|
20
|
-
__exportStar(require("./evm/index.js"), exports);
|
|
21
|
-
__exportStar(require("./nostr/index.js"), exports);
|
|
22
|
-
__exportStar(require("./signer/index.js"), exports);
|
|
1
|
+
export * from "./btc/index.js";
|
|
2
|
+
export * from "./ckb/index.js";
|
|
3
|
+
export * from "./doge/index.js";
|
|
4
|
+
export * from "./dummy/index.js";
|
|
5
|
+
export * from "./evm/index.js";
|
|
6
|
+
export * from "./nostr/index.js";
|
|
7
|
+
export * from "./signer/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/nostr/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/nostr/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./signerNostr.js"), exports);
|
|
1
|
+
export * from "./signerNostr.js";
|
|
2
|
+
export * from "./verify.js";
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const index_js_6 = require("../../hex/index.js");
|
|
11
|
-
const index_js_7 = require("../signer/index.js");
|
|
12
|
-
const verify_js_1 = require("./verify.js");
|
|
1
|
+
import { bech32 } from "bech32";
|
|
2
|
+
import { Address } from "../../address/index.js";
|
|
3
|
+
import { bytesConcat, bytesFrom } from "../../bytes/index.js";
|
|
4
|
+
import { Transaction, WitnessArgs } from "../../ckb/index.js";
|
|
5
|
+
import { KnownScript } from "../../client/index.js";
|
|
6
|
+
import { hashCkb } from "../../hasher/index.js";
|
|
7
|
+
import { hexFrom } from "../../hex/index.js";
|
|
8
|
+
import { Signer, SignerSignType, SignerType } from "../signer/index.js";
|
|
9
|
+
import { buildNostrEventFromMessage } from "./verify.js";
|
|
13
10
|
/**
|
|
14
11
|
* @public
|
|
15
12
|
*/
|
|
16
|
-
class SignerNostr extends
|
|
13
|
+
export class SignerNostr extends Signer {
|
|
17
14
|
get type() {
|
|
18
|
-
return
|
|
15
|
+
return SignerType.Nostr;
|
|
19
16
|
}
|
|
20
17
|
get signType() {
|
|
21
|
-
return
|
|
18
|
+
return SignerSignType.NostrEvent;
|
|
22
19
|
}
|
|
23
20
|
/**
|
|
24
21
|
* Sign a message.
|
|
@@ -26,7 +23,7 @@ class SignerNostr extends index_js_7.Signer {
|
|
|
26
23
|
* @returns A promise that resolves to the signature.
|
|
27
24
|
*/
|
|
28
25
|
async signMessageRaw(message) {
|
|
29
|
-
return
|
|
26
|
+
return hexFrom((await this.signNostrEvent(buildNostrEventFromMessage(message))).sig);
|
|
30
27
|
}
|
|
31
28
|
/**
|
|
32
29
|
* Gets the internal address, which is the EVM account in this case.
|
|
@@ -34,7 +31,7 @@ class SignerNostr extends index_js_7.Signer {
|
|
|
34
31
|
* @returns A promise that resolves to a string representing the internal address.
|
|
35
32
|
*/
|
|
36
33
|
async getInternalAddress() {
|
|
37
|
-
return
|
|
34
|
+
return bech32.encode("npub", bech32.toWords(bytesFrom(await this.getNostrPublicKey())));
|
|
38
35
|
}
|
|
39
36
|
/**
|
|
40
37
|
* Gets an array of Address objects representing the known script addresses for the signer.
|
|
@@ -44,7 +41,7 @@ class SignerNostr extends index_js_7.Signer {
|
|
|
44
41
|
async getAddressObjs() {
|
|
45
42
|
const publicKey = await this.getNostrPublicKey();
|
|
46
43
|
return [
|
|
47
|
-
await
|
|
44
|
+
await Address.fromKnownScript(this.client, KnownScript.NostrLock, hexFrom(bytesConcat([0x00], hashCkb(publicKey).slice(0, 42)))),
|
|
48
45
|
];
|
|
49
46
|
}
|
|
50
47
|
/**
|
|
@@ -54,9 +51,9 @@ class SignerNostr extends index_js_7.Signer {
|
|
|
54
51
|
* @returns A promise that resolves to the prepared Transaction object.
|
|
55
52
|
*/
|
|
56
53
|
async prepareTransaction(txLike) {
|
|
57
|
-
const tx =
|
|
54
|
+
const tx = Transaction.from(txLike);
|
|
58
55
|
const { script } = await this.getRecommendedAddressObj();
|
|
59
|
-
await tx.addCellDepsOfKnownScripts(this.client,
|
|
56
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.NostrLock);
|
|
60
57
|
await tx.prepareSighashAllWitness(script, 572, this.client);
|
|
61
58
|
return tx;
|
|
62
59
|
}
|
|
@@ -67,26 +64,25 @@ class SignerNostr extends index_js_7.Signer {
|
|
|
67
64
|
* @returns A promise that resolves to a signed Transaction object.
|
|
68
65
|
*/
|
|
69
66
|
async signOnlyTransaction(txLike) {
|
|
70
|
-
const tx =
|
|
67
|
+
const tx = Transaction.from(txLike);
|
|
71
68
|
const { script } = await this.getRecommendedAddressObj();
|
|
72
69
|
const info = await tx.getSignHashInfo(script, this.client);
|
|
73
70
|
if (!info) {
|
|
74
71
|
return tx;
|
|
75
72
|
}
|
|
76
|
-
const signedEvent =
|
|
73
|
+
const signedEvent = bytesFrom(JSON.stringify(await this.signNostrEvent({
|
|
77
74
|
pubkey: (await this.getNostrPublicKey()).slice(2),
|
|
78
75
|
tags: [[SignerNostr.CKB_SIG_HASH_ALL_TAG, info.message.slice(2)]],
|
|
79
76
|
created_at: Math.floor(Date.now() / 1000),
|
|
80
77
|
kind: SignerNostr.CKB_UNLOCK_EVENT_KIND,
|
|
81
78
|
content: SignerNostr.CKB_UNLOCK_EVENT_CONTENT,
|
|
82
79
|
})), "utf8");
|
|
83
|
-
const witness =
|
|
84
|
-
witness.lock =
|
|
80
|
+
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
81
|
+
witness.lock = hexFrom(signedEvent);
|
|
85
82
|
tx.setWitnessArgsAt(info.position, witness);
|
|
86
83
|
return tx;
|
|
87
84
|
}
|
|
88
85
|
}
|
|
89
|
-
exports.SignerNostr = SignerNostr;
|
|
90
86
|
SignerNostr.CKB_SIG_HASH_ALL_TAG = "ckb_sighash_all";
|
|
91
87
|
SignerNostr.CKB_UNLOCK_EVENT_KIND = 23334;
|
|
92
88
|
SignerNostr.CKB_UNLOCK_EVENT_CONTENT = "Signing a CKB transaction\n\nIMPORTANT: Please verify the integrity and authenticity of connected Nostr client before signing this message\n";
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const sha256_1 = require("@noble/hashes/sha256");
|
|
7
|
-
const bech32_1 = require("bech32");
|
|
8
|
-
const index_js_1 = require("../../bytes/index.js");
|
|
9
|
-
const index_js_2 = require("../../hex/index.js");
|
|
1
|
+
import { schnorr } from "@noble/curves/secp256k1";
|
|
2
|
+
import { sha256 } from "@noble/hashes/sha256";
|
|
3
|
+
import { bech32 } from "bech32";
|
|
4
|
+
import { bytesFrom } from "../../bytes/index.js";
|
|
5
|
+
import { hexFrom } from "../../hex/index.js";
|
|
10
6
|
/**
|
|
11
7
|
* @public
|
|
12
8
|
*/
|
|
13
|
-
function buildNostrEventFromMessage(message) {
|
|
9
|
+
export function buildNostrEventFromMessage(message) {
|
|
14
10
|
if (typeof message === "string") {
|
|
15
11
|
try {
|
|
16
12
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
@@ -30,13 +26,13 @@ function buildNostrEventFromMessage(message) {
|
|
|
30
26
|
return {
|
|
31
27
|
kind: 23335,
|
|
32
28
|
created_at: 0,
|
|
33
|
-
content: typeof message === "string" ? message :
|
|
29
|
+
content: typeof message === "string" ? message : hexFrom(message),
|
|
34
30
|
tags: [],
|
|
35
31
|
};
|
|
36
32
|
}
|
|
37
|
-
function verifyMessageNostrEvent(message, signature, address) {
|
|
38
|
-
const { words } =
|
|
39
|
-
const publicKey =
|
|
33
|
+
export function verifyMessageNostrEvent(message, signature, address) {
|
|
34
|
+
const { words } = bech32.decode(address);
|
|
35
|
+
const publicKey = hexFrom(bech32.fromWords(words)).slice(2);
|
|
40
36
|
const event = buildNostrEventFromMessage(message);
|
|
41
37
|
const serialized = JSON.stringify([
|
|
42
38
|
0,
|
|
@@ -46,9 +42,9 @@ function verifyMessageNostrEvent(message, signature, address) {
|
|
|
46
42
|
event.tags,
|
|
47
43
|
event.content,
|
|
48
44
|
]);
|
|
49
|
-
const eventHash =
|
|
45
|
+
const eventHash = hexFrom(sha256(bytesFrom(serialized, "utf8")));
|
|
50
46
|
try {
|
|
51
|
-
return
|
|
47
|
+
return schnorr.verify(signature.slice(2), eventHash.slice(2), publicKey);
|
|
52
48
|
}
|
|
53
49
|
catch (_) {
|
|
54
50
|
return false;
|
|
@@ -14,7 +14,8 @@ export declare enum SignerSignType {
|
|
|
14
14
|
EvmPersonal = "EvmPersonal",
|
|
15
15
|
JoyId = "JoyId",
|
|
16
16
|
NostrEvent = "NostrEvent",
|
|
17
|
-
CkbSecp256k1 = "CkbSecp256k1"
|
|
17
|
+
CkbSecp256k1 = "CkbSecp256k1",
|
|
18
|
+
DogeEcdsa = "DogeEcdsa"
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* An enumeration of signer display types in wallet.
|
|
@@ -24,7 +25,8 @@ export declare enum SignerType {
|
|
|
24
25
|
EVM = "EVM",
|
|
25
26
|
BTC = "BTC",
|
|
26
27
|
CKB = "CKB",
|
|
27
|
-
Nostr = "Nostr"
|
|
28
|
+
Nostr = "Nostr",
|
|
29
|
+
Doge = "Doge"
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
32
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,MAAM,EACN,qCAAqC,EACrC,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
|