diff --git a/web3.js/src/publickey.js b/web3.js/src/publickey.js index 4e65dcc040..a35fd31a1f 100644 --- a/web3.js/src/publickey.js +++ b/web3.js/src/publickey.js @@ -12,25 +12,17 @@ export class PublicKey { /** * Create a new PublicKey object */ - constructor(number: number | string | Buffer | Array) { - - for (;;) { - if (typeof number === 'string') { - // base 58 encoded? - if (/^[1-9A-HJ-NP-Za-km-z]{43,44}$/.test(number)) { - this._bn = new BN(bs58.decode(number)); - break; - } - - // hexadecimal number - if (number.startsWith('0x')) { - this._bn = new BN(number.substring(2), 16); - break; - } + constructor(value: number | string | Buffer | Array) { + if (typeof value === 'string') { + // hexadecimal number + if (value.startsWith('0x')) { + this._bn = new BN(value.substring(2), 16); + } else { + // assume base 58 encoding by default + this._bn = new BN(bs58.decode(value)); } - - this._bn = new BN(number); - break; + } else { + this._bn = new BN(value); } if (this._bn.byteLength() > 32) { diff --git a/web3.js/test/publickey.test.js b/web3.js/test/publickey.test.js index 474fada700..4cdeb95b86 100644 --- a/web3.js/test/publickey.test.js +++ b/web3.js/test/publickey.test.js @@ -22,11 +22,9 @@ test('equals', () => { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]); const hexKey = new PublicKey('0x300000000000000000000000000000000000000000000000000000000000000'); - const decimalKey = new PublicKey('1356938545749799165119972480570561420155507632800475359837393562592731987968'); const base56Key = new PublicKey('CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3'); expect(arrayKey.equals(hexKey)).toBe(true); - expect(arrayKey.equals(decimalKey)).toBe(true); expect(arrayKey.equals(base56Key)).toBe(true); }); @@ -42,9 +40,18 @@ test('toBase58', () => { expect(key.toBase58()).toBe('CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3'); expect(key.toString()).toBe('CiDwVBFgWV9E5MvXWoLgnEgn2hK7rJikbvfWavzAQz3'); - const key2 = new PublicKey('123456789'); + const key2 = new PublicKey('1111111111111111111111111111BukQL'); expect(key2.toBase58()).toBe('1111111111111111111111111111BukQL'); expect(key2.toString()).toBe('1111111111111111111111111111BukQL'); + + const key3 = new PublicKey('11111111111111111111111111111111'); + expect(key3.toBase58()).toBe('11111111111111111111111111111111'); + + const key4 = new PublicKey([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]); + expect(key4.toBase58()).toBe('11111111111111111111111111111111'); + }); test('toBuffer', () => {