diff options
author | beck <> | 2023-07-07 08:29:37 +0000 |
---|---|---|
committer | beck <> | 2023-07-07 08:29:37 +0000 |
commit | 216740b04f3cd3f53da444878e4a5ba56622399b (patch) | |
tree | a85e0a8e2a66a28f0db3722a7116f39457f4b6cb /src | |
parent | 21eddabc863b067714fdd732d1a7466ddad0cda4 (diff) | |
download | openbsd-216740b04f3cd3f53da444878e4a5ba56622399b.tar.gz openbsd-216740b04f3cd3f53da444878e4a5ba56622399b.tar.bz2 openbsd-216740b04f3cd3f53da444878e4a5ba56622399b.zip |
Hit rc2 with the loving mallet of knfmt.
ok tb@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/rc2/rc2.h | 39 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2_cbc.c | 317 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2_ecb.c | 44 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2_local.h | 155 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2_skey.c | 81 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2cfb64.c | 113 | ||||
-rw-r--r-- | src/lib/libcrypto/rc2/rc2ofb64.c | 89 |
7 files changed, 425 insertions, 413 deletions
diff --git a/src/lib/libcrypto/rc2/rc2.h b/src/lib/libcrypto/rc2/rc2.h index 21511ff36e..09c6c08a51 100644 --- a/src/lib/libcrypto/rc2/rc2.h +++ b/src/lib/libcrypto/rc2/rc2.h | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2.h,v 1.11 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: rc2.h,v 1.12 2023/07/07 08:29:37 beck Exp $ */ |
2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -75,24 +75,23 @@ | |||
75 | extern "C" { | 75 | extern "C" { |
76 | #endif | 76 | #endif |
77 | 77 | ||
78 | typedef struct rc2_key_st | 78 | typedef struct rc2_key_st { |
79 | { | ||
80 | RC2_INT data[64]; | 79 | RC2_INT data[64]; |
81 | } RC2_KEY; | 80 | } RC2_KEY; |
82 | 81 | ||
83 | void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits); | 82 | void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); |
84 | void RC2_ecb_encrypt(const unsigned char *in,unsigned char *out,RC2_KEY *key, | 83 | void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, RC2_KEY *key, |
85 | int enc); | 84 | int enc); |
86 | void RC2_encrypt(unsigned long *data,RC2_KEY *key); | 85 | void RC2_encrypt(unsigned long *data, RC2_KEY *key); |
87 | void RC2_decrypt(unsigned long *data,RC2_KEY *key); | 86 | void RC2_decrypt(unsigned long *data, RC2_KEY *key); |
88 | void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, | 87 | void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, |
89 | RC2_KEY *ks, unsigned char *iv, int enc); | 88 | RC2_KEY *ks, unsigned char *iv, int enc); |
90 | void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, | 89 | void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, |
91 | long length, RC2_KEY *schedule, unsigned char *ivec, | 90 | long length, RC2_KEY *schedule, unsigned char *ivec, |
92 | int *num, int enc); | 91 | int *num, int enc); |
93 | void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, | 92 | void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, |
94 | long length, RC2_KEY *schedule, unsigned char *ivec, | 93 | long length, RC2_KEY *schedule, unsigned char *ivec, |
95 | int *num); | 94 | int *num); |
96 | 95 | ||
97 | #ifdef __cplusplus | 96 | #ifdef __cplusplus |
98 | } | 97 | } |
diff --git a/src/lib/libcrypto/rc2/rc2_cbc.c b/src/lib/libcrypto/rc2/rc2_cbc.c index 44204affbf..c4a58384db 100644 --- a/src/lib/libcrypto/rc2/rc2_cbc.c +++ b/src/lib/libcrypto/rc2/rc2_cbc.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2_cbc.c,v 1.6 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2_cbc.c,v 1.7 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -59,168 +59,175 @@ | |||
59 | #include <openssl/rc2.h> | 59 | #include <openssl/rc2.h> |
60 | #include "rc2_local.h" | 60 | #include "rc2_local.h" |
61 | 61 | ||
62 | void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, | 62 | void |
63 | RC2_KEY *ks, unsigned char *iv, int encrypt) | 63 | RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, |
64 | { | 64 | RC2_KEY *ks, unsigned char *iv, int encrypt) |
65 | unsigned long tin0,tin1; | 65 | { |
66 | unsigned long tout0,tout1,xor0,xor1; | 66 | unsigned long tin0, tin1; |
67 | long l=length; | 67 | unsigned long tout0, tout1, xor0, xor1; |
68 | long l = length; | ||
68 | unsigned long tin[2]; | 69 | unsigned long tin[2]; |
69 | 70 | ||
70 | if (encrypt) | 71 | if (encrypt) { |
72 | c2l(iv, tout0); | ||
73 | c2l(iv, tout1); | ||
74 | iv -= 8; | ||
75 | for (l -= 8; l >= 0; l -= 8) | ||
71 | { | 76 | { |
72 | c2l(iv,tout0); | 77 | c2l(in, tin0); |
73 | c2l(iv,tout1); | 78 | c2l(in, tin1); |
74 | iv-=8; | 79 | tin0 ^= tout0; |
75 | for (l-=8; l>=0; l-=8) | 80 | tin1 ^= tout1; |
76 | { | 81 | tin[0] = tin0; |
77 | c2l(in,tin0); | 82 | tin[1] = tin1; |
78 | c2l(in,tin1); | 83 | RC2_encrypt(tin, ks); |
79 | tin0^=tout0; | 84 | tout0 = tin[0]; |
80 | tin1^=tout1; | 85 | l2c(tout0, out); |
81 | tin[0]=tin0; | 86 | tout1 = tin[1]; |
82 | tin[1]=tin1; | 87 | l2c(tout1, out); |
83 | RC2_encrypt(tin,ks); | 88 | } |
84 | tout0=tin[0]; l2c(tout0,out); | 89 | if (l != -8) { |
85 | tout1=tin[1]; l2c(tout1,out); | 90 | c2ln(in, tin0, tin1, l + 8); |
86 | } | 91 | tin0 ^= tout0; |
87 | if (l != -8) | 92 | tin1 ^= tout1; |
88 | { | 93 | tin[0] = tin0; |
89 | c2ln(in,tin0,tin1,l+8); | 94 | tin[1] = tin1; |
90 | tin0^=tout0; | 95 | RC2_encrypt(tin, ks); |
91 | tin1^=tout1; | 96 | tout0 = tin[0]; |
92 | tin[0]=tin0; | 97 | l2c(tout0, out); |
93 | tin[1]=tin1; | 98 | tout1 = tin[1]; |
94 | RC2_encrypt(tin,ks); | 99 | l2c(tout1, out); |
95 | tout0=tin[0]; l2c(tout0,out); | ||
96 | tout1=tin[1]; l2c(tout1,out); | ||
97 | } | ||
98 | l2c(tout0,iv); | ||
99 | l2c(tout1,iv); | ||
100 | } | 100 | } |
101 | else | 101 | l2c(tout0, iv); |
102 | l2c(tout1, iv); | ||
103 | } else { | ||
104 | c2l(iv, xor0); | ||
105 | c2l(iv, xor1); | ||
106 | iv -= 8; | ||
107 | for (l -= 8; l >= 0; l -= 8) | ||
102 | { | 108 | { |
103 | c2l(iv,xor0); | 109 | c2l(in, tin0); |
104 | c2l(iv,xor1); | 110 | tin[0] = tin0; |
105 | iv-=8; | 111 | c2l(in, tin1); |
106 | for (l-=8; l>=0; l-=8) | 112 | tin[1] = tin1; |
107 | { | 113 | RC2_decrypt(tin, ks); |
108 | c2l(in,tin0); tin[0]=tin0; | 114 | tout0 = tin[0] ^ xor0; |
109 | c2l(in,tin1); tin[1]=tin1; | 115 | tout1 = tin[1] ^ xor1; |
110 | RC2_decrypt(tin,ks); | 116 | l2c(tout0, out); |
111 | tout0=tin[0]^xor0; | 117 | l2c(tout1, out); |
112 | tout1=tin[1]^xor1; | 118 | xor0 = tin0; |
113 | l2c(tout0,out); | 119 | xor1 = tin1; |
114 | l2c(tout1,out); | ||
115 | xor0=tin0; | ||
116 | xor1=tin1; | ||
117 | } | ||
118 | if (l != -8) | ||
119 | { | ||
120 | c2l(in,tin0); tin[0]=tin0; | ||
121 | c2l(in,tin1); tin[1]=tin1; | ||
122 | RC2_decrypt(tin,ks); | ||
123 | tout0=tin[0]^xor0; | ||
124 | tout1=tin[1]^xor1; | ||
125 | l2cn(tout0,tout1,out,l+8); | ||
126 | xor0=tin0; | ||
127 | xor1=tin1; | ||
128 | } | ||
129 | l2c(xor0,iv); | ||
130 | l2c(xor1,iv); | ||
131 | } | 120 | } |
132 | tin0=tin1=tout0=tout1=xor0=xor1=0; | 121 | if (l != -8) { |
133 | tin[0]=tin[1]=0; | 122 | c2l(in, tin0); |
123 | tin[0] = tin0; | ||
124 | c2l(in, tin1); | ||
125 | tin[1] = tin1; | ||
126 | RC2_decrypt(tin, ks); | ||
127 | tout0 = tin[0] ^ xor0; | ||
128 | tout1 = tin[1] ^ xor1; | ||
129 | l2cn(tout0, tout1, out, l + 8); | ||
130 | xor0 = tin0; | ||
131 | xor1 = tin1; | ||
132 | } | ||
133 | l2c(xor0, iv); | ||
134 | l2c(xor1, iv); | ||
134 | } | 135 | } |
135 | 136 | tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0; | |
136 | void RC2_encrypt(unsigned long *d, RC2_KEY *key) | 137 | tin[0] = tin[1] = 0; |
137 | { | 138 | } |
138 | int i,n; | 139 | |
139 | RC2_INT *p0,*p1; | 140 | void |
140 | RC2_INT x0,x1,x2,x3,t; | 141 | RC2_encrypt(unsigned long *d, RC2_KEY *key) |
142 | { | ||
143 | int i, n; | ||
144 | RC2_INT *p0, *p1; | ||
145 | RC2_INT x0, x1, x2, x3, t; | ||
141 | unsigned long l; | 146 | unsigned long l; |
142 | 147 | ||
143 | l=d[0]; | 148 | l = d[0]; |
144 | x0=(RC2_INT)l&0xffff; | 149 | x0 = (RC2_INT)l & 0xffff; |
145 | x1=(RC2_INT)(l>>16L); | 150 | x1 = (RC2_INT)(l >> 16L); |
146 | l=d[1]; | 151 | l = d[1]; |
147 | x2=(RC2_INT)l&0xffff; | 152 | x2 = (RC2_INT)l & 0xffff; |
148 | x3=(RC2_INT)(l>>16L); | 153 | x3 = (RC2_INT)(l >> 16L); |
149 | 154 | ||
150 | n=3; | 155 | n = 3; |
151 | i=5; | 156 | i = 5; |
152 | 157 | ||
153 | p0=p1= &(key->data[0]); | 158 | p0 = p1 = &(key->data[0]); |
154 | for (;;) | 159 | for (;;) { |
155 | { | 160 | t = (x0 + (x1 & ~x3) + (x2 & x3) + *(p0++)) & 0xffff; |
156 | t=(x0+(x1& ~x3)+(x2&x3)+ *(p0++))&0xffff; | 161 | x0 = (t << 1)|(t >> 15); |
157 | x0=(t<<1)|(t>>15); | 162 | t = (x1 + (x2 & ~x0) + (x3 & x0) + *(p0++)) & 0xffff; |
158 | t=(x1+(x2& ~x0)+(x3&x0)+ *(p0++))&0xffff; | 163 | x1 = (t << 2)|(t >> 14); |
159 | x1=(t<<2)|(t>>14); | 164 | t = (x2 + (x3 & ~x1) + (x0 & x1) + *(p0++)) & 0xffff; |
160 | t=(x2+(x3& ~x1)+(x0&x1)+ *(p0++))&0xffff; | 165 | x2 = (t << 3)|(t >> 13); |
161 | x2=(t<<3)|(t>>13); | 166 | t = (x3 + (x0 & ~x2) + (x1 & x2) + *(p0++)) & 0xffff; |
162 | t=(x3+(x0& ~x2)+(x1&x2)+ *(p0++))&0xffff; | 167 | x3 = (t << 5)|(t >> 11); |
163 | x3=(t<<5)|(t>>11); | 168 | |
164 | 169 | if (--i == 0) { | |
165 | if (--i == 0) | 170 | if (--n == 0) |
166 | { | 171 | break; |
167 | if (--n == 0) break; | 172 | i = (n == 2) ? 6 : 5; |
168 | i=(n == 2)?6:5; | 173 | |
169 | 174 | x0 += p1[x3 & 0x3f]; | |
170 | x0+=p1[x3&0x3f]; | 175 | x1 += p1[x0 & 0x3f]; |
171 | x1+=p1[x0&0x3f]; | 176 | x2 += p1[x1 & 0x3f]; |
172 | x2+=p1[x1&0x3f]; | 177 | x3 += p1[x2 & 0x3f]; |
173 | x3+=p1[x2&0x3f]; | ||
174 | } | ||
175 | } | 178 | } |
176 | |||
177 | d[0]=(unsigned long)(x0&0xffff)|((unsigned long)(x1&0xffff)<<16L); | ||
178 | d[1]=(unsigned long)(x2&0xffff)|((unsigned long)(x3&0xffff)<<16L); | ||
179 | } | 179 | } |
180 | 180 | ||
181 | void RC2_decrypt(unsigned long *d, RC2_KEY *key) | 181 | d[0] = (unsigned long)(x0 & 0xffff)|((unsigned long)(x1 & 0xffff) << |
182 | { | 182 | 16L); |
183 | int i,n; | 183 | d[1] = (unsigned long)(x2 & 0xffff)|((unsigned long)(x3 & 0xffff) << |
184 | RC2_INT *p0,*p1; | 184 | 16L); |
185 | RC2_INT x0,x1,x2,x3,t; | 185 | } |
186 | |||
187 | void | ||
188 | RC2_decrypt(unsigned long *d, RC2_KEY *key) | ||
189 | { | ||
190 | int i, n; | ||
191 | RC2_INT *p0, *p1; | ||
192 | RC2_INT x0, x1, x2, x3, t; | ||
186 | unsigned long l; | 193 | unsigned long l; |
187 | 194 | ||
188 | l=d[0]; | 195 | l = d[0]; |
189 | x0=(RC2_INT)l&0xffff; | 196 | x0 = (RC2_INT)l & 0xffff; |
190 | x1=(RC2_INT)(l>>16L); | 197 | x1 = (RC2_INT)(l >> 16L); |
191 | l=d[1]; | 198 | l = d[1]; |
192 | x2=(RC2_INT)l&0xffff; | 199 | x2 = (RC2_INT)l & 0xffff; |
193 | x3=(RC2_INT)(l>>16L); | 200 | x3 = (RC2_INT)(l >> 16L); |
194 | 201 | ||
195 | n=3; | 202 | n = 3; |
196 | i=5; | 203 | i = 5; |
197 | 204 | ||
198 | p0= &(key->data[63]); | 205 | p0 = &(key->data[63]); |
199 | p1= &(key->data[0]); | 206 | p1 = &(key->data[0]); |
200 | for (;;) | 207 | for (;;) { |
201 | { | 208 | t = ((x3 << 11)|(x3 >> 5)) & 0xffff; |
202 | t=((x3<<11)|(x3>>5))&0xffff; | 209 | x3 = (t - (x0 & ~x2) - (x1 & x2) - *(p0--)) & 0xffff; |
203 | x3=(t-(x0& ~x2)-(x1&x2)- *(p0--))&0xffff; | 210 | t = ((x2 << 13)|(x2 >> 3)) & 0xffff; |
204 | t=((x2<<13)|(x2>>3))&0xffff; | 211 | x2 = (t - (x3 & ~x1) - (x0 & x1) - *(p0--)) & 0xffff; |
205 | x2=(t-(x3& ~x1)-(x0&x1)- *(p0--))&0xffff; | 212 | t = ((x1 << 14)|(x1 >> 2)) & 0xffff; |
206 | t=((x1<<14)|(x1>>2))&0xffff; | 213 | x1 = (t - (x2 & ~x0) - (x3 & x0) - *(p0--)) & 0xffff; |
207 | x1=(t-(x2& ~x0)-(x3&x0)- *(p0--))&0xffff; | 214 | t = ((x0 << 15)|(x0 >> 1)) & 0xffff; |
208 | t=((x0<<15)|(x0>>1))&0xffff; | 215 | x0 = (t - (x1 & ~x3) - (x2 & x3) - *(p0--)) & 0xffff; |
209 | x0=(t-(x1& ~x3)-(x2&x3)- *(p0--))&0xffff; | 216 | |
210 | 217 | if (--i == 0) { | |
211 | if (--i == 0) | 218 | if (--n == 0) |
212 | { | 219 | break; |
213 | if (--n == 0) break; | 220 | i = (n == 2) ? 6 : 5; |
214 | i=(n == 2)?6:5; | 221 | |
215 | 222 | x3 = (x3 - p1[x2 & 0x3f]) & 0xffff; | |
216 | x3=(x3-p1[x2&0x3f])&0xffff; | 223 | x2 = (x2 - p1[x1 & 0x3f]) & 0xffff; |
217 | x2=(x2-p1[x1&0x3f])&0xffff; | 224 | x1 = (x1 - p1[x0 & 0x3f]) & 0xffff; |
218 | x1=(x1-p1[x0&0x3f])&0xffff; | 225 | x0 = (x0 - p1[x3 & 0x3f]) & 0xffff; |
219 | x0=(x0-p1[x3&0x3f])&0xffff; | ||
220 | } | ||
221 | } | 226 | } |
222 | |||
223 | d[0]=(unsigned long)(x0&0xffff)|((unsigned long)(x1&0xffff)<<16L); | ||
224 | d[1]=(unsigned long)(x2&0xffff)|((unsigned long)(x3&0xffff)<<16L); | ||
225 | } | 227 | } |
226 | 228 | ||
229 | d[0] = (unsigned long)(x0 & 0xffff)|((unsigned long)(x1 & 0xffff) << | ||
230 | 16L); | ||
231 | d[1] = (unsigned long)(x2 & 0xffff)|((unsigned long)(x3 & 0xffff) << | ||
232 | 16L); | ||
233 | } | ||
diff --git a/src/lib/libcrypto/rc2/rc2_ecb.c b/src/lib/libcrypto/rc2/rc2_ecb.c index 84a671a572..c87cd99170 100644 --- a/src/lib/libcrypto/rc2/rc2_ecb.c +++ b/src/lib/libcrypto/rc2/rc2_ecb.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2_ecb.c,v 1.7 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2_ecb.c,v 1.8 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -68,19 +68,23 @@ | |||
68 | * Date: 11 Feb 1996 06:45:03 GMT | 68 | * Date: 11 Feb 1996 06:45:03 GMT |
69 | */ | 69 | */ |
70 | 70 | ||
71 | void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, RC2_KEY *ks, | 71 | void |
72 | int encrypt) | 72 | RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, RC2_KEY *ks, |
73 | { | 73 | int encrypt) |
74 | unsigned long l,d[2]; | 74 | { |
75 | unsigned long l, d[2]; | ||
75 | 76 | ||
76 | c2l(in,l); d[0]=l; | 77 | c2l(in, l); |
77 | c2l(in,l); d[1]=l; | 78 | d[0] = l; |
79 | c2l(in, l); | ||
80 | d[1] = l; | ||
78 | if (encrypt) | 81 | if (encrypt) |
79 | RC2_encrypt(d,ks); | 82 | RC2_encrypt(d, ks); |
80 | else | 83 | else |
81 | RC2_decrypt(d,ks); | 84 | RC2_decrypt(d, ks); |
82 | l=d[0]; l2c(l,out); | 85 | l = d[0]; |
83 | l=d[1]; l2c(l,out); | 86 | l2c(l, out); |
84 | l=d[0]=d[1]=0; | 87 | l = d[1]; |
85 | } | 88 | l2c(l, out); |
86 | 89 | l = d[0] = d[1] = 0; | |
90 | } | ||
diff --git a/src/lib/libcrypto/rc2/rc2_local.h b/src/lib/libcrypto/rc2/rc2_local.h index c8bb468d1d..64c9c5388d 100644 --- a/src/lib/libcrypto/rc2/rc2_local.h +++ b/src/lib/libcrypto/rc2/rc2_local.h | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2_local.h,v 1.1 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2_local.h,v 1.2 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -57,100 +57,99 @@ | |||
57 | */ | 57 | */ |
58 | 58 | ||
59 | #undef c2l | 59 | #undef c2l |
60 | #define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ | 60 | #define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ |
61 | l|=((unsigned long)(*((c)++)))<< 8L, \ | 61 | l|=((unsigned long)(*((c)++)))<< 8L, \ |
62 | l|=((unsigned long)(*((c)++)))<<16L, \ | 62 | l|=((unsigned long)(*((c)++)))<<16L, \ |
63 | l|=((unsigned long)(*((c)++)))<<24L) | 63 | l|=((unsigned long)(*((c)++)))<<24L) |
64 | 64 | ||
65 | /* NOTE - c is not incremented as per c2l */ | 65 | /* NOTE - c is not incremented as per c2l */ |
66 | #undef c2ln | 66 | #undef c2ln |
67 | #define c2ln(c,l1,l2,n) { \ | 67 | #define c2ln(c,l1,l2,n) { \ |
68 | c+=n; \ | 68 | c+=n; \ |
69 | l1=l2=0; \ | 69 | l1=l2=0; \ |
70 | switch (n) { \ | 70 | switch (n) { \ |
71 | case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ | 71 | case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ |
72 | case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ | 72 | case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ |
73 | case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ | 73 | case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ |
74 | case 5: l2|=((unsigned long)(*(--(c)))); \ | 74 | case 5: l2|=((unsigned long)(*(--(c)))); \ |
75 | case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ | 75 | case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ |
76 | case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ | 76 | case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ |
77 | case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ | 77 | case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ |
78 | case 1: l1|=((unsigned long)(*(--(c)))); \ | 78 | case 1: l1|=((unsigned long)(*(--(c)))); \ |
79 | } \ | 79 | } \ |
80 | } | 80 | } |
81 | 81 | ||
82 | #undef l2c | 82 | #undef l2c |
83 | #define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ | 83 | #define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ |
84 | *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ | 84 | *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ |
85 | *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ | 85 | *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ |
86 | *((c)++)=(unsigned char)(((l)>>24L)&0xff)) | 86 | *((c)++)=(unsigned char)(((l)>>24L)&0xff)) |
87 | 87 | ||
88 | /* NOTE - c is not incremented as per l2c */ | 88 | /* NOTE - c is not incremented as per l2c */ |
89 | #undef l2cn | 89 | #undef l2cn |
90 | #define l2cn(l1,l2,c,n) { \ | 90 | #define l2cn(l1,l2,c,n) { \ |
91 | c+=n; \ | 91 | c+=n; \ |
92 | switch (n) { \ | 92 | switch (n) { \ |
93 | case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \ | 93 | case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff);\ |
94 | case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \ | 94 | case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff);\ |
95 | case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \ | 95 | case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff);\ |
96 | case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \ | 96 | case 5: *(--(c))=(unsigned char)(((l2) )&0xff);\ |
97 | case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \ | 97 | case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff);\ |
98 | case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \ | 98 | case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff);\ |
99 | case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \ | 99 | case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff);\ |
100 | case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \ | 100 | case 1: *(--(c))=(unsigned char)(((l1) )&0xff);\ |
101 | } \ | 101 | } \ |
102 | } | 102 | } |
103 | 103 | ||
104 | /* NOTE - c is not incremented as per n2l */ | 104 | /* NOTE - c is not incremented as per n2l */ |
105 | #define n2ln(c,l1,l2,n) { \ | 105 | #define n2ln(c,l1,l2,n) { \ |
106 | c+=n; \ | 106 | c+=n; \ |
107 | l1=l2=0; \ | 107 | l1=l2=0; \ |
108 | switch (n) { \ | 108 | switch (n) { \ |
109 | case 8: l2 =((unsigned long)(*(--(c)))) ; \ | 109 | case 8: l2 =((unsigned long)(*(--(c)))) ; \ |
110 | case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ | 110 | case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ |
111 | case 6: l2|=((unsigned long)(*(--(c))))<<16; \ | 111 | case 6: l2|=((unsigned long)(*(--(c))))<<16; \ |
112 | case 5: l2|=((unsigned long)(*(--(c))))<<24; \ | 112 | case 5: l2|=((unsigned long)(*(--(c))))<<24; \ |
113 | case 4: l1 =((unsigned long)(*(--(c)))) ; \ | 113 | case 4: l1 =((unsigned long)(*(--(c)))) ; \ |
114 | case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ | 114 | case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ |
115 | case 2: l1|=((unsigned long)(*(--(c))))<<16; \ | 115 | case 2: l1|=((unsigned long)(*(--(c))))<<16; \ |
116 | case 1: l1|=((unsigned long)(*(--(c))))<<24; \ | 116 | case 1: l1|=((unsigned long)(*(--(c))))<<24; \ |
117 | } \ | 117 | } \ |
118 | } | 118 | } |
119 | 119 | ||
120 | /* NOTE - c is not incremented as per l2n */ | 120 | /* NOTE - c is not incremented as per l2n */ |
121 | #define l2nn(l1,l2,c,n) { \ | 121 | #define l2nn(l1,l2,c,n) { \ |
122 | c+=n; \ | 122 | c+=n; \ |
123 | switch (n) { \ | 123 | switch (n) { \ |
124 | case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \ | 124 | case 8: *(--(c))=(unsigned char)(((l2) )&0xff);\ |
125 | case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \ | 125 | case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff);\ |
126 | case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \ | 126 | case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff);\ |
127 | case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \ | 127 | case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff);\ |
128 | case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \ | 128 | case 4: *(--(c))=(unsigned char)(((l1) )&0xff);\ |
129 | case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \ | 129 | case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff);\ |
130 | case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \ | 130 | case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff);\ |
131 | case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \ | 131 | case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff);\ |
132 | } \ | 132 | } \ |
133 | } | 133 | } |
134 | 134 | ||
135 | #undef n2l | 135 | #undef n2l |
136 | #define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ | 136 | #define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ |
137 | l|=((unsigned long)(*((c)++)))<<16L, \ | 137 | l|=((unsigned long)(*((c)++)))<<16L, \ |
138 | l|=((unsigned long)(*((c)++)))<< 8L, \ | 138 | l|=((unsigned long)(*((c)++)))<< 8L, \ |
139 | l|=((unsigned long)(*((c)++)))) | 139 | l|=((unsigned long)(*((c)++)))) |
140 | 140 | ||
141 | #undef l2n | 141 | #undef l2n |
142 | #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \ | 142 | #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \ |
143 | *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ | 143 | *((c)++)=(unsigned char)(((l)>>16L)&0xff), \ |
144 | *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ | 144 | *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \ |
145 | *((c)++)=(unsigned char)(((l) )&0xff)) | 145 | *((c)++)=(unsigned char)(((l) )&0xff)) |
146 | 146 | ||
147 | #define C_RC2(n) \ | 147 | #define C_RC2(n) \ |
148 | t=(x0+(x1& ~x3)+(x2&x3)+ *(p0++))&0xffff; \ | 148 | t=(x0+(x1& ~x3)+(x2&x3)+ *(p0++))&0xffff; \ |
149 | x0=(t<<1)|(t>>15); \ | 149 | x0=(t<<1)|(t>>15); \ |
150 | t=(x1+(x2& ~x0)+(x3&x0)+ *(p0++))&0xffff; \ | 150 | t=(x1+(x2& ~x0)+(x3&x0)+ *(p0++))&0xffff; \ |
151 | x1=(t<<2)|(t>>14); \ | 151 | x1=(t<<2)|(t>>14); \ |
152 | t=(x2+(x3& ~x1)+(x0&x1)+ *(p0++))&0xffff; \ | 152 | t=(x2+(x3& ~x1)+(x0&x1)+ *(p0++))&0xffff; \ |
153 | x2=(t<<3)|(t>>13); \ | 153 | x2=(t<<3)|(t>>13); \ |
154 | t=(x3+(x0& ~x2)+(x1&x2)+ *(p0++))&0xffff; \ | 154 | t=(x3+(x0& ~x2)+(x1&x2)+ *(p0++))&0xffff; \ |
155 | x3=(t<<5)|(t>>11); | 155 | x3=(t<<5)|(t>>11); |
156 | |||
diff --git a/src/lib/libcrypto/rc2/rc2_skey.c b/src/lib/libcrypto/rc2/rc2_skey.c index 82161b16f3..640ff7ad9b 100644 --- a/src/lib/libcrypto/rc2/rc2_skey.c +++ b/src/lib/libcrypto/rc2/rc2_skey.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2_skey.c,v 1.13 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2_skey.c,v 1.14 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -91,48 +91,51 @@ static const unsigned char key_table[256]={ | |||
91 | * BSAFE uses the 'retarded' version. What I previously shipped is | 91 | * BSAFE uses the 'retarded' version. What I previously shipped is |
92 | * the same as specifying 1024 for the 'bits' parameter. Bsafe uses | 92 | * the same as specifying 1024 for the 'bits' parameter. Bsafe uses |
93 | * a version where the bits parameter is the same as len*8 */ | 93 | * a version where the bits parameter is the same as len*8 */ |
94 | void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits) | 94 | void |
95 | { | 95 | RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits) |
96 | int i,j; | 96 | { |
97 | int i, j; | ||
97 | unsigned char *k; | 98 | unsigned char *k; |
98 | RC2_INT *ki; | 99 | RC2_INT *ki; |
99 | unsigned int c,d; | 100 | unsigned int c, d; |
100 | 101 | ||
101 | k= (unsigned char *)&(key->data[0]); | 102 | k = (unsigned char *)&(key->data[0]); |
102 | *k=0; /* for if there is a zero length key */ | 103 | *k = 0; /* for if there is a zero length key */ |
103 | 104 | ||
104 | if (len > 128) len=128; | 105 | if (len > 128) |
105 | if (bits <= 0) bits=1024; | 106 | len = 128; |
106 | if (bits > 1024) bits=1024; | 107 | if (bits <= 0) |
108 | bits = 1024; | ||
109 | if (bits > 1024) | ||
110 | bits = 1024; | ||
107 | 111 | ||
108 | for (i=0; i<len; i++) | 112 | for (i = 0; i < len; i++) |
109 | k[i]=data[i]; | 113 | k[i] = data[i]; |
110 | 114 | ||
111 | /* expand table */ | 115 | /* expand table */ |
112 | d=k[len-1]; | 116 | d = k[len - 1]; |
113 | j=0; | 117 | j = 0; |
114 | for (i=len; i < 128; i++,j++) | 118 | for (i = len; i < 128; i++, j++) |
115 | { | 119 | { |
116 | d=key_table[(k[j]+d)&0xff]; | 120 | d = key_table[(k[j] + d) & 0xff]; |
117 | k[i]=d; | 121 | k[i] = d; |
118 | } | 122 | } |
119 | 123 | ||
120 | /* hmm.... key reduction to 'bits' bits */ | 124 | /* hmm.... key reduction to 'bits' bits */ |
121 | 125 | ||
122 | j=(bits+7)>>3; | 126 | j = (bits + 7) >> 3; |
123 | i=128-j; | 127 | i = 128 - j; |
124 | c= (0xff>>(-bits & 0x07)); | 128 | c = (0xff >> (-bits & 0x07)); |
125 | 129 | ||
126 | d=key_table[k[i]&c]; | 130 | d = key_table[k[i] & c]; |
127 | k[i]=d; | 131 | k[i] = d; |
128 | while (i--) | 132 | while (i--) { |
129 | { | 133 | d = key_table[k[i + j] ^ d]; |
130 | d=key_table[k[i+j]^d]; | 134 | k[i] = d; |
131 | k[i]=d; | 135 | } |
132 | } | ||
133 | 136 | ||
134 | /* copy from bytes into RC2_INT's */ | 137 | /* copy from bytes into RC2_INT's */ |
135 | ki= &(key->data[63]); | 138 | ki = &(key->data[63]); |
136 | for (i=127; i>=0; i-=2) | 139 | for (i = 127; i >= 0; i -= 2) |
137 | *(ki--)=((k[i]<<8)|k[i-1])&0xffff; | 140 | *(ki--) = ((k[i] << 8)|k[i - 1]) & 0xffff; |
138 | } | 141 | } |
diff --git a/src/lib/libcrypto/rc2/rc2cfb64.c b/src/lib/libcrypto/rc2/rc2cfb64.c index ebdeb9ba54..e320f5ef94 100644 --- a/src/lib/libcrypto/rc2/rc2cfb64.c +++ b/src/lib/libcrypto/rc2/rc2cfb64.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2cfb64.c,v 1.6 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2cfb64.c,v 1.7 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -64,59 +64,60 @@ | |||
64 | * 64bit block we have used is contained in *num; | 64 | * 64bit block we have used is contained in *num; |
65 | */ | 65 | */ |
66 | 66 | ||
67 | void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, | 67 | void |
68 | long length, RC2_KEY *schedule, unsigned char *ivec, | 68 | RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, |
69 | int *num, int encrypt) | 69 | long length, RC2_KEY *schedule, unsigned char *ivec, |
70 | { | 70 | int *num, int encrypt) |
71 | unsigned long v0,v1,t; | 71 | { |
72 | int n= *num; | 72 | unsigned long v0, v1, t; |
73 | long l=length; | 73 | int n = *num; |
74 | long l = length; | ||
74 | unsigned long ti[2]; | 75 | unsigned long ti[2]; |
75 | unsigned char *iv,c,cc; | 76 | unsigned char *iv, c, cc; |
76 | 77 | ||
77 | iv=(unsigned char *)ivec; | 78 | iv = (unsigned char *)ivec; |
78 | if (encrypt) | 79 | if (encrypt) { |
79 | { | 80 | while (l--) { |
80 | while (l--) | 81 | if (n == 0) { |
81 | { | 82 | c2l(iv, v0); |
82 | if (n == 0) | 83 | ti[0] = v0; |
83 | { | 84 | c2l(iv, v1); |
84 | c2l(iv,v0); ti[0]=v0; | 85 | ti[1] = v1; |
85 | c2l(iv,v1); ti[1]=v1; | 86 | RC2_encrypt((unsigned long *)ti, schedule); |
86 | RC2_encrypt((unsigned long *)ti,schedule); | 87 | iv = (unsigned char *)ivec; |
87 | iv=(unsigned char *)ivec; | 88 | t = ti[0]; |
88 | t=ti[0]; l2c(t,iv); | 89 | l2c(t, iv); |
89 | t=ti[1]; l2c(t,iv); | 90 | t = ti[1]; |
90 | iv=(unsigned char *)ivec; | 91 | l2c(t, iv); |
91 | } | 92 | iv = (unsigned char *)ivec; |
92 | c= *(in++)^iv[n]; | ||
93 | *(out++)=c; | ||
94 | iv[n]=c; | ||
95 | n=(n+1)&0x07; | ||
96 | } | 93 | } |
94 | c = *(in++) ^ iv[n]; | ||
95 | *(out++) = c; | ||
96 | iv[n] = c; | ||
97 | n = (n + 1) & 0x07; | ||
97 | } | 98 | } |
98 | else | 99 | } else { |
99 | { | 100 | while (l--) { |
100 | while (l--) | 101 | if (n == 0) { |
101 | { | 102 | c2l(iv, v0); |
102 | if (n == 0) | 103 | ti[0] = v0; |
103 | { | 104 | c2l(iv, v1); |
104 | c2l(iv,v0); ti[0]=v0; | 105 | ti[1] = v1; |
105 | c2l(iv,v1); ti[1]=v1; | 106 | RC2_encrypt((unsigned long *)ti, schedule); |
106 | RC2_encrypt((unsigned long *)ti,schedule); | 107 | iv = (unsigned char *)ivec; |
107 | iv=(unsigned char *)ivec; | 108 | t = ti[0]; |
108 | t=ti[0]; l2c(t,iv); | 109 | l2c(t, iv); |
109 | t=ti[1]; l2c(t,iv); | 110 | t = ti[1]; |
110 | iv=(unsigned char *)ivec; | 111 | l2c(t, iv); |
111 | } | 112 | iv = (unsigned char *)ivec; |
112 | cc= *(in++); | ||
113 | c=iv[n]; | ||
114 | iv[n]=cc; | ||
115 | *(out++)=c^cc; | ||
116 | n=(n+1)&0x07; | ||
117 | } | 113 | } |
114 | cc = *(in++); | ||
115 | c = iv[n]; | ||
116 | iv[n] = cc; | ||
117 | *(out++) = c ^ cc; | ||
118 | n = (n + 1) & 0x07; | ||
118 | } | 119 | } |
119 | v0=v1=ti[0]=ti[1]=t=c=cc=0; | ||
120 | *num=n; | ||
121 | } | 120 | } |
122 | 121 | v0 = v1 = ti[0] = ti[1] = t = c = cc = 0; | |
122 | *num = n; | ||
123 | } | ||
diff --git a/src/lib/libcrypto/rc2/rc2ofb64.c b/src/lib/libcrypto/rc2/rc2ofb64.c index 2aa241357d..f7cbce6c12 100644 --- a/src/lib/libcrypto/rc2/rc2ofb64.c +++ b/src/lib/libcrypto/rc2/rc2ofb64.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /* $OpenBSD: rc2ofb64.c,v 1.6 2022/11/26 16:08:54 tb Exp $ */ | 1 | /* $OpenBSD: rc2ofb64.c,v 1.7 2023/07/07 08:29:37 beck 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 | * |
5 | * This package is an SSL implementation written | 5 | * This package is an SSL implementation written |
6 | * by Eric Young (eay@cryptsoft.com). | 6 | * by Eric Young (eay@cryptsoft.com). |
7 | * The implementation was written so as to conform with Netscapes SSL. | 7 | * The implementation was written so as to conform with Netscapes SSL. |
8 | * | 8 | * |
9 | * This library is free for commercial and non-commercial use as long as | 9 | * This library is free for commercial and non-commercial use as long as |
10 | * the following conditions are aheared to. The following conditions | 10 | * the following conditions are aheared to. The following conditions |
11 | * apply to all code found in this distribution, be it the RC4, RSA, | 11 | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | 12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | * included with this distribution is covered by the same copyright terms | 13 | * included with this distribution is covered by the same copyright terms |
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | 14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | * | 15 | * |
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | 16 | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | * the code are not to be removed. | 17 | * the code are not to be removed. |
18 | * If this package is used in a product, Eric Young should be given attribution | 18 | * If this package is used in a product, Eric Young should be given attribution |
19 | * as the author of the parts of the library used. | 19 | * as the author of the parts of the library used. |
20 | * This can be in the form of a textual message at program startup or | 20 | * This can be in the form of a textual message at program startup or |
21 | * in documentation (online or textual) provided with the package. | 21 | * in documentation (online or textual) provided with the package. |
22 | * | 22 | * |
23 | * Redistribution and use in source and binary forms, with or without | 23 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 24 | * modification, are permitted provided that the following conditions |
25 | * are met: | 25 | * are met: |
@@ -34,10 +34,10 @@ | |||
34 | * Eric Young (eay@cryptsoft.com)" | 34 | * Eric Young (eay@cryptsoft.com)" |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 35 | * The word 'cryptographic' can be left out if the rouines from the library |
36 | * being used are not cryptographic related :-). | 36 | * being used are not cryptographic related :-). |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 37 | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | * the apps directory (application code) you must include an acknowledgement: | 38 | * the apps directory (application code) you must include an acknowledgement: |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | * | 40 | * |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
@@ -49,7 +49,7 @@ | |||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | * SUCH DAMAGE. | 51 | * SUCH DAMAGE. |
52 | * | 52 | * |
53 | * The licence and distribution terms for any publically available version or | 53 | * The licence and distribution terms for any publically available version or |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 54 | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | * copied and put under another distribution licence | 55 | * copied and put under another distribution licence |
@@ -63,49 +63,48 @@ | |||
63 | * used. The extra state information to record how much of the | 63 | * used. The extra state information to record how much of the |
64 | * 64bit block we have used is contained in *num; | 64 | * 64bit block we have used is contained in *num; |
65 | */ | 65 | */ |
66 | void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, | 66 | void |
67 | long length, RC2_KEY *schedule, unsigned char *ivec, | 67 | RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, |
68 | int *num) | 68 | long length, RC2_KEY *schedule, unsigned char *ivec, |
69 | { | 69 | int *num) |
70 | unsigned long v0,v1,t; | 70 | { |
71 | int n= *num; | 71 | unsigned long v0, v1, t; |
72 | long l=length; | 72 | int n = *num; |
73 | long l = length; | ||
73 | unsigned char d[8]; | 74 | unsigned char d[8]; |
74 | char *dp; | 75 | char *dp; |
75 | unsigned long ti[2]; | 76 | unsigned long ti[2]; |
76 | unsigned char *iv; | 77 | unsigned char *iv; |
77 | int save=0; | 78 | int save = 0; |
78 | 79 | ||
79 | iv=(unsigned char *)ivec; | 80 | iv = (unsigned char *)ivec; |
80 | c2l(iv,v0); | 81 | c2l(iv, v0); |
81 | c2l(iv,v1); | 82 | c2l(iv, v1); |
82 | ti[0]=v0; | 83 | ti[0] = v0; |
83 | ti[1]=v1; | 84 | ti[1] = v1; |
84 | dp=(char *)d; | 85 | dp = (char *)d; |
85 | l2c(v0,dp); | 86 | l2c(v0, dp); |
86 | l2c(v1,dp); | 87 | l2c(v1, dp); |
87 | while (l--) | 88 | while (l--) { |
88 | { | 89 | if (n == 0) { |
89 | if (n == 0) | 90 | RC2_encrypt((unsigned long *)ti, schedule); |
90 | { | 91 | dp = (char *)d; |
91 | RC2_encrypt((unsigned long *)ti,schedule); | 92 | t = ti[0]; |
92 | dp=(char *)d; | 93 | l2c(t, dp); |
93 | t=ti[0]; l2c(t,dp); | 94 | t = ti[1]; |
94 | t=ti[1]; l2c(t,dp); | 95 | l2c(t, dp); |
95 | save++; | 96 | save++; |
96 | } | ||
97 | *(out++)= *(in++)^d[n]; | ||
98 | n=(n+1)&0x07; | ||
99 | } | ||
100 | if (save) | ||
101 | { | ||
102 | v0=ti[0]; | ||
103 | v1=ti[1]; | ||
104 | iv=(unsigned char *)ivec; | ||
105 | l2c(v0,iv); | ||
106 | l2c(v1,iv); | ||
107 | } | 97 | } |
108 | t=v0=v1=ti[0]=ti[1]=0; | 98 | *(out++) = *(in++) ^ d[n]; |
109 | *num=n; | 99 | n = (n + 1) & 0x07; |
110 | } | 100 | } |
111 | 101 | if (save) { | |
102 | v0 = ti[0]; | ||
103 | v1 = ti[1]; | ||
104 | iv = (unsigned char *)ivec; | ||
105 | l2c(v0, iv); | ||
106 | l2c(v1, iv); | ||
107 | } | ||
108 | t = v0 = v1 = ti[0] = ti[1] = 0; | ||
109 | *num = n; | ||
110 | } | ||