aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/crypto/zinc/chacha20
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-09-27 00:28:47 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-10-02 03:41:49 +0200
commit9cb3ef8ef1618654212b3b6fdd65f5889ce65336 (patch)
treec65b80f5c0a53be30237630861b652360bd710d2 /src/crypto/zinc/chacha20
parentcrypto: ignore ARMv3 (diff)
downloadwireguard-monolithic-historical-9cb3ef8ef1618654212b3b6fdd65f5889ce65336.tar.xz
wireguard-monolithic-historical-9cb3ef8ef1618654212b3b6fdd65f5889ce65336.zip
crypto: prefer IS_ENABLED to ifdefs
Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Diffstat (limited to 'src/crypto/zinc/chacha20')
-rw-r--r--src/crypto/zinc/chacha20/chacha20-arm-glue.h55
-rw-r--r--src/crypto/zinc/chacha20/chacha20-mips-glue.h1
-rw-r--r--src/crypto/zinc/chacha20/chacha20-x86_64-glue.h43
3 files changed, 37 insertions, 62 deletions
diff --git a/src/crypto/zinc/chacha20/chacha20-arm-glue.h b/src/crypto/zinc/chacha20/chacha20-arm-glue.h
index 86cce85..b8d9e12 100644
--- a/src/crypto/zinc/chacha20/chacha20-arm-glue.h
+++ b/src/crypto/zinc/chacha20/chacha20-arm-glue.h
@@ -12,13 +12,9 @@
asmlinkage void chacha20_arm(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
-#if defined(CONFIG_ARM)
asmlinkage void hchacha20_arm(const u32 state[16], u32 out[8]);
-#endif
-#if defined(CONFIG_KERNEL_MODE_NEON)
asmlinkage void chacha20_neon(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
-#endif
static bool chacha20_use_neon __ro_after_init;
@@ -42,15 +38,13 @@ static void __init chacha20_fpu_init(void)
}
static inline bool chacha20_arch(struct chacha20_ctx *state, u8 *dst,
- const u8 *src, size_t len,
+ const u8 *src, const size_t len,
simd_context_t *simd_context)
{
-#if defined(CONFIG_KERNEL_MODE_NEON)
- if (chacha20_use_neon && len >= CHACHA20_BLOCK_SIZE * 3 &&
- simd_use(simd_context))
+ if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && chacha20_use_neon &&
+ len >= CHACHA20_BLOCK_SIZE * 3 && simd_use(simd_context))
chacha20_neon(dst, src, len, state->key, state->counter);
else
-#endif
chacha20_arm(dst, src, len, state->key, state->counter);
state->counter[0] += (len + 63) / 64;
@@ -62,27 +56,26 @@ static inline bool hchacha20_arch(u32 derived_key[CHACHA20_KEY_WORDS],
const u8 key[HCHACHA20_KEY_SIZE],
simd_context_t *simd_context)
{
-#if defined(CONFIG_ARM)
- u32 x[] = { CHACHA20_CONSTANT_EXPA,
- CHACHA20_CONSTANT_ND_3,
- CHACHA20_CONSTANT_2_BY,
- CHACHA20_CONSTANT_TE_K,
- get_unaligned_le32(key + 0),
- get_unaligned_le32(key + 4),
- get_unaligned_le32(key + 8),
- get_unaligned_le32(key + 12),
- get_unaligned_le32(key + 16),
- get_unaligned_le32(key + 20),
- get_unaligned_le32(key + 24),
- get_unaligned_le32(key + 28),
- get_unaligned_le32(nonce + 0),
- get_unaligned_le32(nonce + 4),
- get_unaligned_le32(nonce + 8),
- get_unaligned_le32(nonce + 12)
- };
- hchacha20_arm(x, derived_key);
- return true;
-#else
+ if (IS_ENABLED(CONFIG_ARM)) {
+ u32 x[] = { CHACHA20_CONSTANT_EXPA,
+ CHACHA20_CONSTANT_ND_3,
+ CHACHA20_CONSTANT_2_BY,
+ CHACHA20_CONSTANT_TE_K,
+ get_unaligned_le32(key + 0),
+ get_unaligned_le32(key + 4),
+ get_unaligned_le32(key + 8),
+ get_unaligned_le32(key + 12),
+ get_unaligned_le32(key + 16),
+ get_unaligned_le32(key + 20),
+ get_unaligned_le32(key + 24),
+ get_unaligned_le32(key + 28),
+ get_unaligned_le32(nonce + 0),
+ get_unaligned_le32(nonce + 4),
+ get_unaligned_le32(nonce + 8),
+ get_unaligned_le32(nonce + 12)
+ };
+ hchacha20_arm(x, derived_key);
+ return true;
+ }
return false;
-#endif
}
diff --git a/src/crypto/zinc/chacha20/chacha20-mips-glue.h b/src/crypto/zinc/chacha20/chacha20-mips-glue.h
index 6e70dd6..13e9e8d 100644
--- a/src/crypto/zinc/chacha20/chacha20-mips-glue.h
+++ b/src/crypto/zinc/chacha20/chacha20-mips-glue.h
@@ -5,6 +5,7 @@
asmlinkage void chacha20_mips(u32 state[16], u8 *out, const u8 *in,
const size_t len);
+
static void __init chacha20_fpu_init(void)
{
}
diff --git a/src/crypto/zinc/chacha20/chacha20-x86_64-glue.h b/src/crypto/zinc/chacha20/chacha20-x86_64-glue.h
index 1b7fc05..03075c9 100644
--- a/src/crypto/zinc/chacha20/chacha20-x86_64-glue.h
+++ b/src/crypto/zinc/chacha20/chacha20-x86_64-glue.h
@@ -8,22 +8,16 @@
#include <asm/processor.h>
#include <asm/intel-family.h>
-#ifdef CONFIG_AS_SSSE3
asmlinkage void hchacha20_ssse3(u32 *derived_key, const u8 *nonce,
const u8 *key);
asmlinkage void chacha20_ssse3(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
-#endif
-#ifdef CONFIG_AS_AVX2
asmlinkage void chacha20_avx2(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
-#endif
-#ifdef CONFIG_AS_AVX512
asmlinkage void chacha20_avx512(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
asmlinkage void chacha20_avx512vl(u8 *out, const u8 *in, const size_t len,
const u32 key[8], const u32 counter[4]);
-#endif
static bool chacha20_use_ssse3 __ro_after_init;
static bool chacha20_use_avx2 __ro_after_init;
@@ -60,34 +54,22 @@ static inline bool chacha20_arch(struct chacha20_ctx *state, u8 *dst,
const u8 *src, const size_t len,
simd_context_t *simd_context)
{
- if (!chacha20_use_ssse3 || len <= CHACHA20_BLOCK_SIZE ||
- !simd_use(simd_context))
+ if (!IS_ENABLED(CONFIG_AS_SSSE3) || !chacha20_use_ssse3 ||
+ len <= CHACHA20_BLOCK_SIZE || !simd_use(simd_context))
return false;
-#ifdef CONFIG_AS_AVX512
- if (chacha20_use_avx512 && len >= CHACHA20_BLOCK_SIZE * 8) {
+ if (IS_ENABLED(CONFIG_AS_AVX512) && chacha20_use_avx512 &&
+ len >= CHACHA20_BLOCK_SIZE * 8)
chacha20_avx512(dst, src, len, state->key, state->counter);
- goto success;
- }
- if (chacha20_use_avx512vl && len >= CHACHA20_BLOCK_SIZE * 4) {
+ else if (IS_ENABLED(CONFIG_AS_AVX512) && chacha20_use_avx512vl &&
+ len >= CHACHA20_BLOCK_SIZE * 4)
chacha20_avx512vl(dst, src, len, state->key, state->counter);
- goto success;
- }
-#endif
-#ifdef CONFIG_AS_AVX2
- if (chacha20_use_avx2 && len >= CHACHA20_BLOCK_SIZE * 4) {
+ else if (IS_ENABLED(CONFIG_AS_AVX2) && chacha20_use_avx2 &&
+ len >= CHACHA20_BLOCK_SIZE * 4)
chacha20_avx2(dst, src, len, state->key, state->counter);
- goto success;
- }
-#endif
-#ifdef CONFIG_AS_SSSE3
- if (chacha20_use_ssse3) {
+ else
chacha20_ssse3(dst, src, len, state->key, state->counter);
- goto success;
- }
-#endif
- return false;
-success:
+
state->counter[0] += (len + 63) / 64;
return true;
}
@@ -97,11 +79,10 @@ static inline bool hchacha20_arch(u32 derived_key[CHACHA20_KEY_WORDS],
const u8 key[HCHACHA20_KEY_SIZE],
simd_context_t *simd_context)
{
-#if defined(CONFIG_AS_SSSE3)
- if (chacha20_use_ssse3 && simd_use(simd_context)) {
+ if (IS_ENABLED(CONFIG_AS_SSSE3) && chacha20_use_ssse3 &&
+ simd_use(simd_context)) {
hchacha20_ssse3(derived_key, nonce, key);
return true;
}
-#endif
return false;
}