summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rc4
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libcrypto/rc4/rc4_enc.c66
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) \