diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/rc4/rc4.c | 44 |
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 | } |
