@ckb-ccc/core 0.0.10-alpha.5 → 0.0.10-alpha.6

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.
@@ -20,15 +20,16 @@ import { hexFrom } from "../hex";
20
20
  */
21
21
  export function addressPayloadFromString(address) {
22
22
  // Try parse full format address
23
- {
23
+ try {
24
24
  const { words, prefix } = bech32m.decode(address, ADDRESS_BECH32_LIMIT);
25
25
  const [formatType, ...payload] = bech32m.fromWords(words);
26
26
  if (formatType === AddressFormat.Full) {
27
27
  return { prefix, format: AddressFormat.Full, payload };
28
28
  }
29
29
  }
30
+ catch (_) { }
30
31
  // Try parse legacy 2019 format address
31
- {
32
+ try {
32
33
  const { prefix, words } = bech32.decode(address, ADDRESS_BECH32_LIMIT);
33
34
  const [formatType, ...payload] = bech32.fromWords(words);
34
35
  if ([
@@ -39,6 +40,7 @@ export function addressPayloadFromString(address) {
39
40
  return { prefix, format: formatType, payload };
40
41
  }
41
42
  }
43
+ catch (_) { }
42
44
  throw Error(`Unknown address format ${address}`);
43
45
  }
44
46
  /**
@@ -6,6 +6,7 @@ import { SignerCkbPublicKey } from "./signerCkbPublicKey";
6
6
  export declare class SignerCkbPrivateKey extends SignerCkbPublicKey {
7
7
  readonly privateKey: Hex;
8
8
  constructor(client: Client, privateKey: HexLike);
9
+ _signMessage(message: HexLike): Promise<Hex>;
9
10
  signMessageRaw(message: string | BytesLike): Promise<Hex>;
10
11
  signOnlyTransaction(txLike: TransactionLike): Promise<Transaction>;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signerCkbPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbPrivateKey.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,GAAG,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAUzC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBzD,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAezE"}
1
+ {"version":3,"file":"signerCkbPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbPrivateKey.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,GAAG,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAUzC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAgB5C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzD,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAezE"}
@@ -1,10 +1,10 @@
1
1
  import { secp256k1 } from "@noble/curves/secp256k1";
2
2
  import { bytesConcat, bytesFrom } from "../../bytes";
3
3
  import { Transaction, WitnessArgs } from "../../ckb";
4
- import { hashCkb } from "../../hasher";
5
4
  import { hexFrom } from "../../hex";
6
5
  import { numBeToBytes } from "../../num";
7
6
  import { SignerCkbPublicKey } from "./signerCkbPublicKey";
7
+ import { messageHashCkbSecp256k1 } from "./verifyCkbSecp256k1";
8
8
  export class SignerCkbPrivateKey extends SignerCkbPublicKey {
9
9
  constructor(client, privateKey) {
10
10
  const pk = hexFrom(privateKey);
@@ -14,14 +14,14 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey {
14
14
  super(client, secp256k1.getPublicKey(bytesFrom(pk), true));
15
15
  this.privateKey = pk;
16
16
  }
17
- async signMessageRaw(message) {
18
- const msg = typeof message === "string" ? message : hexFrom(message);
19
- const buffer = bytesFrom(`Nervos Message:${msg}`, "utf8");
20
- const hash = hashCkb(buffer);
21
- const signature = secp256k1.sign(bytesFrom(hash), bytesFrom(this.privateKey));
17
+ async _signMessage(message) {
18
+ const signature = secp256k1.sign(bytesFrom(message), bytesFrom(this.privateKey));
22
19
  const { r, s, recovery } = signature;
23
20
  return hexFrom(bytesConcat(numBeToBytes(r, 32), numBeToBytes(s, 32), numBeToBytes(recovery, 1)));
24
21
  }
22
+ async signMessageRaw(message) {
23
+ return this._signMessage(messageHashCkbSecp256k1(message));
24
+ }
25
25
  async signOnlyTransaction(txLike) {
26
26
  const tx = Transaction.from(txLike);
27
27
  const { script } = await this.getRecommendedAddressObj();
@@ -29,7 +29,7 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey {
29
29
  if (!info) {
30
30
  return tx;
31
31
  }
32
- const signature = await this.signMessageRaw(info.message);
32
+ const signature = await this._signMessage(info.message);
33
33
  const witness = tx.getWitnessArgsAt(info.position) ?? WitnessArgs.from({});
34
34
  witness.lock = signature;
35
35
  tx.setWitnessArgsAt(info.position, witness);
@@ -137,15 +137,6 @@ export declare abstract class Signer {
137
137
  * @throws Will throw an error if not implemented.
138
138
  */
139
139
  verifyMessage(message: string | BytesLike, signature: string | Signature): Promise<boolean>;
140
- /**
141
- * Verify a string signature. This method is not implemented and should be overridden by subclasses.
142
- *
143
- * @param _0 - The original message.
144
- * @param _1 - The signature to verify.
145
- * @returns A promise that resolves to the verification result.
146
- * @throws Will throw an error if not implemented.
147
- */
148
- verifyMessageRaw(_0: string | BytesLike, _1: string): Promise<boolean>;
149
140
  /**
150
141
  * Sends a transaction after signing it.
151
142
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
@@ -158,24 +158,17 @@ export class Signer {
158
158
  */
159
159
  async verifyMessage(message, signature) {
160
160
  if (typeof signature === "string") {
161
- return this.verifyMessageRaw(message, signature);
161
+ return Signer.verifyMessage(message, {
162
+ signType: this.signType,
163
+ signature,
164
+ identity: await this.getIdentity(),
165
+ });
162
166
  }
163
167
  if (signature.identity !== (await this.getIdentity()) ||
164
168
  ![SignerSignType.Unknown, this.signType].includes(signature.signType)) {
165
169
  return false;
166
170
  }
167
- return this.verifyMessageRaw(message, signature.signature);
168
- }
169
- /**
170
- * Verify a string signature. This method is not implemented and should be overridden by subclasses.
171
- *
172
- * @param _0 - The original message.
173
- * @param _1 - The signature to verify.
174
- * @returns A promise that resolves to the verification result.
175
- * @throws Will throw an error if not implemented.
176
- */
177
- verifyMessageRaw(_0, _1) {
178
- throw Error("Signer.verifyMessageRaw not implemented");
171
+ return Signer.verifyMessage(message, signature);
179
172
  }
180
173
  /**
181
174
  * Sends a transaction after signing it.
@@ -23,15 +23,16 @@ const hex_1 = require("../hex");
23
23
  */
24
24
  function addressPayloadFromString(address) {
25
25
  // Try parse full format address
26
- {
26
+ try {
27
27
  const { words, prefix } = bech32_1.bech32m.decode(address, exports.ADDRESS_BECH32_LIMIT);
28
28
  const [formatType, ...payload] = bech32_1.bech32m.fromWords(words);
29
29
  if (formatType === AddressFormat.Full) {
30
30
  return { prefix, format: AddressFormat.Full, payload };
31
31
  }
32
32
  }
33
+ catch (_) { }
33
34
  // Try parse legacy 2019 format address
34
- {
35
+ try {
35
36
  const { prefix, words } = bech32_1.bech32.decode(address, exports.ADDRESS_BECH32_LIMIT);
36
37
  const [formatType, ...payload] = bech32_1.bech32.fromWords(words);
37
38
  if ([
@@ -42,6 +43,7 @@ function addressPayloadFromString(address) {
42
43
  return { prefix, format: formatType, payload };
43
44
  }
44
45
  }
46
+ catch (_) { }
45
47
  throw Error(`Unknown address format ${address}`);
46
48
  }
47
49
  exports.addressPayloadFromString = addressPayloadFromString;
@@ -6,6 +6,7 @@ import { SignerCkbPublicKey } from "./signerCkbPublicKey";
6
6
  export declare class SignerCkbPrivateKey extends SignerCkbPublicKey {
7
7
  readonly privateKey: Hex;
8
8
  constructor(client: Client, privateKey: HexLike);
9
+ _signMessage(message: HexLike): Promise<Hex>;
9
10
  signMessageRaw(message: string | BytesLike): Promise<Hex>;
10
11
  signOnlyTransaction(txLike: TransactionLike): Promise<Transaction>;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signerCkbPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbPrivateKey.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,GAAG,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAUzC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBzD,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAezE"}
1
+ {"version":3,"file":"signerCkbPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbPrivateKey.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,GAAG,CAAC;gBAEpB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAUzC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAgB5C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzD,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAezE"}
@@ -4,10 +4,10 @@ exports.SignerCkbPrivateKey = void 0;
4
4
  const secp256k1_1 = require("@noble/curves/secp256k1");
5
5
  const bytes_1 = require("../../bytes");
6
6
  const ckb_1 = require("../../ckb");
7
- const hasher_1 = require("../../hasher");
8
7
  const hex_1 = require("../../hex");
9
8
  const num_1 = require("../../num");
10
9
  const signerCkbPublicKey_1 = require("./signerCkbPublicKey");
10
+ const verifyCkbSecp256k1_1 = require("./verifyCkbSecp256k1");
11
11
  class SignerCkbPrivateKey extends signerCkbPublicKey_1.SignerCkbPublicKey {
12
12
  constructor(client, privateKey) {
13
13
  const pk = (0, hex_1.hexFrom)(privateKey);
@@ -17,14 +17,14 @@ class SignerCkbPrivateKey extends signerCkbPublicKey_1.SignerCkbPublicKey {
17
17
  super(client, secp256k1_1.secp256k1.getPublicKey((0, bytes_1.bytesFrom)(pk), true));
18
18
  this.privateKey = pk;
19
19
  }
20
- async signMessageRaw(message) {
21
- const msg = typeof message === "string" ? message : (0, hex_1.hexFrom)(message);
22
- const buffer = (0, bytes_1.bytesFrom)(`Nervos Message:${msg}`, "utf8");
23
- const hash = (0, hasher_1.hashCkb)(buffer);
24
- const signature = secp256k1_1.secp256k1.sign((0, bytes_1.bytesFrom)(hash), (0, bytes_1.bytesFrom)(this.privateKey));
20
+ async _signMessage(message) {
21
+ const signature = secp256k1_1.secp256k1.sign((0, bytes_1.bytesFrom)(message), (0, bytes_1.bytesFrom)(this.privateKey));
25
22
  const { r, s, recovery } = signature;
26
23
  return (0, hex_1.hexFrom)((0, bytes_1.bytesConcat)((0, num_1.numBeToBytes)(r, 32), (0, num_1.numBeToBytes)(s, 32), (0, num_1.numBeToBytes)(recovery, 1)));
27
24
  }
25
+ async signMessageRaw(message) {
26
+ return this._signMessage((0, verifyCkbSecp256k1_1.messageHashCkbSecp256k1)(message));
27
+ }
28
28
  async signOnlyTransaction(txLike) {
29
29
  const tx = ckb_1.Transaction.from(txLike);
30
30
  const { script } = await this.getRecommendedAddressObj();
@@ -32,7 +32,7 @@ class SignerCkbPrivateKey extends signerCkbPublicKey_1.SignerCkbPublicKey {
32
32
  if (!info) {
33
33
  return tx;
34
34
  }
35
- const signature = await this.signMessageRaw(info.message);
35
+ const signature = await this._signMessage(info.message);
36
36
  const witness = tx.getWitnessArgsAt(info.position) ?? ckb_1.WitnessArgs.from({});
37
37
  witness.lock = signature;
38
38
  tx.setWitnessArgsAt(info.position, witness);
@@ -137,15 +137,6 @@ export declare abstract class Signer {
137
137
  * @throws Will throw an error if not implemented.
138
138
  */
139
139
  verifyMessage(message: string | BytesLike, signature: string | Signature): Promise<boolean>;
140
- /**
141
- * Verify a string signature. This method is not implemented and should be overridden by subclasses.
142
- *
143
- * @param _0 - The original message.
144
- * @param _1 - The signature to verify.
145
- * @returns A promise that resolves to the verification result.
146
- * @throws Will throw an error if not implemented.
147
- */
148
- verifyMessageRaw(_0: string | BytesLike, _1: string): Promise<boolean>;
149
140
  /**
150
141
  * Sends a transaction after signing it.
151
142
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
@@ -162,24 +162,17 @@ class Signer {
162
162
  */
163
163
  async verifyMessage(message, signature) {
164
164
  if (typeof signature === "string") {
165
- return this.verifyMessageRaw(message, signature);
165
+ return Signer.verifyMessage(message, {
166
+ signType: this.signType,
167
+ signature,
168
+ identity: await this.getIdentity(),
169
+ });
166
170
  }
167
171
  if (signature.identity !== (await this.getIdentity()) ||
168
172
  ![SignerSignType.Unknown, this.signType].includes(signature.signType)) {
169
173
  return false;
170
174
  }
171
- return this.verifyMessageRaw(message, signature.signature);
172
- }
173
- /**
174
- * Verify a string signature. This method is not implemented and should be overridden by subclasses.
175
- *
176
- * @param _0 - The original message.
177
- * @param _1 - The signature to verify.
178
- * @returns A promise that resolves to the verification result.
179
- * @throws Will throw an error if not implemented.
180
- */
181
- verifyMessageRaw(_0, _1) {
182
- throw Error("Signer.verifyMessageRaw not implemented");
175
+ return Signer.verifyMessage(message, signature);
183
176
  }
184
177
  /**
185
178
  * Sends a transaction after signing it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckb-ccc/core",
3
- "version": "0.0.10-alpha.5",
3
+ "version": "0.0.10-alpha.6",
4
4
  "description": "Core of CCC - CKBer's Codebase",
5
5
  "author": "Hanssen0 <hanssen0@hanssen0.com>",
6
6
  "license": "MIT",
@@ -68,5 +68,5 @@
68
68
  "cross-fetch": "^4.0.0",
69
69
  "ethers": "^6.13.1"
70
70
  },
71
- "gitHead": "40a3d50aa3697a98c7ac711cd526ef322ccad760"
71
+ "gitHead": "16cf49da60cb01f0f0903fccc0d597d8de54f905"
72
72
  }
@@ -27,17 +27,17 @@ export function addressPayloadFromString(address: string): {
27
27
  payload: number[];
28
28
  } {
29
29
  // Try parse full format address
30
- {
30
+ try {
31
31
  const { words, prefix } = bech32m.decode(address, ADDRESS_BECH32_LIMIT);
32
32
  const [formatType, ...payload] = bech32m.fromWords(words);
33
33
 
34
34
  if (formatType === (AddressFormat.Full as number)) {
35
35
  return { prefix, format: AddressFormat.Full, payload };
36
36
  }
37
- }
37
+ } catch (_) {}
38
38
 
39
39
  // Try parse legacy 2019 format address
40
- {
40
+ try {
41
41
  const { prefix, words } = bech32.decode(address, ADDRESS_BECH32_LIMIT);
42
42
  const [formatType, ...payload] = bech32.fromWords(words);
43
43
  if (
@@ -49,7 +49,7 @@ export function addressPayloadFromString(address: string): {
49
49
  ) {
50
50
  return { prefix, format: formatType, payload };
51
51
  }
52
- }
52
+ } catch (_) {}
53
53
 
54
54
  throw Error(`Unknown address format ${address}`);
55
55
  }
@@ -2,10 +2,10 @@ import { secp256k1 } from "@noble/curves/secp256k1";
2
2
  import { bytesConcat, bytesFrom, BytesLike } from "../../bytes";
3
3
  import { Transaction, TransactionLike, WitnessArgs } from "../../ckb";
4
4
  import { Client } from "../../client";
5
- import { hashCkb } from "../../hasher";
6
5
  import { Hex, hexFrom, HexLike } from "../../hex";
7
6
  import { numBeToBytes } from "../../num";
8
7
  import { SignerCkbPublicKey } from "./signerCkbPublicKey";
8
+ import { messageHashCkbSecp256k1 } from "./verifyCkbSecp256k1";
9
9
 
10
10
  export class SignerCkbPrivateKey extends SignerCkbPublicKey {
11
11
  public readonly privateKey: Hex;
@@ -20,13 +20,9 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey {
20
20
  this.privateKey = pk;
21
21
  }
22
22
 
23
- async signMessageRaw(message: string | BytesLike): Promise<Hex> {
24
- const msg = typeof message === "string" ? message : hexFrom(message);
25
- const buffer = bytesFrom(`Nervos Message:${msg}`, "utf8");
26
- const hash = hashCkb(buffer);
27
-
23
+ async _signMessage(message: HexLike): Promise<Hex> {
28
24
  const signature = secp256k1.sign(
29
- bytesFrom(hash),
25
+ bytesFrom(message),
30
26
  bytesFrom(this.privateKey),
31
27
  );
32
28
  const { r, s, recovery } = signature;
@@ -40,6 +36,10 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey {
40
36
  );
41
37
  }
42
38
 
39
+ async signMessageRaw(message: string | BytesLike): Promise<Hex> {
40
+ return this._signMessage(messageHashCkbSecp256k1(message));
41
+ }
42
+
43
43
  async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {
44
44
  const tx = Transaction.from(txLike);
45
45
  const { script } = await this.getRecommendedAddressObj();
@@ -48,7 +48,7 @@ export class SignerCkbPrivateKey extends SignerCkbPublicKey {
48
48
  return tx;
49
49
  }
50
50
 
51
- const signature = await this.signMessageRaw(info.message);
51
+ const signature = await this._signMessage(info.message);
52
52
 
53
53
  const witness = tx.getWitnessArgsAt(info.position) ?? WitnessArgs.from({});
54
54
  witness.lock = signature;
@@ -263,7 +263,11 @@ export abstract class Signer {
263
263
  signature: string | Signature,
264
264
  ): Promise<boolean> {
265
265
  if (typeof signature === "string") {
266
- return this.verifyMessageRaw(message, signature);
266
+ return Signer.verifyMessage(message, {
267
+ signType: this.signType,
268
+ signature,
269
+ identity: await this.getIdentity(),
270
+ });
267
271
  }
268
272
 
269
273
  if (
@@ -273,19 +277,7 @@ export abstract class Signer {
273
277
  return false;
274
278
  }
275
279
 
276
- return this.verifyMessageRaw(message, signature.signature);
277
- }
278
-
279
- /**
280
- * Verify a string signature. This method is not implemented and should be overridden by subclasses.
281
- *
282
- * @param _0 - The original message.
283
- * @param _1 - The signature to verify.
284
- * @returns A promise that resolves to the verification result.
285
- * @throws Will throw an error if not implemented.
286
- */
287
- verifyMessageRaw(_0: string | BytesLike, _1: string): Promise<boolean> {
288
- throw Error("Signer.verifyMessageRaw not implemented");
280
+ return Signer.verifyMessage(message, signature);
289
281
  }
290
282
 
291
283
  /**