Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
fix: circular circular dep -> DI
Browse files Browse the repository at this point in the history
  • Loading branch information
daviddias committed Jul 22, 2017
1 parent 83d2d52 commit bc554d1
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 43 deletions.
10 changes: 1 addition & 9 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,10 @@
const hmac = require('./hmac')
const aes = require('./aes')
const keys = require('./keys')
const rsa = require('./keys/rsa')

exports = module.exports

exports.aes = aes
exports.hmac = hmac
exports.keys = keys

exports.randomBytes = (number) => {
if (!number || typeof number !== 'number') {
throw new Error('first argument must be a Number bigger than 0')
}

return rsa.getRandomValues(new Uint8Array(number))
}
exports.randomBytes = require('./random-bytes')
51 changes: 28 additions & 23 deletions src/keys/index.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
'use strict'

const protobuf = require('protocol-buffers')
const pbm = protobuf(require('./keys.proto'))

const keys = exports.keys = require('./keys')
const keysPBM = protobuf(require('./keys.proto'))

exports = module.exports

exports.pbm = pbm
const supportedKeys = {
rsa: require('./rsa-class'),
ed25519: require('./ed25519-class'),
secp256k1: require('libp2p-crypto-secp256k1')(keysPBM, require('../random-bytes'))
}

exports.supportedKeys = supportedKeys
exports.keysPBM = keysPBM

function isValidKeyType (keyType) {
const key = keys[keyType.toLowerCase()]
const key = supportedKeys[keyType.toLowerCase()]
return key !== undefined
}

Expand All @@ -19,7 +24,7 @@ exports.generateEphemeralKeyPair = require('./ephemeral-keys')

// Generates a keypair of the given type and bitsize
exports.generateKeyPair = (type, bits, cb) => {
let key = keys[type.toLowerCase()]
let key = supportedKeys[type.toLowerCase()]

if (!key) {
return cb(new Error('invalid or unsupported key type'))
Expand All @@ -31,7 +36,7 @@ exports.generateKeyPair = (type, bits, cb) => {
// Generates a keypair of the given type and bitsize
// seed is a 32 byte uint8array
exports.generateKeyPairFromSeed = (type, seed, bits, cb) => {
let key = keys[type.toLowerCase()]
let key = supportedKeys[type.toLowerCase()]
if (!key) {
return cb(new Error('invalid or unsupported key type'))
}
Expand All @@ -44,16 +49,16 @@ exports.generateKeyPairFromSeed = (type, seed, bits, cb) => {
// Converts a protobuf serialized public key into its
// representative object
exports.unmarshalPublicKey = (buf) => {
const decoded = pbm.PublicKey.decode(buf)
const decoded = keysPBM.PublicKey.decode(buf)

switch (decoded.Type) {
case pbm.KeyType.RSA:
return keys.rsa.unmarshalRsaPublicKey(decoded.Data)
case pbm.KeyType.Ed25519:
return keys.ed25519.unmarshalEd25519PublicKey(decoded.Data)
case pbm.KeyType.Secp256k1:
if (keys.secp256k1) {
return keys.secp256k1.unmarshalSecp256k1PublicKey(decoded.Data)
case keysPBM.KeyType.RSA:
return supportedKeys.rsa.unmarshalRsaPublicKey(decoded.Data)
case keysPBM.KeyType.Ed25519:
return supportedKeys.ed25519.unmarshalEd25519PublicKey(decoded.Data)
case keysPBM.KeyType.Secp256k1:
if (supportedKeys.secp256k1) {
return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(decoded.Data)
} else {
throw new Error('secp256k1 support requires libp2p-crypto-secp256k1 package')
}
Expand All @@ -75,16 +80,16 @@ exports.marshalPublicKey = (key, type) => {
// Converts a protobuf serialized private key into its
// representative object
exports.unmarshalPrivateKey = (buf, callback) => {
const decoded = pbm.PrivateKey.decode(buf)
const decoded = keysPBM.PrivateKey.decode(buf)

switch (decoded.Type) {
case pbm.KeyType.RSA:
return keys.rsa.unmarshalRsaPrivateKey(decoded.Data, callback)
case pbm.KeyType.Ed25519:
return keys.ed25519.unmarshalEd25519PrivateKey(decoded.Data, callback)
case pbm.KeyType.Secp256k1:
if (keys.secp256k1) {
return keys.secp256k1.unmarshalSecp256k1PrivateKey(decoded.Data, callback)
case keysPBM.KeyType.RSA:
return supportedKeys.rsa.unmarshalRsaPrivateKey(decoded.Data, callback)
case keysPBM.KeyType.Ed25519:
return supportedKeys.ed25519.unmarshalEd25519PrivateKey(decoded.Data, callback)
case keysPBM.KeyType.Secp256k1:
if (supportedKeys.secp256k1) {
return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(decoded.Data, callback)
} else {
return callback(new Error('secp256k1 support requires libp2p-crypto-secp256k1 package'))
}
Expand Down
7 changes: 0 additions & 7 deletions src/keys/keys.js

This file was deleted.

13 changes: 13 additions & 0 deletions src/random-bytes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict'

const rsa = require('./keys/rsa')

function randomBytes (number) {
if (!number || typeof number !== 'number') {
throw new Error('first argument must be a Number bigger than 0')
}

return rsa.getRandomValues(new Uint8Array(number))
}

module.exports = randomBytes
2 changes: 1 addition & 1 deletion test/keys/ed25519.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ chai.use(dirtyChai)
const Buffer = require('safe-buffer').Buffer

const crypto = require('../../src')
const ed25519 = crypto.keys.keys.ed25519
const ed25519 = crypto.keys.supportedKeys.ed25519
const fixtures = require('../fixtures/go-key-ed25519')

describe('ed25519', () => {
Expand Down
2 changes: 1 addition & 1 deletion test/keys/rsa.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ chai.use(dirtyChai)
const Buffer = require('safe-buffer').Buffer

const crypto = require('../../src')
const rsa = crypto.keys.keys.rsa
const rsa = crypto.keys.supportedKeys.rsa
const fixtures = require('../fixtures/go-key-rsa')

describe('RSA', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/keys/secp256k1.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const mockSecp256k1Module = {
}

describe('without libp2p-crypto-secp256k1 module present', () => {
crypto.keys.keys['secp256k1'] = undefined
crypto.keys.supportedKeys['secp256k1'] = undefined

it('fails to generate a secp256k1 key', (done) => {
crypto.keys.generateKeyPair('secp256k1', 256, (err, key) => {
Expand Down Expand Up @@ -61,7 +61,7 @@ describe('with libp2p-crypto-secp256k1 module present', () => {
let key

before((done) => {
crypto.keys.keys['secp256k1'] = mockSecp256k1Module
crypto.keys.supportedKeys['secp256k1'] = mockSecp256k1Module
crypto.keys.generateKeyPair('secp256k1', 256, (err, _key) => {
if (err) return done(err)
key = _key
Expand Down

0 comments on commit bc554d1

Please sign in to comment.