diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/libcrypto/rc4/rc4_enc.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/lib/libcrypto/rc4/rc4_enc.c b/src/lib/libcrypto/rc4/rc4_enc.c index 4dacf3f708..bd928b58c9 100644 --- a/src/lib/libcrypto/rc4/rc4_enc.c +++ b/src/lib/libcrypto/rc4/rc4_enc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rc4_enc.c,v 1.15 2015/10/21 16:36:50 jsing Exp $ */ | 1 | /* $OpenBSD: rc4_enc.c,v 1.16 2017/08/13 17:46:24 bcook 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 | * |
@@ -150,43 +150,43 @@ RC4(RC4_KEY *key, size_t len, const unsigned char *indata, | |||
150 | * | 150 | * |
151 | * <appro@fy.chalmers.se> | 151 | * <appro@fy.chalmers.se> |
152 | */ | 152 | */ |
153 | if (BYTE_ORDER != LITTLE_ENDIAN) { /* BIG-ENDIAN CASE */ | 153 | #if BYTE_ORDER == BIG_ENDIAN |
154 | # define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1)) | 154 | # define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1)) |
155 | for (; len & (0 - sizeof(RC4_CHUNK)); len -= sizeof(RC4_CHUNK)) { | 155 | for (; len & (0 - sizeof(RC4_CHUNK)); len -= sizeof(RC4_CHUNK)) { |
156 | ichunk = *(RC4_CHUNK *)indata; | 156 | ichunk = *(RC4_CHUNK *)indata; |
157 | otp = RC4_STEP << BESHFT(0); | 157 | otp = RC4_STEP << BESHFT(0); |
158 | otp |= RC4_STEP << BESHFT(1); | 158 | otp |= RC4_STEP << BESHFT(1); |
159 | otp |= RC4_STEP << BESHFT(2); | 159 | otp |= RC4_STEP << BESHFT(2); |
160 | otp |= RC4_STEP << BESHFT(3); | 160 | otp |= RC4_STEP << BESHFT(3); |
161 | if (sizeof(RC4_CHUNK) == 8) { | 161 | if (sizeof(RC4_CHUNK) == 8) { |
162 | otp |= RC4_STEP << BESHFT(4); | 162 | otp |= RC4_STEP << BESHFT(4); |
163 | otp |= RC4_STEP << BESHFT(5); | 163 | otp |= RC4_STEP << BESHFT(5); |
164 | otp |= RC4_STEP << BESHFT(6); | 164 | otp |= RC4_STEP << BESHFT(6); |
165 | otp |= RC4_STEP << BESHFT(7); | 165 | otp |= RC4_STEP << BESHFT(7); |
166 | } | ||
167 | *(RC4_CHUNK *)outdata = otp^ichunk; | ||
168 | indata += sizeof(RC4_CHUNK); | ||
169 | outdata += sizeof(RC4_CHUNK); | ||
170 | } | 166 | } |
171 | } else { /* LITTLE-ENDIAN CASE */ | 167 | *(RC4_CHUNK *)outdata = otp^ichunk; |
168 | indata += sizeof(RC4_CHUNK); | ||
169 | outdata += sizeof(RC4_CHUNK); | ||
170 | } | ||
171 | #else | ||
172 | # define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1)) | 172 | # define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1)) |
173 | for (; len & (0 - sizeof(RC4_CHUNK)); len -= sizeof(RC4_CHUNK)) { | 173 | for (; len & (0 - sizeof(RC4_CHUNK)); len -= sizeof(RC4_CHUNK)) { |
174 | ichunk = *(RC4_CHUNK *)indata; | 174 | ichunk = *(RC4_CHUNK *)indata; |
175 | otp = RC4_STEP; | 175 | otp = RC4_STEP; |
176 | otp |= RC4_STEP << 8; | 176 | otp |= RC4_STEP << 8; |
177 | otp |= RC4_STEP << 16; | 177 | otp |= RC4_STEP << 16; |
178 | otp |= RC4_STEP << 24; | 178 | otp |= RC4_STEP << 24; |
179 | if (sizeof(RC4_CHUNK) == 8) { | 179 | if (sizeof(RC4_CHUNK) == 8) { |
180 | otp |= RC4_STEP << LESHFT(4); | 180 | otp |= RC4_STEP << LESHFT(4); |
181 | otp |= RC4_STEP << LESHFT(5); | 181 | otp |= RC4_STEP << LESHFT(5); |
182 | otp |= RC4_STEP << LESHFT(6); | 182 | otp |= RC4_STEP << LESHFT(6); |
183 | otp |= RC4_STEP << LESHFT(7); | 183 | otp |= RC4_STEP << LESHFT(7); |
184 | } | ||
185 | *(RC4_CHUNK *)outdata = otp ^ ichunk; | ||
186 | indata += sizeof(RC4_CHUNK); | ||
187 | outdata += sizeof(RC4_CHUNK); | ||
188 | } | 184 | } |
185 | *(RC4_CHUNK *)outdata = otp ^ ichunk; | ||
186 | indata += sizeof(RC4_CHUNK); | ||
187 | outdata += sizeof(RC4_CHUNK); | ||
189 | } | 188 | } |
189 | #endif | ||
190 | } | 190 | } |
191 | #endif | 191 | #endif |
192 | #define LOOP(in,out) \ | 192 | #define LOOP(in,out) \ |