OpenCoverage

c_enc.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/cast/c_enc.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: c_enc.c,v 1.7 2014/10/28 07:35:58 jsg Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 * -
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
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-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 * -
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
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.-
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.-
22 * -
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
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:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 * -
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
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-
51 * SUCH DAMAGE.-
52 * -
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-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58-
59#include <openssl/cast.h>-
60#include "cast_lcl.h"-
61-
62#ifndef OPENBSD_CAST_ASM-
63void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key)-
64 {-
65 CAST_LONG l,r,t;-
66 const CAST_LONG *k;-
67-
68 k= &(key->data[0]);-
69 l=data[0];-
70 r=data[1];-
71-
72 E_CAST( 0,k,l,r,+,^,-);-
73 E_CAST( 1,k,r,l,^,-,+);-
74 E_CAST( 2,k,l,r,-,+,^);-
75 E_CAST( 3,k,r,l,+,^,-);-
76 E_CAST( 4,k,l,r,^,-,+);-
77 E_CAST( 5,k,r,l,-,+,^);-
78 E_CAST( 6,k,l,r,+,^,-);-
79 E_CAST( 7,k,r,l,^,-,+);-
80 E_CAST( 8,k,l,r,-,+,^);-
81 E_CAST( 9,k,r,l,+,^,-);-
82 E_CAST(10,k,l,r,^,-,+);-
83 E_CAST(11,k,r,l,-,+,^);-
84 if(!key->short_key)
!key->short_keyDescription
TRUEevaluated 4001561 times by 2 tests
Evaluated by:
  • casttest
  • libcrypto.so.44.0.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • casttest
2-4001561
85 {-
86 E_CAST(12,k,l,r,+,^,-);-
87 E_CAST(13,k,r,l,^,-,+);-
88 E_CAST(14,k,l,r,-,+,^);-
89 E_CAST(15,k,r,l,+,^,-);-
90 }
executed 4001561 times by 2 tests: end of block
Executed by:
  • casttest
  • libcrypto.so.44.0.1
4001561
91-
92 data[1]=l&0xffffffffL;-
93 data[0]=r&0xffffffffL;-
94 }
executed 4001563 times by 2 tests: end of block
Executed by:
  • casttest
  • libcrypto.so.44.0.1
4001563
95-
96void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key)-
97 {-
98 CAST_LONG l,r,t;-
99 const CAST_LONG *k;-
100-
101 k= &(key->data[0]);-
102 l=data[0];-
103 r=data[1];-
104-
105 if(!key->short_key)
!key->short_keyDescription
TRUEevaluated 673 times by 2 tests
Evaluated by:
  • casttest
  • libcrypto.so.44.0.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • casttest
2-673
106 {-
107 E_CAST(15,k,l,r,+,^,-);-
108 E_CAST(14,k,r,l,-,+,^);-
109 E_CAST(13,k,l,r,^,-,+);-
110 E_CAST(12,k,r,l,+,^,-);-
111 }
executed 673 times by 2 tests: end of block
Executed by:
  • casttest
  • libcrypto.so.44.0.1
673
112 E_CAST(11,k,l,r,-,+,^);-
113 E_CAST(10,k,r,l,^,-,+);-
114 E_CAST( 9,k,l,r,+,^,-);-
115 E_CAST( 8,k,r,l,-,+,^);-
116 E_CAST( 7,k,l,r,^,-,+);-
117 E_CAST( 6,k,r,l,+,^,-);-
118 E_CAST( 5,k,l,r,-,+,^);-
119 E_CAST( 4,k,r,l,^,-,+);-
120 E_CAST( 3,k,l,r,+,^,-);-
121 E_CAST( 2,k,r,l,-,+,^);-
122 E_CAST( 1,k,l,r,^,-,+);-
123 E_CAST( 0,k,r,l,+,^,-);-
124-
125 data[1]=l&0xffffffffL;-
126 data[0]=r&0xffffffffL;-
127 }
executed 675 times by 2 tests: end of block
Executed by:
  • casttest
  • libcrypto.so.44.0.1
675
128#endif-
129-
130void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,-
131 const CAST_KEY *ks, unsigned char *iv, int enc)-
132 {-
133 CAST_LONG tin0,tin1;-
134 CAST_LONG tout0,tout1,xor0,xor1;-
135 long l=length;-
136 CAST_LONG tin[2];-
137-
138 if (enc)
encDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
4-8
139 {-
140 n2l(iv,tout0);-
141 n2l(iv,tout1);-
142 iv-=8;-
143 for (l-=8; l>=0; l-=8)
l>=0Description
TRUEevaluated 448 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
8-448
144 {-
145 n2l(in,tin0);-
146 n2l(in,tin1);-
147 tin0^=tout0;-
148 tin1^=tout1;-
149 tin[0]=tin0;-
150 tin[1]=tin1;-
151 CAST_encrypt(tin,ks);-
152 tout0=tin[0];-
153 tout1=tin[1];-
154 l2n(tout0,out);-
155 l2n(tout1,out);-
156 }
executed 448 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
448
157 if (l != -8)
l != -8Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-8
158 {-
159 n2ln(in,tin0,tin1,l+8);
never executed: end of block
code before this statement never executed: case 7:
code before this statement never executed: case 6:
code before this statement never executed: case 5:
code before this statement never executed: case 4:
code before this statement never executed: case 3:
code before this statement never executed: case 2:
code before this statement never executed: case 1:
never executed: case 8:
never executed: case 7:
never executed: case 6:
never executed: case 5:
never executed: case 4:
never executed: case 3:
never executed: case 2:
never executed: case 1:
0
160 tin0^=tout0;-
161 tin1^=tout1;-
162 tin[0]=tin0;-
163 tin[1]=tin1;-
164 CAST_encrypt(tin,ks);-
165 tout0=tin[0];-
166 tout1=tin[1];-
167 l2n(tout0,out);-
168 l2n(tout1,out);-
169 }
never executed: end of block
0
170 l2n(tout0,iv);-
171 l2n(tout1,iv);-
172 }
executed 8 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
8
173 else-
174 {-
175 n2l(iv,xor0);-
176 n2l(iv,xor1);-
177 iv-=8;-
178 for (l-=8; l>=0; l-=8)
l>=0Description
TRUEevaluated 448 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
4-448
179 {-
180 n2l(in,tin0);-
181 n2l(in,tin1);-
182 tin[0]=tin0;-
183 tin[1]=tin1;-
184 CAST_decrypt(tin,ks);-
185 tout0=tin[0]^xor0;-
186 tout1=tin[1]^xor1;-
187 l2n(tout0,out);-
188 l2n(tout1,out);-
189 xor0=tin0;-
190 xor1=tin1;-
191 }
executed 448 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
448
192 if (l != -8)
l != -8Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-4
193 {-
194 n2l(in,tin0);-
195 n2l(in,tin1);-
196 tin[0]=tin0;-
197 tin[1]=tin1;-
198 CAST_decrypt(tin,ks);-
199 tout0=tin[0]^xor0;-
200 tout1=tin[1]^xor1;-
201 l2nn(tout0,tout1,out,l+8);
never executed: end of block
code before this statement never executed: case 7:
code before this statement never executed: case 6:
code before this statement never executed: case 5:
code before this statement never executed: case 4:
code before this statement never executed: case 3:
code before this statement never executed: case 2:
code before this statement never executed: case 1:
never executed: case 8:
never executed: case 7:
never executed: case 6:
never executed: case 5:
never executed: case 4:
never executed: case 3:
never executed: case 2:
never executed: case 1:
0
202 xor0=tin0;-
203 xor1=tin1;-
204 }
never executed: end of block
0
205 l2n(xor0,iv);-
206 l2n(xor1,iv);-
207 }
executed 4 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
4
208 tin0=tin1=tout0=tout1=xor0=xor1=0;-
209 tin[0]=tin[1]=0;-
210 }
executed 12 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
12
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2