diff options
author | jsing <> | 2025-05-18 07:13:48 +0000 |
---|---|---|
committer | jsing <> | 2025-05-18 07:13:48 +0000 |
commit | bc1afd923fa7ed3bad6afe202345ff452445115b (patch) | |
tree | 196fc78ff924c177c8c263280f30bbed1d0505e1 /src | |
parent | 47df9c5ee5f6c874ba14ce2a46d5756a6e8865a5 (diff) | |
download | openbsd-bc1afd923fa7ed3bad6afe202345ff452445115b.tar.gz openbsd-bc1afd923fa7ed3bad6afe202345ff452445115b.tar.bz2 openbsd-bc1afd923fa7ed3bad6afe202345ff452445115b.zip |
Inline REDUCE1BIT macro.
The REDUCE1BIT macro is now only used in one place, so just inline it.
Additionally we do not need separate 32 bit and 64 bit versions - just use
the 64 bit version and let the compiler deal with it (we effectively get
the same code on i386).
ok beck@ joshua@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/modes/gcm128.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/lib/libcrypto/modes/gcm128.c b/src/lib/libcrypto/modes/gcm128.c index 5eb616cef7..334e592aa5 100644 --- a/src/lib/libcrypto/modes/gcm128.c +++ b/src/lib/libcrypto/modes/gcm128.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gcm128.c,v 1.37 2025/05/17 14:43:17 jsing Exp $ */ | 1 | /* $OpenBSD: gcm128.c,v 1.38 2025/05/18 07:13:48 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2010 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2010 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -56,24 +56,13 @@ | |||
56 | #include "modes_local.h" | 56 | #include "modes_local.h" |
57 | 57 | ||
58 | #define PACK(s) ((size_t)(s)<<(sizeof(size_t)*8-16)) | 58 | #define PACK(s) ((size_t)(s)<<(sizeof(size_t)*8-16)) |
59 | #define REDUCE1BIT(V) \ | ||
60 | do { \ | ||
61 | if (sizeof(size_t)==8) { \ | ||
62 | u64 T = U64(0xe100000000000000) & (0-(V.lo&1)); \ | ||
63 | V.lo = (V.hi<<63)|(V.lo>>1); \ | ||
64 | V.hi = (V.hi>>1 )^T; \ | ||
65 | } else { \ | ||
66 | u32 T = 0xe1000000U & (0-(u32)(V.lo&1)); \ | ||
67 | V.lo = (V.hi<<63)|(V.lo>>1); \ | ||
68 | V.hi = (V.hi>>1 )^((u64)T<<32); \ | ||
69 | } \ | ||
70 | } while(0) | ||
71 | 59 | ||
72 | static void | 60 | static void |
73 | gcm_init_4bit(u128 Htable[16], u64 H[2]) | 61 | gcm_init_4bit(u128 Htable[16], u64 H[2]) |
74 | { | 62 | { |
75 | u128 V; | 63 | u128 V; |
76 | int i; | 64 | u64 T; |
65 | int i; | ||
77 | 66 | ||
78 | Htable[0].hi = 0; | 67 | Htable[0].hi = 0; |
79 | Htable[0].lo = 0; | 68 | Htable[0].lo = 0; |
@@ -81,7 +70,9 @@ gcm_init_4bit(u128 Htable[16], u64 H[2]) | |||
81 | V.lo = H[1]; | 70 | V.lo = H[1]; |
82 | 71 | ||
83 | for (Htable[8] = V, i = 4; i > 0; i >>= 1) { | 72 | for (Htable[8] = V, i = 4; i > 0; i >>= 1) { |
84 | REDUCE1BIT(V); | 73 | T = U64(0xe100000000000000) & (0 - (V.lo & 1)); |
74 | V.lo = (V.hi << 63) | (V.lo >> 1); | ||
75 | V.hi = (V.hi >> 1 ) ^ T; | ||
85 | Htable[i] = V; | 76 | Htable[i] = V; |
86 | } | 77 | } |
87 | 78 | ||