Replace most of P-256 assembly code with C Benchmark (X64 full) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 +0.0012 +0.0012 146195 146366 146138 146319 BM_SpeedECDSASign/p256/threads:1 -0.0509 -0.0511 61778 58631 61762 58608 BM_SpeedECDSAVerify/p256/threads:1 +0.0079 +0.0078 113813 114712 113780 114669 OVERALL_GEOMEAN -0.0143 -0.0144 0 0 0 0 Benchmark (X64 full) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 +0.0063 +0.0066 146195 147118 146138 147101 BM_SpeedECDSASign/p256/threads:1 -0.0434 -0.0432 61778 59098 61762 59091 BM_SpeedECDSAVerify/p256/threads:1 +0.0259 +0.0259 113813 116760 113780 116725 OVERALL_GEOMEAN -0.0042 -0.0040 0 0 0 0 Benchmark (X64 small) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 -0.0982 -0.0982 76798 69259 76769 69234 BM_SpeedECDSASign/p256/threads:1 -0.2843 -0.2843 37843 27085 37827 27074 BM_SpeedECDSAVerify/p256/threads:1 -0.2139 -0.2139 71935 56548 71909 56528 OVERALL_GEOMEAN -0.2024 -0.2024 0 0 0 0 Benchmark (AArch64 full) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 +0.1155 +0.1160 53096 59229 52977 59123 BM_SpeedECDSASign/p256/threads:1 +0.0310 +0.0313 19131 19724 19093 19691 BM_SpeedECDSAVerify/p256/threads:1 +0.1186 +0.1190 47258 52861 47159 52773 OVERALL_GEOMEAN +0.0876 +0.0880 0 0 0 0 Benchmark (AArch64 small) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 -0.4665 -0.4666 121953 65063 121647 64892 BM_SpeedECDSASign/p256/threads:1 -0.4952 -0.4953 50219 25349 50118 25293 BM_SpeedECDSAVerify/p256/threads:1 -0.4997 -0.4997 104284 52178 104045 52058 OVERALL_GEOMEAN -0.4811 -0.4746 0 0 0 0 Benchmark (SSE32 on X64) Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------- BM_SpeedECDH/p256/threads:1 -0.0813 -0.0813 769580 706976 769293 706712 BM_SpeedECDSASign/p256/threads:1 -0.1820 -0.1820 288068 235645 287970 235555 BM_SpeedECDSAVerify/p256/threads:1 -0.1031 -0.1032 687829 616947 687620 616690 OVERALL_GEOMEAN -0.1232 -0.1233 0 0 0 0 Co-authored-by: Miriam Polzer <mpolzer@google.com> Change-Id: Ic03a53963ae7a3a6b7d43eadf197fb59be2bc7f3 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/74627 Commit-Queue: David Benjamin <davidben@google.com> Presubmit-BoringSSL-Verified: boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Benjamin <davidben@google.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.
Project links:
To file a security issue, use the Chromium process and mention in the report this is for BoringSSL. You can ignore the parts of the process that are specific to Chromium/Chrome.
There are other files in this directory which might be helpful: