ML-DSA: add Keccak x4 support. This is basically a port of 8daf854545e60454740b3c2286de391bcf8b1685 from ML-KEM. Only small improvements on aarch64, but massive improvements on x86-64. aarch64 Apple M1 Pro: Did 23153 BM_SpeedMLDSAKeyGen/ml_dsa_44/threads:1 operations (33067.7 ops/sec) [+2.5%] Did 5817 BM_SpeedMLDSASign/ml_dsa_44/threads:1 operations (8109.4 ops/sec) [-0.2%] Did 253549 BM_SpeedMLDSAParsePubKey/ml_dsa_44/threads:1 operations (357425.4 ops/sec) [-1.1%] Did 26062 BM_SpeedMLDSAVerify/ml_dsa_44/threads:1 operations (38089.8 ops/sec) [+0.8%] Did 26751 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_44/threads:1 operations (38209.4 ops/sec) [+1.1%] Did 11327 BM_SpeedMLDSAKeyGen/ml_dsa_65/threads:1 operations (16189.1 ops/sec) [+0.9%] Did 3650 BM_SpeedMLDSASign/ml_dsa_65/threads:1 operations (5250.0 ops/sec) [+1.8%] Did 185026 BM_SpeedMLDSAParsePubKey/ml_dsa_65/threads:1 operations (264028.7 ops/sec) [-0.5%] Did 17160 BM_SpeedMLDSAVerify/ml_dsa_65/threads:1 operations (24510.6 ops/sec) [+4.2%] Did 17186 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_65/threads:1 operations (24555.3 ops/sec) [+1.7%] Did 8932 BM_SpeedMLDSAKeyGen/ml_dsa_87/threads:1 operations (12802.3 ops/sec) [+1.7%] Did 3165 BM_SpeedMLDSASign/ml_dsa_87/threads:1 operations (4381.6 ops/sec) [-0.1%] Did 145645 BM_SpeedMLDSAParsePubKey/ml_dsa_87/threads:1 operations (208208.8 ops/sec) [+1.1%] Did 10307 BM_SpeedMLDSAVerify/ml_dsa_87/threads:1 operations (14741.2 ops/sec) [+1.7%] Did 10302 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_87/threads:1 operations (14715.9 ops/sec) [+3.9%] x86-64 AMD EPYC 7B13: Did 13796 BM_SpeedMLDSAKeyGen/ml_dsa_44/threads:1 operations (19726.2 ops/sec) [+19.3%] Did 3675 BM_SpeedMLDSASign/ml_dsa_44/threads:1 operations (5120.6 ops/sec) [+1.4%] Did 155308 BM_SpeedMLDSAParsePubKey/ml_dsa_44/threads:1 operations (221784.4 ops/sec) [+1.1%] Did 16906 BM_SpeedMLDSAVerify/ml_dsa_44/threads:1 operations (24154.9 ops/sec) [+21.3%] Did 16865 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_44/threads:1 operations (24128.6 ops/sec) [+21.4%] Did 7246 BM_SpeedMLDSAKeyGen/ml_dsa_65/threads:1 operations (10344.9 ops/sec) [+17.9%] Did 2369 BM_SpeedMLDSASign/ml_dsa_65/threads:1 operations (3461.7 ops/sec) [+11.5%] Did 103849 BM_SpeedMLDSAParsePubKey/ml_dsa_65/threads:1 operations (148677.9 ops/sec) [+0.2%] Did 10579 BM_SpeedMLDSAVerify/ml_dsa_65/threads:1 operations (15057.3 ops/sec) [+22.9%] Did 10711 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_65/threads:1 operations (15178.8 ops/sec) [+23.9%] Did 5502 BM_SpeedMLDSAKeyGen/ml_dsa_87/threads:1 operations (7879.5 ops/sec) [+24.9%] Did 2044 BM_SpeedMLDSASign/ml_dsa_87/threads:1 operations (3009.9 ops/sec) [+13.4%] Did 77857 BM_SpeedMLDSAParsePubKey/ml_dsa_87/threads:1 operations (111054.2 ops/sec) [+0.7%] Did 6569 BM_SpeedMLDSAVerify/ml_dsa_87/threads:1 operations (9391.4 ops/sec) [+28.1%] Did 6445 BM_SpeedMLDSAVerifyBadSignature/ml_dsa_87/threads:1 operations (9275.8 ops/sec) [+26.7%] Bug: 503700354 Change-Id: I09c1ef686314a05586ecefe1382239556a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/102127 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> Auto-Submit: Rudolf Polzer <rpolzer@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: