commit | 16bfff7169dee9d425bae3c01da131087729ccb6 | [log] [tgz] |
---|---|---|
author | Brian Smith <brian@briansmith.org> | Fri Aug 19 13:58:40 2016 -1000 |
committer | CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> | Fri Dec 16 17:41:01 2016 +0000 |
tree | a84da42b8ee327d2ac7141fc04fc784edd10aeae | |
parent | febf77190f5b32c9825786239f87dfa8a90a9922 [diff] |
Calculate Montgomery RR without division. Get one step closer to removing the dependency on |BN_div| from most programs. Also get one step closer to a constant-time implementation of |BN_MONT_CTX_set|; we now "just" need to create a constant-time variant of |BN_mod_lshift1_quick|. Note that this version might actually increase the side channel signal, since the variance in timing in |BN_div| is probably less than the variance from the many conditional reductions in the new method. On one Windows x64 machine, the speed of RSA verification using the new version is not too different from the speed of the old code. However, |BN_div| is generally slow on Windows x64 so I expect this isn't faster on all platforms. Regardless, we generally consider ECDSA/EdDSA signature verification performance to be adaquate and RSA signature verification is much, much faster even with this change. For RSA signing the performance is not a significant factor since performance-sensitive applications will cache the |RSA| structure and the |RSA| structure will cache the Montgomery contexts. Change-Id: Ib14f1a35c99b8da435e190342657f6a839381a1a Reviewed-on: https://boringssl-review.googlesource.com/10520 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.
Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.
Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.
BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.
Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.
There are other files in this directory which might be helpful: