test: add test for different rsa crypto libs

This commit is contained in:
Maciej Krüger 2018-08-16 10:58:06 +02:00 committed by David Dias
parent b05e77f375
commit f4c00893ad
3 changed files with 76 additions and 0 deletions

View File

@ -3,6 +3,10 @@
const crypto = require('crypto') const crypto = require('crypto')
let keypair let keypair
try { try {
if (process.env.LP2P_FORCE_CRYPTO_LIB === 'keypair') {
throw new Error('Force keypair usage')
}
const ursa = require('ursa-optional') // throws if not compiled const ursa = require('ursa-optional') // throws if not compiled
keypair = ({bits}) => { keypair = ({bits}) => {
const key = ursa.generatePrivateKey(bits) const key = ursa.generatePrivateKey(bits)
@ -12,6 +16,10 @@ try {
} }
} }
} catch (e) { } catch (e) {
if (process.env.LP2P_FORCE_CRYPTO_LIB === 'ursa') {
throw e
}
keypair = require('keypair') keypair = require('keypair')
} }
const setImmediate = require('async/setImmediate') const setImmediate = require('async/setImmediate')

View File

@ -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
test/node.js Normal file
View File

@ -0,0 +1,3 @@
'use strict'
require('./keys/rsa-crypto-libs')