Bug Summary

File:out/../deps/openssl/openssl/crypto/cast/c_enc.c
Warning:line 155, column 19
Although the value stored to 'tout0' is used in the enclosing expression, the value is never actually read from 'tout0'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name c_enc.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/home/maurizio/node-v18.6.0/out -resource-dir /usr/local/lib/clang/16.0.0 -D V8_DEPRECATION_WARNINGS -D V8_IMMINENT_DEPRECATION_WARNINGS -D _GLIBCXX_USE_CXX11_ABI=1 -D NODE_OPENSSL_CONF_NAME=nodejs_conf -D NODE_OPENSSL_HAS_QUIC -D __STDC_FORMAT_MACROS -D OPENSSL_NO_PINSHARED -D OPENSSL_THREADS -D OPENSSL_NO_HW -D OPENSSL_API_COMPAT=0x10100001L -D STATIC_LEGACY -D NDEBUG -D OPENSSL_USE_NODELETE -D L_ENDIAN -D OPENSSL_BUILDING_OPENSSL -D AES_ASM -D BSAES_ASM -D CMLL_ASM -D ECP_NISTZ256_ASM -D GHASH_ASM -D KECCAK1600_ASM -D MD5_ASM -D OPENSSL_BN_ASM_GF2m -D OPENSSL_BN_ASM_MONT -D OPENSSL_BN_ASM_MONT5 -D OPENSSL_CPUID_OBJ -D OPENSSL_IA32_SSE2 -D PADLOCK_ASM -D POLY1305_ASM -D SHA1_ASM -D SHA256_ASM -D SHA512_ASM -D VPAES_ASM -D WHIRLPOOL_ASM -D X25519_ASM -D OPENSSL_PIC -D MODULESDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl/lib/openssl-modules" -D OPENSSLDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl" -D OPENSSLDIR="/etc/ssl" -D ENGINESDIR="/dev/null" -D TERMIOS -I ../deps/openssl/openssl -I ../deps/openssl/openssl/include -I ../deps/openssl/openssl/crypto -I ../deps/openssl/openssl/crypto/include -I ../deps/openssl/openssl/crypto/modes -I ../deps/openssl/openssl/crypto/ec/curve448 -I ../deps/openssl/openssl/crypto/ec/curve448/arch_32 -I ../deps/openssl/openssl/providers/common/include -I ../deps/openssl/openssl/providers/implementations/include -I ../deps/openssl/config -I ../deps/openssl/config/archs/linux-x86_64/asm -I ../deps/openssl/config/archs/linux-x86_64/asm/include -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto/include/internal -I ../deps/openssl/config/archs/linux-x86_64/asm/providers/common/include -internal-isystem /usr/local/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -Wno-unused-parameter -Wno-missing-field-initializers -Wno-old-style-declaration -fdebug-compilation-dir=/home/maurizio/node-v18.6.0/out -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/scan-build-2022-08-22-142216-507842-1 -x c ../deps/openssl/openssl/crypto/cast/c_enc.c
1/*
2 * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10/*
11 * CAST low level APIs are deprecated for public use, but still ok for
12 * internal use.
13 */
14#include "internal/deprecated.h"
15
16#include <openssl/cast.h>
17#include "cast_local.h"
18
19void CAST_encrypt(CAST_LONGunsigned int *data, const CAST_KEY *key)
20{
21 CAST_LONGunsigned int l, r, t;
22 const CAST_LONGunsigned int *k;
23
24 k = &(key->data[0]);
25 l = data[0];
26 r = data[1];
27
28 E_CAST(0, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[0*2] + r)&0xffffffff; t=((((
t)<<((k[0*2+1])))&0xffffffffL)|((t)>>((32-((k
[0*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
29 E_CAST(1, k, r, l, ^, -, +){ unsigned int a,b,c,d; t=(k[1*2] ^ l)&0xffffffff; t=((((
t)<<((k[1*2+1])))&0xffffffffL)|((t)>>((32-((k
[1*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
30 E_CAST(2, k, l, r, -, +, ^){ unsigned int a,b,c,d; t=(k[2*2] - r)&0xffffffff; t=((((
t)<<((k[2*2+1])))&0xffffffffL)|((t)>>((32-((k
[2*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
31 E_CAST(3, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[3*2] + l)&0xffffffff; t=((((
t)<<((k[3*2+1])))&0xffffffffL)|((t)>>((32-((k
[3*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
32 E_CAST(4, k, l, r, ^, -, +){ unsigned int a,b,c,d; t=(k[4*2] ^ r)&0xffffffff; t=((((
t)<<((k[4*2+1])))&0xffffffffL)|((t)>>((32-((k
[4*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
33 E_CAST(5, k, r, l, -, +, ^){ unsigned int a,b,c,d; t=(k[5*2] - l)&0xffffffff; t=((((
t)<<((k[5*2+1])))&0xffffffffL)|((t)>>((32-((k
[5*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
34 E_CAST(6, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[6*2] + r)&0xffffffff; t=((((
t)<<((k[6*2+1])))&0xffffffffL)|((t)>>((32-((k
[6*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
35 E_CAST(7, k, r, l, ^, -, +){ unsigned int a,b,c,d; t=(k[7*2] ^ l)&0xffffffff; t=((((
t)<<((k[7*2+1])))&0xffffffffL)|((t)>>((32-((k
[7*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
36 E_CAST(8, k, l, r, -, +, ^){ unsigned int a,b,c,d; t=(k[8*2] - r)&0xffffffff; t=((((
t)<<((k[8*2+1])))&0xffffffffL)|((t)>>((32-((k
[8*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
37 E_CAST(9, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[9*2] + l)&0xffffffff; t=((((
t)<<((k[9*2+1])))&0xffffffffL)|((t)>>((32-((k
[9*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
38 E_CAST(10, k, l, r, ^, -, +){ unsigned int a,b,c,d; t=(k[10*2] ^ r)&0xffffffff; t=(((
(t)<<((k[10*2+1])))&0xffffffffL)|((t)>>((32-(
(k[10*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
39 E_CAST(11, k, r, l, -, +, ^){ unsigned int a,b,c,d; t=(k[11*2] - l)&0xffffffff; t=(((
(t)<<((k[11*2+1])))&0xffffffffL)|((t)>>((32-(
(k[11*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
40 if (!key->short_key) {
41 E_CAST(12, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[12*2] + r)&0xffffffff; t=(((
(t)<<((k[12*2+1])))&0xffffffffL)|((t)>>((32-(
(k[12*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
42 E_CAST(13, k, r, l, ^, -, +){ unsigned int a,b,c,d; t=(k[13*2] ^ l)&0xffffffff; t=(((
(t)<<((k[13*2+1])))&0xffffffffL)|((t)>>((32-(
(k[13*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
43 E_CAST(14, k, l, r, -, +, ^){ unsigned int a,b,c,d; t=(k[14*2] - r)&0xffffffff; t=(((
(t)<<((k[14*2+1])))&0xffffffffL)|((t)>>((32-(
(k[14*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
44 E_CAST(15, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[15*2] + l)&0xffffffff; t=(((
(t)<<((k[15*2+1])))&0xffffffffL)|((t)>>((32-(
(k[15*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
45 }
46
47 data[1] = l & 0xffffffffL;
48 data[0] = r & 0xffffffffL;
49}
50
51void CAST_decrypt(CAST_LONGunsigned int *data, const CAST_KEY *key)
52{
53 CAST_LONGunsigned int l, r, t;
54 const CAST_LONGunsigned int *k;
55
56 k = &(key->data[0]);
57 l = data[0];
58 r = data[1];
59
60 if (!key->short_key) {
61 E_CAST(15, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[15*2] + r)&0xffffffff; t=(((
(t)<<((k[15*2+1])))&0xffffffffL)|((t)>>((32-(
(k[15*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
62 E_CAST(14, k, r, l, -, +, ^){ unsigned int a,b,c,d; t=(k[14*2] - l)&0xffffffff; t=(((
(t)<<((k[14*2+1])))&0xffffffffL)|((t)>>((32-(
(k[14*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
63 E_CAST(13, k, l, r, ^, -, +){ unsigned int a,b,c,d; t=(k[13*2] ^ r)&0xffffffff; t=(((
(t)<<((k[13*2+1])))&0xffffffffL)|((t)>>((32-(
(k[13*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
64 E_CAST(12, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[12*2] + l)&0xffffffff; t=(((
(t)<<((k[12*2+1])))&0xffffffffL)|((t)>>((32-(
(k[12*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
65 }
66 E_CAST(11, k, l, r, -, +, ^){ unsigned int a,b,c,d; t=(k[11*2] - r)&0xffffffff; t=(((
(t)<<((k[11*2+1])))&0xffffffffL)|((t)>>((32-(
(k[11*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((
(((a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
67 E_CAST(10, k, r, l, ^, -, +){ unsigned int a,b,c,d; t=(k[10*2] ^ l)&0xffffffff; t=(((
(t)<<((k[10*2+1])))&0xffffffffL)|((t)>>((32-(
(k[10*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff
]; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>
24)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((
(((a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
68 E_CAST(9, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[9*2] + r)&0xffffffff; t=((((
t)<<((k[9*2+1])))&0xffffffffL)|((t)>>((32-((k
[9*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
69 E_CAST(8, k, r, l, -, +, ^){ unsigned int a,b,c,d; t=(k[8*2] - l)&0xffffffff; t=((((
t)<<((k[8*2+1])))&0xffffffffL)|((t)>>((32-((k
[8*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
70 E_CAST(7, k, l, r, ^, -, +){ unsigned int a,b,c,d; t=(k[7*2] ^ r)&0xffffffff; t=((((
t)<<((k[7*2+1])))&0xffffffffL)|((t)>>((32-((k
[7*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
71 E_CAST(6, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[6*2] + l)&0xffffffff; t=((((
t)<<((k[6*2+1])))&0xffffffffL)|((t)>>((32-((k
[6*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
72 E_CAST(5, k, l, r, -, +, ^){ unsigned int a,b,c,d; t=(k[5*2] - r)&0xffffffff; t=((((
t)<<((k[5*2+1])))&0xffffffffL)|((t)>>((32-((k
[5*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
73 E_CAST(4, k, r, l, ^, -, +){ unsigned int a,b,c,d; t=(k[4*2] ^ l)&0xffffffff; t=((((
t)<<((k[4*2+1])))&0xffffffffL)|((t)>>((32-((k
[4*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
74 E_CAST(3, k, l, r, +, ^, -){ unsigned int a,b,c,d; t=(k[3*2] + r)&0xffffffff; t=((((
t)<<((k[3*2+1])))&0xffffffffL)|((t)>>((32-((k
[3*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
75 E_CAST(2, k, r, l, -, +, ^){ unsigned int a,b,c,d; t=(k[2*2] - l)&0xffffffff; t=((((
t)<<((k[2*2+1])))&0xffffffffL)|((t)>>((32-((k
[2*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a + b)&0xffffffffL) ^ c)&0xffffffffL) - d)&0xffffffffL
; }
;
76 E_CAST(1, k, l, r, ^, -, +){ unsigned int a,b,c,d; t=(k[1*2] ^ r)&0xffffffff; t=((((
t)<<((k[1*2+1])))&0xffffffffL)|((t)>>((32-((k
[1*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; l^=((((
(a - b)&0xffffffffL) + c)&0xffffffffL) ^ d)&0xffffffffL
; }
;
77 E_CAST(0, k, r, l, +, ^, -){ unsigned int a,b,c,d; t=(k[0*2] + l)&0xffffffff; t=((((
t)<<((k[0*2+1])))&0xffffffffL)|((t)>>((32-((k
[0*2+1])))&31))); a=CAST_S_table0[(t>> 8)&0xff]
; b=CAST_S_table1[(t )&0xff]; c=CAST_S_table2[(t>>24
)&0xff]; d=CAST_S_table3[(t>>16)&0xff]; r^=((((
(a ^ b)&0xffffffffL) - c)&0xffffffffL) + d)&0xffffffffL
; }
;
78
79 data[1] = l & 0xffffffffL;
80 data[0] = r & 0xffffffffL;
81}
82
83void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
84 long length, const CAST_KEY *ks, unsigned char *iv,
85 int enc)
86{
87 register CAST_LONGunsigned int tin0, tin1;
88 register CAST_LONGunsigned int tout0, tout1, xor0, xor1;
89 register long l = length;
90 CAST_LONGunsigned int tin[2];
91
92 if (enc) {
93 n2l(iv, tout0)(tout0 =((unsigned long)(*((iv)++)))<<24L, tout0|=((unsigned
long)(*((iv)++)))<<16L, tout0|=((unsigned long)(*((iv)
++)))<< 8L, tout0|=((unsigned long)(*((iv)++))))
;
94 n2l(iv, tout1)(tout1 =((unsigned long)(*((iv)++)))<<24L, tout1|=((unsigned
long)(*((iv)++)))<<16L, tout1|=((unsigned long)(*((iv)
++)))<< 8L, tout1|=((unsigned long)(*((iv)++))))
;
95 iv -= 8;
96 for (l -= 8; l >= 0; l -= 8) {
97 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
98 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
99 tin0 ^= tout0;
100 tin1 ^= tout1;
101 tin[0] = tin0;
102 tin[1] = tin1;
103 CAST_encrypt(tin, ks);
104 tout0 = tin[0];
105 tout1 = tin[1];
106 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
107 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
108 }
109 if (l != -8) {
110 n2ln(in, tin0, tin1, l + 8){ in+=l + 8; tin0=tin1=0; switch (l + 8) { case 8: tin1 =((unsigned
long)(*(--(in)))) ; case 7: tin1|=((unsigned long)(*(--(in))
))<< 8; case 6: tin1|=((unsigned long)(*(--(in))))<<
16; case 5: tin1|=((unsigned long)(*(--(in))))<<24; case
4: tin0 =((unsigned long)(*(--(in)))) ; case 3: tin0|=((unsigned
long)(*(--(in))))<< 8; case 2: tin0|=((unsigned long)(
*(--(in))))<<16; case 1: tin0|=((unsigned long)(*(--(in
))))<<24; } }
;
111 tin0 ^= tout0;
112 tin1 ^= tout1;
113 tin[0] = tin0;
114 tin[1] = tin1;
115 CAST_encrypt(tin, ks);
116 tout0 = tin[0];
117 tout1 = tin[1];
118 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
119 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
120 }
121 l2n(tout0, iv)(*((iv)++)=(unsigned char)(((tout0)>>24L)&0xff), *(
(iv)++)=(unsigned char)(((tout0)>>16L)&0xff), *((iv
)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((iv)++
)=(unsigned char)(((tout0) )&0xff))
;
122 l2n(tout1, iv)(*((iv)++)=(unsigned char)(((tout1)>>24L)&0xff), *(
(iv)++)=(unsigned char)(((tout1)>>16L)&0xff), *((iv
)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((iv)++
)=(unsigned char)(((tout1) )&0xff))
;
123 } else {
124 n2l(iv, xor0)(xor0 =((unsigned long)(*((iv)++)))<<24L, xor0|=((unsigned
long)(*((iv)++)))<<16L, xor0|=((unsigned long)(*((iv)++
)))<< 8L, xor0|=((unsigned long)(*((iv)++))))
;
125 n2l(iv, xor1)(xor1 =((unsigned long)(*((iv)++)))<<24L, xor1|=((unsigned
long)(*((iv)++)))<<16L, xor1|=((unsigned long)(*((iv)++
)))<< 8L, xor1|=((unsigned long)(*((iv)++))))
;
126 iv -= 8;
127 for (l -= 8; l >= 0; l -= 8) {
128 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
129 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
130 tin[0] = tin0;
131 tin[1] = tin1;
132 CAST_decrypt(tin, ks);
133 tout0 = tin[0] ^ xor0;
134 tout1 = tin[1] ^ xor1;
135 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
136 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
137 xor0 = tin0;
138 xor1 = tin1;
139 }
140 if (l != -8) {
141 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
142 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
143 tin[0] = tin0;
144 tin[1] = tin1;
145 CAST_decrypt(tin, ks);
146 tout0 = tin[0] ^ xor0;
147 tout1 = tin[1] ^ xor1;
148 l2nn(tout0, tout1, out, l + 8){ out+=l + 8; switch (l + 8) { case 8: *(--(out))=(unsigned char
)(((tout1) )&0xff); case 7: *(--(out))=(unsigned char)(((
tout1)>> 8)&0xff); case 6: *(--(out))=(unsigned char
)(((tout1)>>16)&0xff); case 5: *(--(out))=(unsigned
char)(((tout1)>>24)&0xff); case 4: *(--(out))=(unsigned
char)(((tout0) )&0xff); case 3: *(--(out))=(unsigned char
)(((tout0)>> 8)&0xff); case 2: *(--(out))=(unsigned
char)(((tout0)>>16)&0xff); case 1: *(--(out))=(unsigned
char)(((tout0)>>24)&0xff); } }
;
149 xor0 = tin0;
150 xor1 = tin1;
151 }
152 l2n(xor0, iv)(*((iv)++)=(unsigned char)(((xor0)>>24L)&0xff), *((
iv)++)=(unsigned char)(((xor0)>>16L)&0xff), *((iv)++
)=(unsigned char)(((xor0)>> 8L)&0xff), *((iv)++)=(unsigned
char)(((xor0) )&0xff))
;
153 l2n(xor1, iv)(*((iv)++)=(unsigned char)(((xor1)>>24L)&0xff), *((
iv)++)=(unsigned char)(((xor1)>>16L)&0xff), *((iv)++
)=(unsigned char)(((xor1)>> 8L)&0xff), *((iv)++)=(unsigned
char)(((xor1) )&0xff))
;
154 }
155 tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
Although the value stored to 'tout0' is used in the enclosing expression, the value is never actually read from 'tout0'
156 tin[0] = tin[1] = 0;
157}