feat: allow nested PeerIds to support pubKey function when using identity encoding (#101)

This commit is contained in:
Topper Bowers
2019-09-25 15:39:24 +02:00
committed by Vasco Santos
parent 911aa634d3
commit f39fb24321
2 changed files with 13 additions and 0 deletions

View File

@ -48,6 +48,13 @@ class PeerId {
if (this._privKey) { if (this._privKey) {
return this._privKey.public return this._privKey.public
} }
const decoded = mh.decode(this.id)
if (decoded.name === 'identity') {
this._pubKey = cryptoKeys.unmarshalPublicKey(decoded.digest)
return this._pubKey
}
} }
set pubKey (pubKey) { set pubKey (pubKey) {

View File

@ -42,6 +42,12 @@ describe('PeerId', () => {
expect(id.toB58String()).to.equal(expB58) expect(id.toB58String()).to.equal(expB58)
}) })
it('can get the public key from a Secp256k1 key', async () => {
const original = await PeerId.create({ keyType: 'secp256k1', bits: 256 })
const newId = PeerId.createFromB58String(original.toB58String())
expect(original.pubKey.bytes).to.eql(newId.pubKey.bytes)
})
it('isPeerId', async () => { it('isPeerId', async () => {
const id = await PeerId.create(testOpts) const id = await PeerId.create(testOpts)
expect(PeerId.isPeerId(id)).to.equal(true) expect(PeerId.isPeerId(id)).to.equal(true)