summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/cast/c_enc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/cast/c_enc.c')
-rw-r--r--src/lib/libcrypto/cast/c_enc.c43
1 files changed, 20 insertions, 23 deletions
diff --git a/src/lib/libcrypto/cast/c_enc.c b/src/lib/libcrypto/cast/c_enc.c
index d998dd4953..0fe2cffecc 100644
--- a/src/lib/libcrypto/cast/c_enc.c
+++ b/src/lib/libcrypto/cast/c_enc.c
@@ -56,12 +56,10 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#include "cast.h" 59#include <openssl/cast.h>
60#include "cast_lcl.h" 60#include "cast_lcl.h"
61 61
62void CAST_encrypt(data,key) 62void CAST_encrypt(CAST_LONG *data, CAST_KEY *key)
63CAST_LONG *data;
64CAST_KEY *key;
65 { 63 {
66 register CAST_LONG l,r,*k,t; 64 register CAST_LONG l,r,*k,t;
67 65
@@ -81,18 +79,19 @@ CAST_KEY *key;
81 E_CAST( 9,k,r,l,+,^,-); 79 E_CAST( 9,k,r,l,+,^,-);
82 E_CAST(10,k,l,r,^,-,+); 80 E_CAST(10,k,l,r,^,-,+);
83 E_CAST(11,k,r,l,-,+,^); 81 E_CAST(11,k,r,l,-,+,^);
84 E_CAST(12,k,l,r,+,^,-); 82 if(!key->short_key)
85 E_CAST(13,k,r,l,^,-,+); 83 {
86 E_CAST(14,k,l,r,-,+,^); 84 E_CAST(12,k,l,r,+,^,-);
87 E_CAST(15,k,r,l,+,^,-); 85 E_CAST(13,k,r,l,^,-,+);
86 E_CAST(14,k,l,r,-,+,^);
87 E_CAST(15,k,r,l,+,^,-);
88 }
88 89
89 data[1]=l&0xffffffffL; 90 data[1]=l&0xffffffffL;
90 data[0]=r&0xffffffffL; 91 data[0]=r&0xffffffffL;
91 } 92 }
92 93
93void CAST_decrypt(data,key) 94void CAST_decrypt(CAST_LONG *data, CAST_KEY *key)
94CAST_LONG *data;
95CAST_KEY *key;
96 { 95 {
97 register CAST_LONG l,r,*k,t; 96 register CAST_LONG l,r,*k,t;
98 97
@@ -100,10 +99,13 @@ CAST_KEY *key;
100 l=data[0]; 99 l=data[0];
101 r=data[1]; 100 r=data[1];
102 101
103 E_CAST(15,k,l,r,+,^,-); 102 if(!key->short_key)
104 E_CAST(14,k,r,l,-,+,^); 103 {
105 E_CAST(13,k,l,r,^,-,+); 104 E_CAST(15,k,l,r,+,^,-);
106 E_CAST(12,k,r,l,+,^,-); 105 E_CAST(14,k,r,l,-,+,^);
106 E_CAST(13,k,l,r,^,-,+);
107 E_CAST(12,k,r,l,+,^,-);
108 }
107 E_CAST(11,k,l,r,-,+,^); 109 E_CAST(11,k,l,r,-,+,^);
108 E_CAST(10,k,r,l,^,-,+); 110 E_CAST(10,k,r,l,^,-,+);
109 E_CAST( 9,k,l,r,+,^,-); 111 E_CAST( 9,k,l,r,+,^,-);
@@ -121,20 +123,15 @@ CAST_KEY *key;
121 data[0]=r&0xffffffffL; 123 data[0]=r&0xffffffffL;
122 } 124 }
123 125
124void CAST_cbc_encrypt(in, out, length, ks, iv, encrypt) 126void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
125unsigned char *in; 127 CAST_KEY *ks, unsigned char *iv, int enc)
126unsigned char *out;
127long length;
128CAST_KEY *ks;
129unsigned char *iv;
130int encrypt;
131 { 128 {
132 register CAST_LONG tin0,tin1; 129 register CAST_LONG tin0,tin1;
133 register CAST_LONG tout0,tout1,xor0,xor1; 130 register CAST_LONG tout0,tout1,xor0,xor1;
134 register long l=length; 131 register long l=length;
135 CAST_LONG tin[2]; 132 CAST_LONG tin[2];
136 133
137 if (encrypt) 134 if (enc)
138 { 135 {
139 n2l(iv,tout0); 136 n2l(iv,tout0);
140 n2l(iv,tout1); 137 n2l(iv,tout1);