diff options
Diffstat (limited to 'src/lib/libcrypto/cast/c_enc.c')
| -rw-r--r-- | src/lib/libcrypto/cast/c_enc.c | 43 |
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 | ||
| 62 | void CAST_encrypt(data,key) | 62 | void CAST_encrypt(CAST_LONG *data, CAST_KEY *key) |
| 63 | CAST_LONG *data; | ||
| 64 | CAST_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 | ||
| 93 | void CAST_decrypt(data,key) | 94 | void CAST_decrypt(CAST_LONG *data, CAST_KEY *key) |
| 94 | CAST_LONG *data; | ||
| 95 | CAST_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 | ||
| 124 | void CAST_cbc_encrypt(in, out, length, ks, iv, encrypt) | 126 | void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, |
| 125 | unsigned char *in; | 127 | CAST_KEY *ks, unsigned char *iv, int enc) |
| 126 | unsigned char *out; | ||
| 127 | long length; | ||
| 128 | CAST_KEY *ks; | ||
| 129 | unsigned char *iv; | ||
| 130 | int 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); |
