From eedb722d7bd7112846199e6ac70de2bd3212d21b Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Wed, 29 Oct 2014 18:17:03 +0100 Subject: [PATCH] Fall back to js crypto in case native RSA keygen fails --- package.json | 2 +- src/openpgp.js | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0fbbe444..62d765b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "openpgp", "description": "OpenPGP.js is a Javascript implementation of the OpenPGP protocol. This is defined in RFC 4880.", - "version": "0.8.1", + "version": "0.8.2", "homepage": "http://openpgpjs.org/", "engines": { "node": ">=0.8" diff --git a/src/openpgp.js b/src/openpgp.js index 73044942..f0ca5863 100644 --- a/src/openpgp.js +++ b/src/openpgp.js @@ -240,7 +240,19 @@ function generateKeyPair(options) { result.publicKeyArmored = newKey.toPublic().armor(); return result; - }, 'Error generating keypair!'); + }).catch(function(err) { + console.error(err); + + if (!util.getWebCrypto()) { + // js fallback already tried + throw new Error('Error generating keypair using js fallback!'); + } + + // fall back to js keygen in a worker + console.log('Error generating keypair using native WebCrypto... falling back back to js!'); + return asyncProxy.generateKeyPair(options); + + }).catch(onError.bind(null, 'Error generating keypair!')); } //