Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 7c44c91

Browse files
fix: more linting
1 parent 409a999 commit 7c44c91

File tree

5 files changed

+55
-46
lines changed

5 files changed

+55
-46
lines changed

src/keychain.js

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
'use strict'
22

33
const async = require('async')
4-
const sanitize = require("sanitize-filename")
4+
const sanitize = require('sanitize-filename')
55
const forge = require('node-forge')
66
const deepmerge = require('deepmerge')
7-
const crypto = require('crypto')
8-
const libp2pCrypto = require('libp2p-crypto')
7+
const crypto = require('libp2p-crypto')
98
const util = require('./util')
109
const CMS = require('./cms')
1110
const DS = require('interface-datastore')
@@ -32,7 +31,6 @@ const defaultOptions = {
3231

3332
function validateKeyName (name) {
3433
if (!name) return false
35-
3634
return name === sanitize(name.trim())
3735
}
3836

@@ -44,8 +42,9 @@ function validateKeyName (name) {
4442
*
4543
* @param {function(Error)} callback - The caller
4644
* @param {string | Error} err - The error
45+
* @returns {undefined}
4746
*/
48-
function _error(callback, err) {
47+
function _error (callback, err) {
4948
const min = 200
5049
const max = 1000
5150
const delay = Math.random() * (max - min) + min
@@ -55,15 +54,21 @@ function _error(callback, err) {
5554

5655
/**
5756
* Converts a key name into a datastore name.
57+
*
58+
* @param {string} name
59+
* @returns {DS.Key}
5860
*/
5961
function DsName (name) {
6062
return new DS.Key('/' + name)
6163
}
6264

6365
/**
6466
* Converts a datastore name into a key name.
67+
*
68+
* @param {DS.Key} name - A datastore name
69+
* @returns {string}
6570
*/
66-
function KsName(name) {
71+
function KsName (name) {
6772
return name.toString().slice(1)
6873
}
6974

@@ -111,7 +116,7 @@ class Keychain {
111116
this.cms = new CMS(this)
112117
}
113118

114-
static get options() {
119+
static get options () {
115120
return defaultOptions
116121
}
117122

@@ -123,6 +128,7 @@ class Keychain {
123128
}
124129
const dsname = DsName(name)
125130
self.store.has(dsname, (err, exists) => {
131+
if (err) return _error(callback, err)
126132
if (exists) return _error(callback, `Key '${name}' already exists'`)
127133

128134
switch (type.toLowerCase()) {
@@ -133,14 +139,14 @@ class Keychain {
133139
forge.pki.rsa.generateKeyPair({bits: size, workers: -1}, (err, keypair) => {
134140
if (err) return _error(callback, err)
135141

136-
const pem = forge.pki.encryptRsaPrivateKey(keypair.privateKey, this._());
142+
const pem = forge.pki.encryptRsaPrivateKey(keypair.privateKey, this._())
137143
return self.store.put(dsname, pem, (err) => {
138144
if (err) return _error(callback, err)
139145

140146
self._getKeyInfo(name, callback)
141147
})
142148
})
143-
break;
149+
break
144150

145151
default:
146152
return _error(callback, `Invalid key type '${type}'`)
@@ -181,13 +187,14 @@ class Keychain {
181187
}
182188
const dsname = DsName(name)
183189
self.store.has(dsname, (err, exists) => {
190+
if (err) return _error(callback, err)
184191
if (!exists) return _error(callback, `Key '${name}' does not exist'`)
185192

186193
self.store.delete(dsname, callback)
187194
})
188195
}
189196

190-
renameKey(oldName, newName, callback) {
197+
renameKey (oldName, newName, callback) {
191198
const self = this
192199
if (!validateKeyName(oldName) || oldName === 'self') {
193200
return _error(callback, `Invalid old key name '${oldName}'`)
@@ -203,6 +210,7 @@ class Keychain {
203210
}
204211
const pem = res.toString()
205212
self.store.has(newDsname, (err, exists) => {
213+
if (err) return _error(callback, err)
206214
if (exists) return _error(callback, `Key '${newName}' already exists'`)
207215

208216
const batch = self.store.batch()
@@ -246,7 +254,7 @@ class Keychain {
246254
})
247255
}
248256

249-
importKey(name, pem, password, callback) {
257+
importKey (name, pem, password, callback) {
250258
const self = this
251259
if (!validateKeyName(name) || name === 'self') {
252260
return _error(callback, `Invalid key name '${name}'`)
@@ -256,15 +264,16 @@ class Keychain {
256264
}
257265
const dsname = DsName(name)
258266
self.store.has(dsname, (err, exists) => {
267+
if (err) return _error(callback, err)
259268
if (exists) return _error(callback, `Key '${name}' already exists'`)
260269
try {
261270
const privateKey = forge.pki.decryptRsaPrivateKey(pem, password)
262271
if (privateKey === null) {
263272
return _error(callback, 'Cannot read the key, most likely the password is wrong')
264273
}
265-
const newpem = forge.pki.encryptRsaPrivateKey(privateKey, this._());
274+
const newpem = forge.pki.encryptRsaPrivateKey(privateKey, this._())
266275
return self.store.put(dsname, newpem, (err) => {
267-
if (err) return _error(callback, err)
276+
if (err) return _error(callback, err)
268277

269278
this._getKeyInfo(name, callback)
270279
})
@@ -280,23 +289,25 @@ class Keychain {
280289
return _error(callback, `Invalid key name '${name}'`)
281290
}
282291
if (!peer || !peer.privKey) {
283-
return _error(callback, 'Peer.privKey \is required')
292+
return _error(callback, 'Peer.privKey is required')
284293
}
285294
const dsname = DsName(name)
286295
self.store.has(dsname, (err, exists) => {
296+
if (err) return _error(callback, err)
287297
if (exists) return _error(callback, `Key '${name}' already exists'`)
288298

289299
const privateKeyProtobuf = peer.marshalPrivKey()
290-
libp2pCrypto.keys.unmarshalPrivateKey(privateKeyProtobuf, (err, key) => {
300+
crypto.keys.unmarshalPrivateKey(privateKeyProtobuf, (err, key) => {
301+
if (err) return _error(callback, err)
291302
try {
292303
const der = key.marshal()
293-
const buf = forge.util.createBuffer(der.toString('binary'));
304+
const buf = forge.util.createBuffer(der.toString('binary'))
294305
const obj = forge.asn1.fromDer(buf)
295306
const privateKey = forge.pki.privateKeyFromAsn1(obj)
296307
if (privateKey === null) {
297308
return _error(callback, 'Cannot read the peer private key')
298309
}
299-
const pem = forge.pki.encryptRsaPrivateKey(privateKey, this._());
310+
const pem = forge.pki.encryptRsaPrivateKey(privateKey, this._())
300311
return self.store.put(dsname, pem, (err) => {
301312
if (err) return _error(callback, err)
302313

@@ -314,9 +325,9 @@ class Keychain {
314325
*
315326
* @param {string} name
316327
* @param {function(Error, string)} callback
328+
* @returns {undefined}
317329
*/
318330
_getPrivateKey (name, callback) {
319-
const self = this
320331
if (!validateKeyName(name)) {
321332
return _error(callback, `Invalid key name '${name}'`)
322333
}
@@ -329,7 +340,6 @@ class Keychain {
329340
}
330341

331342
_getKeyInfo (name, callback) {
332-
const self = this
333343
if (!validateKeyName(name)) {
334344
return _error(callback, `Invalid key name '${name}'`)
335345
}
@@ -356,7 +366,6 @@ class Keychain {
356366
}
357367
})
358368
}
359-
360369
}
361370

362371
module.exports = Keychain

src/util.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ exports.keyId = (privateKey, callback) => {
1414
try {
1515
const publicKey = pki.setRsaPublicKey(privateKey.n, privateKey.e)
1616
const spki = pki.publicKeyToSubjectPublicKeyInfo(publicKey)
17-
const der = new Buffer(forge.asn1.toDer(spki).getBytes(), 'binary')
17+
const der = Buffer.from(forge.asn1.toDer(spki).getBytes(), 'binary')
1818
const jwk = rsaUtils.pkixToJwk(der)
1919
const rsa = new rsaClass.RsaPublicKey(jwk)
2020
rsa.hash((err, kid) => {
@@ -33,12 +33,12 @@ exports.certificateForKey = (privateKey, callback) => {
3333
if (err) return callback(err)
3434

3535
const publicKey = pki.setRsaPublicKey(privateKey.n, privateKey.e)
36-
const cert = pki.createCertificate();
37-
cert.publicKey = publicKey;
38-
cert.serialNumber = '01';
39-
cert.validity.notBefore = new Date();
40-
cert.validity.notAfter = new Date();
41-
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 10);
36+
const cert = pki.createCertificate()
37+
cert.publicKey = publicKey
38+
cert.serialNumber = '01'
39+
cert.validity.notBefore = new Date()
40+
cert.validity.notAfter = new Date()
41+
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 10)
4242
var attrs = [{
4343
name: 'organizationName',
4444
value: 'ipfs'
@@ -48,9 +48,9 @@ exports.certificateForKey = (privateKey, callback) => {
4848
}, {
4949
name: 'commonName',
5050
value: kid
51-
}];
52-
cert.setSubject(attrs);
53-
cert.setIssuer(attrs);
51+
}]
52+
cert.setSubject(attrs)
53+
cert.setIssuer(attrs)
5454
cert.setExtensions([{
5555
name: 'basicConstraints',
5656
cA: true
@@ -77,7 +77,7 @@ exports.certificateForKey = (privateKey, callback) => {
7777
sslCA: true,
7878
emailCA: true,
7979
objCA: true
80-
}]);
80+
}])
8181
// self-sign certificate
8282
cert.sign(privateKey)
8383

test/browser.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
const async = require('async')
55
const LevelStore = require('datastore-level')
66

7-
// use in the browser with level.js
8-
const browserStore = new LevelStore('my/db/name', {db: require('level-js')})
9-
107
describe('browser', () => {
11-
const datastore1 = new LevelStore('test-keystore-1', {db: require('level-js')})
12-
const datastore2 = new LevelStore('test-keystore-2', {db: require('level-js')})
8+
const datastore1 = new LevelStore('test-keystore-1', {db: require('level-js')})
9+
const datastore2 = new LevelStore('test-keystore-2', {db: require('level-js')})
1310

1411
before((done) => {
1512
async.series([

test/keychain.spec.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint max-nested-callbacks: ["error", 8] */
12
/* eslint-env mocha */
23
'use strict'
34

@@ -28,12 +29,12 @@ module.exports = (datastore1, datastore2) => {
2829
expect(() => new Keychain(datastore2)).to.throw()
2930
})
3031

31-
it ('needs a NIST SP 800-132 non-weak pass phrase', () => {
32-
expect(() => new Keychain(datastore2, { passPhrase: '< 20 character'})).to.throw()
32+
it('needs a NIST SP 800-132 non-weak pass phrase', () => {
33+
expect(() => new Keychain(datastore2, { passPhrase: '< 20 character' })).to.throw()
3334
})
3435

3536
it('needs a store to persist a key', () => {
36-
expect(() => new Keychain(null, { passPhrase: passPhrase})).to.throw()
37+
expect(() => new Keychain(null, { passPhrase: passPhrase })).to.throw()
3738
})
3839

3940
it('has default options', () => {
@@ -112,7 +113,6 @@ module.exports = (datastore1, datastore2) => {
112113
})
113114
})
114115
})
115-
116116
})
117117

118118
describe('query', () => {
@@ -177,7 +177,7 @@ module.exports = (datastore1, datastore2) => {
177177
})
178178

179179
it('is a PKCS #7 message', (done) => {
180-
ks.cms.readData("not CMS", (err) => {
180+
ks.cms.readData('not CMS', (err) => {
181181
expect(err).to.exist()
182182
done()
183183
})
@@ -205,7 +205,6 @@ module.exports = (datastore1, datastore2) => {
205205
done()
206206
})
207207
})
208-
209208
})
210209

211210
describe('exported key', () => {
@@ -243,7 +242,7 @@ module.exports = (datastore1, datastore2) => {
243242
done()
244243
})
245244
})
246-
})
245+
})
247246

248247
describe('peer id', () => {
249248
const alicePrivKey = 'CAASpgkwggSiAgEAAoIBAQC2SKo/HMFZeBml1AF3XijzrxrfQXdJzjePBZAbdxqKR1Mc6juRHXij6HXYPjlAk01BhF1S3Ll4Lwi0cAHhggf457sMg55UWyeGKeUv0ucgvCpBwlR5cQ020i0MgzjPWOLWq1rtvSbNcAi2ZEVn6+Q2EcHo3wUvWRtLeKz+DZSZfw2PEDC+DGPJPl7f8g7zl56YymmmzH9liZLNrzg/qidokUv5u1pdGrcpLuPNeTODk0cqKB+OUbuKj9GShYECCEjaybJDl9276oalL9ghBtSeEv20kugatTvYy590wFlJkkvyl+nPxIH0EEYMKK9XRWlu9XYnoSfboiwcv8M3SlsjAgMBAAECggEAZtju/bcKvKFPz0mkHiaJcpycy9STKphorpCT83srBVQi59CdFU6Mj+aL/xt0kCPMVigJw8P3/YCEJ9J+rS8BsoWE+xWUEsJvtXoT7vzPHaAtM3ci1HZd302Mz1+GgS8Epdx+7F5p80XAFLDUnELzOzKftvWGZmWfSeDnslwVONkL/1VAzwKy7Ce6hk4SxRE7l2NE2OklSHOzCGU1f78ZzVYKSnS5Ag9YrGjOAmTOXDbKNKN/qIorAQ1bovzGoCwx3iGIatQKFOxyVCyO1PsJYT7JO+kZbhBWRRE+L7l+ppPER9bdLFxs1t5CrKc078h+wuUr05S1P1JjXk68pk3+kQKBgQDeK8AR11373Mzib6uzpjGzgNRMzdYNuExWjxyxAzz53NAR7zrPHvXvfIqjDScLJ4NcRO2TddhXAfZoOPVH5k4PJHKLBPKuXZpWlookCAyENY7+Pd55S8r+a+MusrMagYNljb5WbVTgN8cgdpim9lbbIFlpN6SZaVjLQL3J8TWH6wKBgQDSChzItkqWX11CNstJ9zJyUE20I7LrpyBJNgG1gtvz3ZMUQCn3PxxHtQzN9n1P0mSSYs+jBKPuoSyYLt1wwe10/lpgL4rkKWU3/m1Myt0tveJ9WcqHh6tzcAbb/fXpUFT/o4SWDimWkPkuCb+8j//2yiXk0a/T2f36zKMuZvujqQKBgC6B7BAQDG2H2B/ijofp12ejJU36nL98gAZyqOfpLJ+FeMz4TlBDQ+phIMhnHXA5UkdDapQ+zA3SrFk+6yGk9Vw4Hf46B+82SvOrSbmnMa+PYqKYIvUzR4gg34rL/7AhwnbEyD5hXq4dHwMNsIDq+l2elPjwm/U9V0gdAl2+r50HAoGALtsKqMvhv8HucAMBPrLikhXP/8um8mMKFMrzfqZ+otxfHzlhI0L08Bo3jQrb0Z7ByNY6M8epOmbCKADsbWcVre/AAY0ZkuSZK/CaOXNX/AhMKmKJh8qAOPRY02LIJRBCpfS4czEdnfUhYV/TYiFNnKRj57PPYZdTzUsxa/yVTmECgYBr7slQEjb5Onn5mZnGDh+72BxLNdgwBkhO0OCdpdISqk0F0Pxby22DFOKXZEpiyI9XYP1C8wPiJsShGm2yEwBPWXnrrZNWczaVuCbXHrZkWQogBDG3HGXNdU4MAWCyiYlyinIBpPpoAJZSzpGLmWbMWh28+RJS6AQX6KHrK1o2uw=='
@@ -252,6 +251,7 @@ module.exports = (datastore1, datastore2) => {
252251
before(function (done) {
253252
const encoded = Buffer.from(alicePrivKey, 'base64')
254253
PeerId.createFromPrivKey(encoded, (err, id) => {
254+
expect(err).to.not.exist()
255255
alice = id
256256
done()
257257
})
@@ -351,6 +351,5 @@ module.exports = (datastore1, datastore2) => {
351351
})
352352
})
353353
})
354-
355354
})
356355
}

test/peerid.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ describe('peer ID', () => {
2424
before(function (done) {
2525
const encoded = Buffer.from(sample.privKey, 'base64')
2626
PeerId.createFromPrivKey(encoded, (err, id) => {
27+
expect(err).to.not.exist()
2728
peer = id
2829
done()
2930
})
@@ -44,6 +45,7 @@ describe('peer ID', () => {
4445
// get protobuf version of the private key
4546
const privateKeyProtobuf = peer.marshalPrivKey()
4647
crypto.keys.unmarshalPrivateKey(privateKeyProtobuf, (err, key) => {
48+
expect(err).to.not.exist()
4749
// console.log('private key', key)
4850
// console.log('\nprivate key der', key.marshal().toString('base64'))
4951
done()
@@ -56,6 +58,7 @@ describe('peer ID', () => {
5658
const rsa = new rsaClass.RsaPublicKey(jwk)
5759
// console.log('rsa', rsa)
5860
rsa.hash((err, keyId) => {
61+
expect(err).to.not.exist()
5962
// console.log('err', err)
6063
// console.log('keyId', keyId)
6164
// console.log('id decoded', multihash.decode(keyId))
@@ -78,6 +81,7 @@ describe('peer ID', () => {
7881
const rsa = new rsaClass.RsaPublicKey(jwk)
7982
// console.log('rsa', rsa)
8083
rsa.hash((err, keyId) => {
84+
expect(err).to.not.exist()
8185
// console.log('err', err)
8286
// console.log('keyId', keyId)
8387
// console.log('id decoded', multihash.decode(keyId))
@@ -96,10 +100,10 @@ describe('peer ID', () => {
96100
// get protobuf version of the private key
97101
const privateKeyProtobuf = peer.marshalPrivKey()
98102
crypto.keys.unmarshalPrivateKey(privateKeyProtobuf, (err, key) => {
103+
expect(err).to.not.exist()
99104
// console.log('private key', key)
100-
//console.log('\nprivate key der', key.marshal().toString('base64'))
105+
// console.log('\nprivate key der', key.marshal().toString('base64'))
101106
done()
102107
})
103108
})
104-
105109
})

0 commit comments

Comments
 (0)