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

Commit

Permalink
test: add test for different rsa crypto libs
Browse files Browse the repository at this point in the history
  • Loading branch information
mkg20001 authored and daviddias committed Sep 17, 2018
1 parent b05e77f commit f4c0089
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/keys/rsa.js
Expand Up @@ -3,6 +3,10 @@
const crypto = require('crypto')
let keypair
try {
if (process.env.LP2P_FORCE_CRYPTO_LIB === 'keypair') {
throw new Error('Force keypair usage')
}

const ursa = require('ursa-optional') // throws if not compiled
keypair = ({bits}) => {
const key = ursa.generatePrivateKey(bits)
Expand All @@ -12,6 +16,10 @@ try {
}
}
} catch (e) {
if (process.env.LP2P_FORCE_CRYPTO_LIB === 'ursa') {
throw e
}

keypair = require('keypair')
}
const setImmediate = require('async/setImmediate')
Expand Down
65 changes: 65 additions & 0 deletions test/keys/rsa-crypto-libs.js
@@ -0,0 +1,65 @@
'use strict'

/* eslint-env mocha */
/* eslint max-nested-callbacks: ["error", 8] */

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
chai.use(require('chai-string'))

const LIBS = ['ursa', 'keypair']

describe('RSA crypto libs', function () {
this.timeout(20 * 1000)

LIBS.forEach(lib => {
describe(lib, () => {
let crypto
let rsa

before(() => {
process.env.LP2P_FORCE_CRYPTO_LIB = lib

for (const path in require.cache) { // clear module cache
if (path.endsWith('.js')) {
delete require.cache[path]
}
}

crypto = require('../../src')
rsa = crypto.keys.supportedKeys.rsa
})

it('generates a valid key', (done) => {
crypto.keys.generateKeyPair('RSA', 512, (err, key) => {
if (err) {
return done(err)
}

expect(key).to.be.an.instanceof(rsa.RsaPrivateKey)

key.hash((err, digest) => {
if (err) {
return done(err)
}

expect(digest).to.have.length(34)
done()
})
})
})

after(() => {
for (const path in require.cache) { // clear module cache
if (path.endsWith('.js')) {
delete require.cache[path]
}
}

delete process.env.LP2P_FORCE_CRYPTO_LIB
})
})
})
})
3 changes: 3 additions & 0 deletions test/node.js
@@ -0,0 +1,3 @@
'use strict'

require('./keys/rsa-crypto-libs')

0 comments on commit f4c0089

Please sign in to comment.