Skip to content

Commit

Permalink
feat: has inline public key method (#132)
Browse files Browse the repository at this point in the history
  • Loading branch information
vasco-santos committed Sep 23, 2020
1 parent ecc1e5b commit b2ee342
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,11 @@ declare class PeerId {
* Check if this PeerId instance is valid (privKey -> pubKey -> Id)
*/
isValid(): boolean;

/**
* Check if the PeerId has an inline public key.
*/
hasInlinePublicKey(): boolean;
}

export = PeerId;
17 changes: 17 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,23 @@ class PeerId {
this.pubKey.bytes instanceof Uint8Array &&
uint8ArrayEquals(this.privKey.public.bytes, this.pubKey.bytes))
}

/**
* Check if the PeerId has an inline public key.
* @returns {boolean}
*/
hasInlinePublicKey () {
try {
const decoded = mh.decode(this.id)
if (decoded.name === 'identity') {
return true
}
} catch (_) {
// Ignore, there is no valid public key
}

return false
}
}

const PeerIdWithIs = withIs(PeerId, {
Expand Down
12 changes: 12 additions & 0 deletions test/peer-id.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,18 @@ describe('PeerId', () => {
expect(ids[0].equals(ids[1].id)).to.equal(false)
})

describe('hasInlinePublicKey', () => {
it('returns true if uses a key type with inline public key', async () => {
const peerId = await PeerId.create({ keyType: 'secp256k1' })
expect(peerId.hasInlinePublicKey()).to.equal(true)
})

it('returns false if uses a key type with no inline public key', async () => {
const peerId = await PeerId.create({ keyType: 'RSA' })
expect(peerId.hasInlinePublicKey()).to.equal(false)
})
})

describe('fromJSON', () => {
it('full node', async () => {
const id = await PeerId.create(testOpts)
Expand Down

0 comments on commit b2ee342

Please sign in to comment.