Skip to content

Instantly share code, notes, and snippets.

@creationix
Created June 3, 2014 02:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save creationix/0e3f70f13243b097d0f4 to your computer and use it in GitHub Desktop.
Save creationix/0e3f70f13243b097d0f4 to your computer and use it in GitHub Desktop.
Generate key as tedit extension.
"use strict";
var rsa = window.forge.rsa;
var pki = window.forge.pki;
var fs = require('data/fs.js');
var reloadTree = require('ui/tree.js').reload;
var notify = require('ui/notify.js');
var modes = require('js-git/lib/modes.js');
var bodec = require('bodec.js');
var privateKey, publicKey;
fs.readBlob("private-key.pem", onRead);
function onRead(err, entry) {
if (!entry || !entry.blob) {
notify("Generating RSA key pair..");
return rsa.generateKeyPair({bits: 2048, workers: 2}, onPair);
}
var pem = bodec.toUnicode(entry.blob);
privateKey = pki.privateKeyFromPem(pem);
publicKey = pki.setRsaPublicKey(privateKey.n, privateKey.e);
onKeys();
}
function onPair(err, pair) {
if (err) throw err;
notify("Generatied RSA key pair");
privateKey = pair.privateKey;
publicKey = pair.publicKey;
fs.saveAs("", "blob", pki.privateKeyToPem(pair.privateKey), onHash);
}
function onHash(err, hash) {
if (err) throw err;
fs.writeEntry("private-key.pem", {
mode: modes.blob,
hash: hash
}, onSaved);
}
function onSaved(err) {
if (err) throw err;
console.log("Private Key saved to VFS");
reloadTree();
onKeys();
}
function onKeys() {
console.log({
privateKey: privateKey,
publicKey: publicKey
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment