digitalbazaar/forge — pull request #19 by AchimO (2013-04-11 08:50:45+00:00)
Title: Massive performance boost for RSA key generation in Firefox, IE 10, Safari

During benchmarks, we discovered a massive difference in RSA key generation performance on Google Chrome vs. other browsers (Firefox, IE, Safari...). By making a relatively simple change how the BigInteger objects are stored, we could bring the performance in those browsers to the same level as in Chrome, without any apparent negative consequences for Chrome. We have not found any direct access to the data representation of the BigIntegers outside of jsbn.js, so there should be no impacts to other functionality.

The change is to store the integer parts of a BigInteger in an array instead of directly
in the BigInteger object. The performance improvement for Firefox, IE, Safari for RSA key generation is about a factor of 10.