From 1149d4bf260cac158e8271be640c543f5a0aaba5 Mon Sep 17 00:00:00 2001
From: Sean McArthur <sean.monstar@gmail.com>
Date: Wed, 18 Jul 2012 13:30:20 -0700
Subject: [PATCH] generate_ephemeral_keys.js instead of .sh

making this script cross-platform
---
 package.json                       |  2 +-
 scripts/generate_ephemeral_keys.js | 46 ++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 scripts/generate_ephemeral_keys.js

diff --git a/package.json b/package.json
index 1e45de688..e5ba824e0 100644
--- a/package.json
+++ b/package.json
@@ -41,7 +41,7 @@
         "jshint": "0.7.1"
     },
     "scripts": {
-        "postinstall": "./scripts/generate_ephemeral_keys.sh",
+        "postinstall": "node ./scripts/generate_ephemeral_keys.js",
         "test": "./scripts/test",
         "start": "./scripts/run_locally.js"
     },
diff --git a/scripts/generate_ephemeral_keys.js b/scripts/generate_ephemeral_keys.js
new file mode 100644
index 000000000..d721ebc42
--- /dev/null
+++ b/scripts/generate_ephemeral_keys.js
@@ -0,0 +1,46 @@
+var fs = require('fs');
+var path = require('path');
+var child_process = require('child_process');
+var existsSync = fs.existsSync || path.existsSync;
+
+var VAR = path.join(__dirname, '../var');
+var CERT = path.join(VAR, 'root.cert');
+
+function exec(file, args, next) {
+  child_process.exec([file, args].join(' '), function(err, stdout, stderr) {
+    if (err) throw err;
+    if (stderr) console.error(stderr);
+    next && next(stdout);
+  });
+}
+
+
+// if keys already exist, do nothing
+if (existsSync(CERT)) {
+  process.exit(0);
+}
+
+var GENERATE_KEYPAIR = path.join(__dirname, '../node_modules/.bin/generate-keypair');
+var CERTIFY = path.join(__dirname, '../node_modules/.bin/certify');
+
+if (!existsSync(GENERATE_KEYPAIR)) {
+  console.error('cannot find generate-keypair from jwcrypto. try: npm install');
+  process.exit(1);
+}
+
+if (!existsSync(CERTIFY)) {
+  console.error('cannot find certify from jwcrypto. try: rm -rf node_modules && npm install');
+  process.exit(1);
+}
+
+console.log('*** Generating ephemeral keys used for testing ***');
+
+exec(GENERATE_KEYPAIR, '-k 256 -a rsa', function(stdout) {
+  if (stdout) console.log(stdout);
+  fs.mkdirSync(VAR);
+  exec(CERTIFY, '-s key.secretkey -p key.publickey', function(cert) {
+    fs.writeFileSync(CERT, cert);
+    fs.unlinkSync('key.publickey');
+    fs.renameSync('key.secretkey', path.join(VAR, 'root.secretkey'));
+  });
+});
-- 
GitLab