From 758fcd383d500b2d4e1a5a56b5886f297f6a8d4a Mon Sep 17 00:00:00 2001 From: Kartik Soneji Date: Mon, 25 Apr 2022 18:12:41 +0530 Subject: [PATCH] feat: allow PublicKey.isOnCurve to accept PublicKeyInitData (#24602) --- web3.js/src/publickey.ts | 5 +++-- web3.js/test/publickey.test.ts | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/web3.js/src/publickey.ts b/web3.js/src/publickey.ts index e8be3de800..89b9680263 100644 --- a/web3.js/src/publickey.ts +++ b/web3.js/src/publickey.ts @@ -222,8 +222,9 @@ export class PublicKey extends Struct { /** * Check that a pubkey is on the ed25519 curve. */ - static isOnCurve(pubkey: Uint8Array): boolean { - return is_on_curve(pubkey) == 1; + static isOnCurve(pubkeyData: PublicKeyInitData): boolean { + const pubkey = new PublicKey(pubkeyData); + return is_on_curve(pubkey.toBytes()) == 1; } } diff --git a/web3.js/test/publickey.test.ts b/web3.js/test/publickey.test.ts index b6766b8463..bc4b9cb4c3 100644 --- a/web3.js/test/publickey.test.ts +++ b/web3.js/test/publickey.test.ts @@ -232,6 +232,8 @@ describe('PublicKey', function () { it('isOnCurve', () => { let onCurve = Keypair.generate().publicKey; expect(PublicKey.isOnCurve(onCurve.toBuffer())).to.be.true; + expect(PublicKey.isOnCurve(onCurve.toBase58())).to.be.true; + expect(PublicKey.isOnCurve(onCurve)).to.be.true; // A program address, yanked from one of the above tests. This is a pretty // poor test vector since it was created by the same code it is testing. // Unfortunately, I've been unable to find a golden negative example input @@ -240,6 +242,8 @@ describe('PublicKey', function () { '12rqwuEgBYiGhBrDJStCiqEtzQpTTiZbh7teNVLuYcFA', ); expect(PublicKey.isOnCurve(offCurve.toBuffer())).to.be.false; + expect(PublicKey.isOnCurve(offCurve.toBase58())).to.be.false; + expect(PublicKey.isOnCurve(offCurve)).to.be.false; }); it('canBeSerializedWithBorsh', () => {