summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/modes/gcm128.c
diff options
context:
space:
mode:
authorjsing <>2025-05-21 03:57:59 +0000
committerjsing <>2025-05-21 03:57:59 +0000
commit80cafa36f69e0e544fce4f1ced15c277adaba45c (patch)
treedaa43e2e7e8a26de22c7e4363e2b7546eabc10b1 /src/lib/libcrypto/modes/gcm128.c
parent18e1dba89cc7fe8fb5c145d47d93bef24f4caa35 (diff)
downloadopenbsd-80cafa36f69e0e544fce4f1ced15c277adaba45c.tar.gz
openbsd-80cafa36f69e0e544fce4f1ced15c277adaba45c.tar.bz2
openbsd-80cafa36f69e0e544fce4f1ced15c277adaba45c.zip
Remove more unused code.
Discussed with tb@
Diffstat (limited to '')
-rw-r--r--src/lib/libcrypto/modes/gcm128.c96
1 files changed, 1 insertions, 95 deletions
diff --git a/src/lib/libcrypto/modes/gcm128.c b/src/lib/libcrypto/modes/gcm128.c
index eeb7f921e6..84366234d6 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.41 2025/05/20 18:21:34 tb Exp $ */ 1/* $OpenBSD: gcm128.c,v 1.42 2025/05/21 03:57:59 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 *
@@ -168,7 +168,6 @@ gcm_ghash_4bit(uint64_t Xi[2], const u128 Htable[16],
168 int cnt; 168 int cnt;
169 size_t rem, nlo, nhi; 169 size_t rem, nlo, nhi;
170 170
171#if 1
172 do { 171 do {
173 cnt = 15; 172 cnt = 15;
174 nlo = ((const uint8_t *)Xi)[15]; 173 nlo = ((const uint8_t *)Xi)[15];
@@ -202,99 +201,6 @@ gcm_ghash_4bit(uint64_t Xi[2], const u128 Htable[16],
202 Z.hi ^= Htable[nlo].hi; 201 Z.hi ^= Htable[nlo].hi;
203 Z.lo ^= Htable[nlo].lo; 202 Z.lo ^= Htable[nlo].lo;
204 } 203 }
205#else
206 /*
207 * Extra 256+16 bytes per-key plus 512 bytes shared tables
208 * [should] give ~50% improvement... One could have PACK()-ed
209 * the rem_8bit even here, but the priority is to minimize
210 * cache footprint...
211 */
212 u128 Hshr4[16]; /* Htable shifted right by 4 bits */
213 uint8_t Hshl4[16]; /* Htable shifted left by 4 bits */
214 static const unsigned short rem_8bit[256] = {
215 0x0000, 0x01C2, 0x0384, 0x0246, 0x0708, 0x06CA, 0x048C, 0x054E,
216 0x0E10, 0x0FD2, 0x0D94, 0x0C56, 0x0918, 0x08DA, 0x0A9C, 0x0B5E,
217 0x1C20, 0x1DE2, 0x1FA4, 0x1E66, 0x1B28, 0x1AEA, 0x18AC, 0x196E,
218 0x1230, 0x13F2, 0x11B4, 0x1076, 0x1538, 0x14FA, 0x16BC, 0x177E,
219 0x3840, 0x3982, 0x3BC4, 0x3A06, 0x3F48, 0x3E8A, 0x3CCC, 0x3D0E,
220 0x3650, 0x3792, 0x35D4, 0x3416, 0x3158, 0x309A, 0x32DC, 0x331E,
221 0x2460, 0x25A2, 0x27E4, 0x2626, 0x2368, 0x22AA, 0x20EC, 0x212E,
222 0x2A70, 0x2BB2, 0x29F4, 0x2836, 0x2D78, 0x2CBA, 0x2EFC, 0x2F3E,
223 0x7080, 0x7142, 0x7304, 0x72C6, 0x7788, 0x764A, 0x740C, 0x75CE,
224 0x7E90, 0x7F52, 0x7D14, 0x7CD6, 0x7998, 0x785A, 0x7A1C, 0x7BDE,
225 0x6CA0, 0x6D62, 0x6F24, 0x6EE6, 0x6BA8, 0x6A6A, 0x682C, 0x69EE,
226 0x62B0, 0x6372, 0x6134, 0x60F6, 0x65B8, 0x647A, 0x663C, 0x67FE,
227 0x48C0, 0x4902, 0x4B44, 0x4A86, 0x4FC8, 0x4E0A, 0x4C4C, 0x4D8E,
228 0x46D0, 0x4712, 0x4554, 0x4496, 0x41D8, 0x401A, 0x425C, 0x439E,
229 0x54E0, 0x5522, 0x5764, 0x56A6, 0x53E8, 0x522A, 0x506C, 0x51AE,
230 0x5AF0, 0x5B32, 0x5974, 0x58B6, 0x5DF8, 0x5C3A, 0x5E7C, 0x5FBE,
231 0xE100, 0xE0C2, 0xE284, 0xE346, 0xE608, 0xE7CA, 0xE58C, 0xE44E,
232 0xEF10, 0xEED2, 0xEC94, 0xED56, 0xE818, 0xE9DA, 0xEB9C, 0xEA5E,
233 0xFD20, 0xFCE2, 0xFEA4, 0xFF66, 0xFA28, 0xFBEA, 0xF9AC, 0xF86E,
234 0xF330, 0xF2F2, 0xF0B4, 0xF176, 0xF438, 0xF5FA, 0xF7BC, 0xF67E,
235 0xD940, 0xD882, 0xDAC4, 0xDB06, 0xDE48, 0xDF8A, 0xDDCC, 0xDC0E,
236 0xD750, 0xD692, 0xD4D4, 0xD516, 0xD058, 0xD19A, 0xD3DC, 0xD21E,
237 0xC560, 0xC4A2, 0xC6E4, 0xC726, 0xC268, 0xC3AA, 0xC1EC, 0xC02E,
238 0xCB70, 0xCAB2, 0xC8F4, 0xC936, 0xCC78, 0xCDBA, 0xCFFC, 0xCE3E,
239 0x9180, 0x9042, 0x9204, 0x93C6, 0x9688, 0x974A, 0x950C, 0x94CE,
240 0x9F90, 0x9E52, 0x9C14, 0x9DD6, 0x9898, 0x995A, 0x9B1C, 0x9ADE,
241 0x8DA0, 0x8C62, 0x8E24, 0x8FE6, 0x8AA8, 0x8B6A, 0x892C, 0x88EE,
242 0x83B0, 0x8272, 0x8034, 0x81F6, 0x84B8, 0x857A, 0x873C, 0x86FE,
243 0xA9C0, 0xA802, 0xAA44, 0xAB86, 0xAEC8, 0xAF0A, 0xAD4C, 0xAC8E,
244 0xA7D0, 0xA612, 0xA454, 0xA596, 0xA0D8, 0xA11A, 0xA35C, 0xA29E,
245 0xB5E0, 0xB422, 0xB664, 0xB7A6, 0xB2E8, 0xB32A, 0xB16C, 0xB0AE,
246 0xBBF0, 0xBA32, 0xB874, 0xB9B6, 0xBCF8, 0xBD3A, 0xBF7C, 0xBEBE };
247 /*
248 * This pre-processing phase slows down procedure by approximately
249 * same time as it makes each loop spin faster. In other words
250 * single block performance is approximately same as straightforward
251 * "4-bit" implementation, and then it goes only faster...
252 */
253 for (cnt = 0; cnt < 16; ++cnt) {
254 Z.hi = Htable[cnt].hi;
255 Z.lo = Htable[cnt].lo;
256 Hshr4[cnt].lo = (Z.hi << 60)|(Z.lo >> 4);
257 Hshr4[cnt].hi = (Z.hi >> 4);
258 Hshl4[cnt] = (uint8_t)(Z.lo << 4);
259 }
260
261 do {
262 for (Z.lo = 0, Z.hi = 0, cnt = 15; cnt; --cnt) {
263 nlo = ((const uint8_t *)Xi)[cnt];
264 nlo ^= inp[cnt];
265 nhi = nlo >> 4;
266 nlo &= 0xf;
267
268 Z.hi ^= Htable[nlo].hi;
269 Z.lo ^= Htable[nlo].lo;
270
271 rem = (size_t)Z.lo & 0xff;
272
273 Z.lo = (Z.hi << 56)|(Z.lo >> 8);
274 Z.hi = (Z.hi >> 8);
275
276 Z.hi ^= Hshr4[nhi].hi;
277 Z.lo ^= Hshr4[nhi].lo;
278 Z.hi ^= (uint64_t)rem_8bit[rem ^ Hshl4[nhi]] << 48;
279 }
280
281 nlo = ((const uint8_t *)Xi)[0];
282 nlo ^= inp[0];
283 nhi = nlo >> 4;
284 nlo &= 0xf;
285
286 Z.hi ^= Htable[nlo].hi;
287 Z.lo ^= Htable[nlo].lo;
288
289 rem = (size_t)Z.lo & 0xf;
290
291 Z.lo = (Z.hi << 60)|(Z.lo >> 4);
292 Z.hi = (Z.hi >> 4);
293
294 Z.hi ^= Htable[nhi].hi;
295 Z.lo ^= Htable[nhi].lo;
296 Z.hi ^= ((uint64_t)rem_8bit[rem << 4]) << 48;
297#endif
298 204
299 Xi[0] = htobe64(Z.hi); 205 Xi[0] = htobe64(Z.hi);
300 Xi[1] = htobe64(Z.lo); 206 Xi[1] = htobe64(Z.lo);