From d546ce515368b4532e88ef4b9bdd6e7c2f37bc96 Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Wed, 22 Feb 2017 16:57:43 -0500 Subject: [PATCH 1/2] fuzz: use native-crypto as keygen for fuzzing --- fuzz/happy.js | 35 +++++++++++++++++++++++------------ fuzz/keygen.js | 47 ----------------------------------------------- package.json | 4 ++-- 3 files changed, 25 insertions(+), 61 deletions(-) delete mode 100644 fuzz/keygen.js diff --git a/fuzz/happy.js b/fuzz/happy.js index b87c2ae..efedd8e 100644 --- a/fuzz/happy.js +++ b/fuzz/happy.js @@ -1,9 +1,9 @@ 'use strict'; var assert = require('assert'), - crypto = require('crypto'); - -var keygen = require('./keygen'); + crypto = require('crypto'), + jwkToPem = require('jwk-to-pem'), + nCrypto = require('native-crypto'); var conv = require('../'); @@ -13,17 +13,28 @@ var sslalgs = { 'ES512': 'RSA-SHA512' }; +var crvs = { + ES256: 'P-256', + ES384: 'P-384', + ES512: 'P-521' +}; + ['ES256', 'ES384', 'ES512'].forEach(function(alg) { for (var i = 0; i < 10; ++i) { - var pem = keygen(alg); - - for (var j = 0; j < 10000; ++j) { - var der = crypto - .createSign(sslalgs[alg]) - .update(crypto.randomBytes((Math.random() * (256 - 1) | 0) + 1)) - .sign(pem); + nCrypto + .generate(crvs[alg]) + .then(function(keypair) { + return jwkToPem(keypair.privateKey, { private: true }); + }) + .then(function(pem) { + for (var j = 0; j < 10000; ++j) { + var der = crypto + .createSign(sslalgs[alg]) + .update(crypto.randomBytes((Math.random() * (256 - 1) | 0) + 1)) + .sign(pem); - assert(conv.joseToDer(conv.derToJose(der, alg), alg).equals(der)); - } + assert(conv.joseToDer(conv.derToJose(der, alg), alg).equals(der)); + } + }); } }); diff --git a/fuzz/keygen.js b/fuzz/keygen.js deleted file mode 100644 index cdd7f00..0000000 --- a/fuzz/keygen.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -var base64url = require('base64url').fromBase64, - Buffer = require('safe-buffer').Buffer, - EC = require('elliptic').ec, - jwkToPem = require('jwk-to-pem'); - -var curves = { - ES256: 'p256', - ES384: 'p384', - ES512: 'p521' - }, - jwkCurves = { - ES256: 'P-256', - ES384: 'P-384', - ES512: 'P-521' - }; - -function b64(val) { - val = val.toString('hex', 2); - val = Buffer.from(val, 'hex'); - val = val.toString('base64'); - val = base64url(val); - return val; -} - -function keygen(alg) { - var curve = new EC(curves[alg]); - - var keypair = curve.genKeyPair(); - var priv = keypair.getPrivate(); - var pub = keypair.getPublic(); - - var jwk = { - kty: 'EC', - crv: jwkCurves[alg], - x: b64(pub.getX()), - y: b64(pub.getY()), - d: b64(priv) - }; - - var pem = jwkToPem(jwk, { private: true }); - - return pem; -} - -module.exports = keygen; diff --git a/package.json b/package.json index d83f259..c316af7 100644 --- a/package.json +++ b/package.json @@ -36,11 +36,11 @@ "bench": "^0.3.6", "chai": "^3.5.0", "coveralls": "^2.11.9", - "elliptic": "^6.3.1", "eslint": "^2.12.0", "eslint-config-brightspace": "^0.2.1", "istanbul": "^0.4.3", "jwk-to-pem": "^1.2.5", - "mocha": "^2.5.3" + "mocha": "^2.5.3", + "native-crypto": "^1.7.0" } } From 8a77a517f250d8d846a8dc49bd2e2b802d6b3033 Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Thu, 27 Jul 2017 16:51:31 -0400 Subject: [PATCH 2/2] meta: add myself as initial owner --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..4451d3d --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @omsmith