summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rc4/rc4.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/rc4/rc4.c')
-rw-r--r--src/lib/libcrypto/rc4/rc4.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/src/lib/libcrypto/rc4/rc4.c b/src/lib/libcrypto/rc4/rc4.c
index 930d0d9bb3..56ed43cba7 100644
--- a/src/lib/libcrypto/rc4/rc4.c
+++ b/src/lib/libcrypto/rc4/rc4.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rc4.c,v 1.12 2024/08/11 13:02:39 jsing Exp $ */ 1/* $OpenBSD: rc4.c,v 1.13 2025/01/27 14:02:32 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -196,7 +196,7 @@ rc4_internal(RC4_KEY *key, size_t len, const unsigned char *indata,
196#endif 196#endif
197 } 197 }
198#endif 198#endif
199#define LOOP(in,out) \ 199#define RC4_LOOP(in,out) \
200 x=((x+1)&0xff); \ 200 x=((x+1)&0xff); \
201 tx=d[x]; \ 201 tx=d[x]; \
202 y=(tx+y)&0xff; \ 202 y=(tx+y)&0xff; \
@@ -204,27 +204,21 @@ rc4_internal(RC4_KEY *key, size_t len, const unsigned char *indata,
204 d[y]=tx; \ 204 d[y]=tx; \
205 (out) = d[(tx+ty)&0xff]^ (in); 205 (out) = d[(tx+ty)&0xff]^ (in);
206 206
207#ifndef RC4_INDEX
208#define RC4_LOOP(a,b,i) LOOP(*((a)++),*((b)++))
209#else
210#define RC4_LOOP(a,b,i) LOOP(a[i],b[i])
211#endif
212
213 i = len >> 3; 207 i = len >> 3;
214 if (i) { 208 if (i) {
215 for (;;) { 209 for (;;) {
216 RC4_LOOP(indata, outdata, 0); 210 RC4_LOOP(indata[0], outdata[0]);
217 RC4_LOOP(indata, outdata, 1); 211 RC4_LOOP(indata[1], outdata[1]);
218 RC4_LOOP(indata, outdata, 2); 212 RC4_LOOP(indata[2], outdata[2]);
219 RC4_LOOP(indata, outdata, 3); 213 RC4_LOOP(indata[3], outdata[3]);
220 RC4_LOOP(indata, outdata, 4); 214 RC4_LOOP(indata[4], outdata[4]);
221 RC4_LOOP(indata, outdata, 5); 215 RC4_LOOP(indata[5], outdata[5]);
222 RC4_LOOP(indata, outdata, 6); 216 RC4_LOOP(indata[6], outdata[6]);
223 RC4_LOOP(indata, outdata, 7); 217 RC4_LOOP(indata[7], outdata[7]);
224#ifdef RC4_INDEX 218
225 indata += 8; 219 indata += 8;
226 outdata += 8; 220 outdata += 8;
227#endif 221
228 if (--i == 0) 222 if (--i == 0)
229 break; 223 break;
230 } 224 }
@@ -232,25 +226,25 @@ rc4_internal(RC4_KEY *key, size_t len, const unsigned char *indata,
232 i = len&0x07; 226 i = len&0x07;
233 if (i) { 227 if (i) {
234 for (;;) { 228 for (;;) {
235 RC4_LOOP(indata, outdata, 0); 229 RC4_LOOP(indata[0], outdata[0]);
236 if (--i == 0) 230 if (--i == 0)
237 break; 231 break;
238 RC4_LOOP(indata, outdata, 1); 232 RC4_LOOP(indata[1], outdata[1]);
239 if (--i == 0) 233 if (--i == 0)
240 break; 234 break;
241 RC4_LOOP(indata, outdata, 2); 235 RC4_LOOP(indata[2], outdata[2]);
242 if (--i == 0) 236 if (--i == 0)
243 break; 237 break;
244 RC4_LOOP(indata, outdata, 3); 238 RC4_LOOP(indata[3], outdata[3]);
245 if (--i == 0) 239 if (--i == 0)
246 break; 240 break;
247 RC4_LOOP(indata, outdata, 4); 241 RC4_LOOP(indata[4], outdata[4]);
248 if (--i == 0) 242 if (--i == 0)
249 break; 243 break;
250 RC4_LOOP(indata, outdata, 5); 244 RC4_LOOP(indata[5], outdata[5]);
251 if (--i == 0) 245 if (--i == 0)
252 break; 246 break;
253 RC4_LOOP(indata, outdata, 6); 247 RC4_LOOP(indata[6], outdata[6]);
254 if (--i == 0) 248 if (--i == 0)
255 break; 249 break;
256 } 250 }