diff --git a/package.json b/package.json index 9eab834..8d61146 100755 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "prepare": "yarn run ensure-build" }, "devDependencies": { - "@solana/wallet-adapter-base": "^0.9.2", + "@solana/wallet-adapter-base": "^0.9.23", "@types/bs58": "^4.0.1", "@types/jest": "^29.2.5", "@types/multistream": "^2.1.1", @@ -142,7 +142,7 @@ "base64url": "^3.0.1", "bs58": "^4.0.1", "keccak": "^3.0.2", - "secp256k1": "^4.0.2" + "secp256k1": "^5.0.0" }, "optionalDependencies": { "@randlabs/myalgo-connect": "^1.1.2", diff --git a/src/signing/chains/InjectedTypedEthereumSigner.ts b/src/signing/chains/InjectedTypedEthereumSigner.ts index 1c289a9..ef47328 100644 --- a/src/signing/chains/InjectedTypedEthereumSigner.ts +++ b/src/signing/chains/InjectedTypedEthereumSigner.ts @@ -10,7 +10,7 @@ export default class InjectedTypedEthereumSigner extends InjectedEthereumSigner private address: string; async ready(): Promise { - this.address = (await this.signer.getAddress()).toLowerCase(); + this.address = (await this.signer.getAddress()).toString().toLowerCase(); this.publicKey = Buffer.from(this.address); // pk *is* address } diff --git a/src/signing/chains/ethereumSigner.ts b/src/signing/chains/ethereumSigner.ts index ea31979..ad6c7fa 100644 --- a/src/signing/chains/ethereumSigner.ts +++ b/src/signing/chains/ethereumSigner.ts @@ -1,5 +1,5 @@ import Secp256k1 from "../keys/secp256k1"; -import secp256k1 from "secp256k1"; +import { ecdsaVerify, publicKeyCreate } from "secp256k1"; import base64url from "base64url"; import { arrayify } from "@ethersproject/bytes"; import { Wallet } from "@ethersproject/wallet"; @@ -13,7 +13,7 @@ export default class EthereumSigner extends Secp256k1 { constructor(key: string) { if (key.startsWith("0x")) key = key.slice(2); const b = Buffer.from(key, "hex"); - const pub = secp256k1.publicKeyCreate(b, false); + const pub = publicKeyCreate(b, false); super(key, Buffer.from(pub)); } @@ -27,7 +27,7 @@ export default class EthereumSigner extends Secp256k1 { static async verify(pk: string | Buffer, message: Uint8Array, signature: Uint8Array): Promise { // const address = ethers.utils.computeAddress(pk); // return ethers.utils.verifyMessage(message, signature) === address; - return secp256k1.ecdsaVerify( + return ecdsaVerify( signature.length === 65 ? signature.slice(0, -1) : signature, arrayify(hashMessage(message)), typeof pk === "string" ? base64url.toBuffer(pk) : pk, diff --git a/src/signing/chains/injectedSolanaSigner.ts b/src/signing/chains/injectedSolanaSigner.ts index 8766a7d..274058d 100644 --- a/src/signing/chains/injectedSolanaSigner.ts +++ b/src/signing/chains/injectedSolanaSigner.ts @@ -1,6 +1,7 @@ import type { Signer } from "../index"; import base64url from "base64url"; import { SIG_CONFIG } from "../../constants"; +// @ts-expect-error types import type { MessageSignerWalletAdapter } from "@solana/wallet-adapter-base"; import { verify } from "@noble/ed25519"; diff --git a/src/signing/keys/secp256k1.ts b/src/signing/keys/secp256k1.ts index a7e07b3..bcf623a 100644 --- a/src/signing/keys/secp256k1.ts +++ b/src/signing/keys/secp256k1.ts @@ -1,6 +1,6 @@ import type { Signer } from "../Signer"; import base64url from "base64url"; -import secp256k1 from "secp256k1"; +import { ecdsaSign, ecdsaVerify } from "secp256k1"; import { SignatureConfig, SIG_CONFIG } from "../../constants"; import keccak256 from "../keccak256"; @@ -27,13 +27,13 @@ export default class Secp256k1 implements Signer { if (typeof pk === "string") p = base64url.toBuffer(pk); let verified = false; try { - verified = secp256k1.ecdsaVerify(signature, keccak256(Buffer.from(message)), p as Buffer); + verified = ecdsaVerify(signature, keccak256(Buffer.from(message)), p as Buffer); // eslint-disable-next-line no-empty } catch (e) {} return verified; } async sign(message: Uint8Array): Promise { - return secp256k1.ecdsaSign(keccak256(Buffer.from(message)), Buffer.from(this.key)).signature; + return ecdsaSign(keccak256(Buffer.from(message)), Buffer.from(this.key)).signature; } }