Socket
Socket
Sign inDemoInstall

libp2p-record

Package Overview
Dependencies
Maintainers
3
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

libp2p-record - npm Package Compare versions

Comparing version 0.6.3 to 0.7.0

15

CHANGELOG.md

@@ -0,1 +1,16 @@

<a name="0.7.0"></a>
# [0.7.0](https://github.com/libp2p/js-libp2p-record/compare/v0.6.3...v0.7.0) (2019-08-16)
### Code Refactoring
* convert from callbacks to async ([#13](https://github.com/libp2p/js-libp2p-record/issues/13)) ([42eab95](https://github.com/libp2p/js-libp2p-record/commit/42eab95))
### BREAKING CHANGES
* All places in the API that used callbacks are now replaced with async/await
<a name="0.6.3"></a>

@@ -2,0 +17,0 @@ ## [0.6.3](https://github.com/libp2p/js-libp2p-record/compare/v0.6.2...v0.6.3) (2019-05-23)

22

package.json
{
"name": "libp2p-record",
"version": "0.6.3",
"version": "0.7.0",
"description": "libp2p record implementation",

@@ -30,5 +30,4 @@ "leadMaintainer": "Vasco Santos <vasco.santos@moxy.studio>",

},
"pre-commit": [
"lint",
"test"
"pre-push": [
"lint"
],

@@ -42,15 +41,13 @@ "author": "Friedel Ziegelmayer <dignifiedquire@gmail.com>",

"devDependencies": {
"aegir": "^18.2.2",
"aegir": "^20.0.0",
"chai": "^4.2.0",
"dirty-chai": "^2.0.1",
"libp2p-crypto": "~0.16.1",
"peer-id": "~0.12.2",
"pre-commit": "^1.2.2"
"libp2p-crypto": "~0.17.0",
"peer-id": "~0.13.2"
},
"dependencies": {
"async": "^2.6.2",
"buffer-split": "^1.0.0",
"err-code": "^1.1.2",
"multihashes": "~0.4.14",
"multihashing-async": "~0.6.0",
"multihashes": "~0.4.15",
"multihashing-async": "~0.7.0",
"protons": "^1.0.1"

@@ -63,6 +60,7 @@ },

"Matt Joiner <anacrolix@gmail.com>",
"Vasco Santos <vasco.santos@moxy.studio>",
"Vasco Santos <vasco.santos@ua.pt>",
"Vasco Santos <vasco.santos@moxy.studio>",
"dirkmc <dirkmdev@gmail.com>",
"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>"
]
}

@@ -18,3 +18,3 @@ 'use strict'

throw errcode(new Error(errMsg), 'ERR_NO_RECORDS_RECEIVED')
throw errcode(errMsg, 'ERR_NO_RECORDS_RECEIVED')
}

@@ -27,3 +27,3 @@

throw errcode(new Error(errMsg), 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY')
throw errcode(errMsg, 'ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY')
}

@@ -36,3 +36,3 @@

throw errcode(new Error(errMsg), 'ERR_UNRECOGNIZED_KEY_PREFIX')
throw errcode(errMsg, 'ERR_UNRECOGNIZED_KEY_PREFIX')
}

@@ -39,0 +39,0 @@

@@ -9,9 +9,9 @@ 'use strict'

* It runs the needed validators.
* If verification fails the returned Promise will reject with the error.
*
* @param {Object} validators
* @param {Record} record
* @param {function(Error)} callback
* @returns {undefined}
* @returns {Promise}
*/
const verifyRecord = (validators, record, callback) => {
const verifyRecord = (validators, record) => {
const key = record.key

@@ -22,3 +22,3 @@ const parts = bsplit(key, Buffer.from('/'))

// No validator available
return callback()
return
}

@@ -31,6 +31,6 @@

return callback(errcode(new Error(errMsg), 'ERR_INVALID_RECORD_KEY_TYPE'))
throw errcode(errMsg, 'ERR_INVALID_RECORD_KEY_TYPE')
}
validator.func(key, record.value, callback)
return validator.func(key, record.value)
}

@@ -37,0 +37,0 @@

'use strict'
const setImmediate = require('async/setImmediate')
const multihashing = require('multihashing-async')
const errcode = require('err-code')

@@ -10,17 +10,15 @@ /**

* that matches the passed in key.
* If validation fails the returned Promise will reject with the error.
*
* @param {Buffer} key - A valid key is of the form `'/pk/<keymultihash>'`
* @param {Buffer} publicKey - The public key to validate against (protobuf encoded).
* @param {function(Error)} callback
* @returns {undefined}
* @returns {Promise}
*/
const validatePublicKeyRecord = (key, publicKey, callback) => {
const done = (err) => setImmediate(() => callback(err))
const validatePublicKeyRecord = async (key, publicKey) => {
if (!Buffer.isBuffer(key)) {
return done(new Error('"key" must be a Buffer'))
throw errcode('"key" must be a Buffer', 'ERR_INVALID_RECORD_KEY_NOT_BUFFER')
}
if (key.length < 3) {
return done(new Error('invalid public key record'))
if (key.length < 5) {
throw errcode('invalid public key record', 'ERR_INVALID_RECORD_KEY_TOO_SHORT')
}

@@ -31,3 +29,3 @@

if (prefix !== '/pk/') {
return done(new Error('key was not prefixed with /pk/'))
throw errcode('key was not prefixed with /pk/', 'ERR_INVALID_RECORD_KEY_BAD_PREFIX')
}

@@ -37,13 +35,7 @@

multihashing(publicKey, 'sha2-256', (err, publicKeyHash) => {
if (err) {
return done(err)
}
const publicKeyHash = await multihashing(publicKey, 'sha2-256')
if (!keyhash.equals(publicKeyHash)) {
return done(new Error('public key does not match passed in key'))
}
done()
})
if (!keyhash.equals(publicKeyHash)) {
throw errcode('public key does not match passed in key', 'ERR_INVALID_RECORD_HASH_MISMATCH')
}
}

@@ -50,0 +42,0 @@

@@ -8,4 +8,2 @@ /* eslint max-nested-callbacks: ["error", 8] */

const expect = chai.expect
const waterfall = require('async/waterfall')
const each = require('async/each')
const crypto = require('libp2p-crypto')

@@ -33,10 +31,12 @@ const PeerId = require('peer-id')

// missing hashkey
Buffer.from('/pk/'),
[Buffer.from('/pk/'), 'ERR_INVALID_RECORD_KEY_TOO_SHORT'],
// not the hash of a key
Buffer.concat([
[Buffer.concat([
Buffer.from('/pk/'),
Buffer.from('random')
]),
]), 'ERR_INVALID_RECORD_HASH_MISMATCH'],
// missing prefix
hash
[hash, 'ERR_INVALID_RECORD_KEY_BAD_PREFIX'],
// not a buffer
['not a buffer', 'ERR_INVALID_RECORD_KEY_NOT_BUFFER']
]

@@ -52,19 +52,10 @@ }

before((done) => {
waterfall([
(cb) => crypto.keys.generateKeyPair('rsa', 1024, cb),
(pair, cb) => {
key = pair
pair.public.hash(cb)
},
(_hash, cb) => {
hash = _hash
cases = generateCases(hash)
cb()
}
], done)
before(async () => {
key = await crypto.keys.generateKeyPair('rsa', 1024)
hash = await key.public.hash()
cases = generateCases(hash)
})
describe('verifyRecord', () => {
it('calls matching validator', (done) => {
it('calls matching validator', () => {
const k = Buffer.from('/hello/you')

@@ -75,6 +66,5 @@ const rec = new Record(k, Buffer.from('world'), new PeerId(hash))

hello: {
func (key, value, cb) {
func (key, value) {
expect(key).to.eql(k)
expect(value).to.eql(Buffer.from('world'))
cb()
},

@@ -84,6 +74,6 @@ sign: false

}
validator.verifyRecord(validators, rec, done)
return validator.verifyRecord(validators, rec)
})
it('calls not matching any validator', (done) => {
it('calls not matching any validator', () => {
const k = Buffer.from('/hallo/you')

@@ -94,6 +84,5 @@ const rec = new Record(k, Buffer.from('world'), new PeerId(hash))

hello: {
func (key, value, cb) {
func (key, value) {
expect(key).to.eql(k)
expect(value).to.eql(Buffer.from('world'))
cb()
},

@@ -103,6 +92,7 @@ sign: false

}
validator.verifyRecord(validators, rec, (err) => {
expect(err).to.exist()
done()
})
return expect(
() => validator.verifyRecord(validators, rec)
).to.throw(
/Invalid record keytype/
)
})

@@ -117,3 +107,3 @@ })

describe('public key', () => {
it('exports func and sing', () => {
it('exports func and sign', () => {
const pk = validator.validators.pk

@@ -125,15 +115,18 @@

it('does not error on valid record', (done) => {
each(cases.valid.publicKey, (k, cb) => {
validator.validators.pk.func(k, key.public.bytes, cb)
}, done)
it('does not error on valid record', () => {
return Promise.all(cases.valid.publicKey.map((k) => {
return validator.validators.pk.func(k, key.public.bytes)
}))
})
it('throws on invalid records', (done) => {
each(cases.invalid.publicKey, (k, cb) => {
validator.validators.pk.func(k, key.public.bytes, (err) => {
expect(err).to.exist()
cb()
})
}, done)
it('throws on invalid records', () => {
return Promise.all(cases.invalid.publicKey.map(async ([k, errCode]) => {
try {
await validator.validators.pk.func(k, key.public.bytes)
} catch (err) {
expect(err.code).to.eql(errCode)
return
}
expect.fail('did not throw an error with code ' + errCode)
}))
})

@@ -144,13 +137,10 @@ })

describe('go interop', () => {
it('record with key from from go', (done) => {
it('record with key from from go', async () => {
const pubKey = crypto.keys.unmarshalPublicKey(fixture.publicKey)
pubKey.hash((err, hash) => {
expect(err).to.not.exist()
const k = Buffer.concat([Buffer.from('/pk/'), hash])
validator.validators.pk.func(k, pubKey.bytes, done)
})
const hash = await pubKey.hash()
const k = Buffer.concat([Buffer.from('/pk/'), hash])
return validator.validators.pk.func(k, pubKey.bytes)
})
})
})

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc