[PATCH 02/12] const-time: always avoid comparison operator for byte comparison
Jussi Kivilinna
jussi.kivilinna at iki.fi
Thu Nov 2 19:01:06 CET 2023
* configure.ac: Remove POSSIBLE_CONDITIONAL_BRANCH_IN_BYTE_COMPARISON
macro.
* src/const-time.h (ct_not_equal_byte): Remove
POSSIBLE_CONDITIONAL_BRANCH_IN_BYTE_COMPARISON ifdef.
--
Performance impact of avoiding comparison is negligible, so
remove the option for using comparison to make this easier
maintain (tested on every arch).
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
configure.ac | 5 -----
src/const-time.h | 4 ----
2 files changed, 9 deletions(-)
diff --git a/configure.ac b/configure.ac
index aead8347..4f7c3a52 100644
--- a/configure.ac
+++ b/configure.ac
@@ -121,11 +121,6 @@ AH_BOTTOM([
properly prefixed. */
#define CAMELLIA_EXT_SYM_PREFIX _gcry_
-/* For some architectures or a specific compiler vendor, we need
- to care about possible conditional branch in byte comparison. */
-#if defined(__vax__) || defined(AVR) || defined(_MSC_VER)
-# define POSSIBLE_CONDITIONAL_BRANCH_IN_BYTE_COMPARISON 1
-#endif
#endif /*_GCRYPT_CONFIG_H_INCLUDED*/
])
diff --git a/src/const-time.h b/src/const-time.h
index defe5ff4..4f14f86b 100644
--- a/src/const-time.h
+++ b/src/const-time.h
@@ -29,16 +29,12 @@
static inline unsigned int
ct_not_equal_byte (unsigned char b0, unsigned char b1)
{
-#ifdef POSSIBLE_CONDITIONAL_BRANCH_IN_BYTE_COMPARISON
unsigned int diff;
diff = b0;
diff ^= b1;
return (0U - diff) >> (sizeof (unsigned int)*8 - 1);
-#else
- return b0 != b1;
-#endif
}
/* Compare byte-arrays of length LEN, return 1 if it's not same, 0
--
2.40.1
More information about the Gcrypt-devel
mailing list