|author||Brian Smith <email@example.com>||Mon Jun 15 14:42:37 2020 -0500|
|committer||CQ bot account: firstname.lastname@example.org <email@example.com>||Tue Jun 30 15:04:06 2020 +0000|
Use |crypto_word_t| and |size_t| more consistently in ECC scalar recoding. Use |crypto_word_t| as the type for secret values in scalar recoding. Use |size_t| as the type of array indexes in scalar recoding. Use explicit casts where a larger type is (losslessly) truncated to a smaller type. With this change, |uint64_t| is no longer used in the p256.c when building in 32-bit mode, |unsigned| is not used in any of the affected modules, and |uint8_t| and |char| are no longer used for secret values in the ECC recoding. When given the choice of doing non-array-indexing arithmetic (e.g. shifts) on |size_t| values or |crypto_word_t| values, prefer doing it on |crypto_word_t| values. More generally, try to use |size_t| only for sizes and array indexes. This is part of a bigger project to minimize the use of types other than |crypto_word_t| for secret values. This is also part of a larger project make the ECC code more consistent. Avoid changing the loop indexing in the P-256 scalar multiplication from |int| to |size_t|. The P-224 code does use |size_t| but it is less clear than the P-256 code where |i - 1| results in a negative/underflowed value when |i| is zero. Change-Id: I78cb404455c2340a4f8c9688d36c0d425bfcc50b Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/41685 Reviewed-by: David Benjamin <firstname.lastname@example.org> Commit-Queue: David Benjamin <email@example.com>
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: