aboutsummaryrefslogtreecommitdiff
path: root/deps/boringssl/src/crypto/hrss/internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/boringssl/src/crypto/hrss/internal.h')
-rw-r--r--deps/boringssl/src/crypto/hrss/internal.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/deps/boringssl/src/crypto/hrss/internal.h b/deps/boringssl/src/crypto/hrss/internal.h
index c0d9bd2..340b2e0 100644
--- a/deps/boringssl/src/crypto/hrss/internal.h
+++ b/deps/boringssl/src/crypto/hrss/internal.h
@@ -47,10 +47,17 @@ OPENSSL_EXPORT void HRSS_poly3_invert(struct poly3 *out,
#if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_SMALL) && \
defined(OPENSSL_X86_64) && defined(OPENSSL_LINUX)
#define POLY_RQ_MUL_ASM
+// POLY_MUL_RQ_SCRATCH_SPACE is the number of bytes of scratch space needed
+// by the assembly function poly_Rq_mul.
+#define POLY_MUL_RQ_SCRATCH_SPACE (6144 + 6144 + 12288 + 512 + 9408 + 32)
+
// poly_Rq_mul is defined in assembly. Inputs and outputs must be 16-byte-
// aligned.
-extern void poly_Rq_mul(uint16_t r[N + 3], const uint16_t a[N + 3],
- const uint16_t b[N + 3]);
+extern void poly_Rq_mul(
+ uint16_t r[N + 3], const uint16_t a[N + 3], const uint16_t b[N + 3],
+ // The following should be `scratch[POLY_MUL_RQ_SCRATCH_SPACE]` but
+ // GCC 11.1 has a bug with unions that breaks that.
+ uint8_t scratch[]);
#endif