OpenCoverage

cbc128.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/modes/cbc128.c
Switch to Source codePreprocessed file
LineSourceCount
1void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,-
2 size_t len, const void *key,-
3 unsigned char ivec[16], block128_f block)-
4{-
5 size_t n;-
6 const unsigned char *iv = ivec;-
7-
8-
9 if (0 &&-
10 ((
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
) {
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
11 while (len>=16) {
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
12 for(n=0; n<16; ++n)
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
13 out[n] = in[n] ^ iv[n];
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
14 (*block)(out, out, key);
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
15 iv = out;
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
16 len -= 16;
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
17 in += 16;
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
18 out += 16;
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
19 }
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
-
20 }
dead code: { while (len>=16) { for(n=0; n<16; ++n) out[n] = in[n] ^ iv[n]; (*block)(out, out, key); iv = out; len -= 16; in += 16; out += 16; } }
else {
-
21 while (len>=16
len>=16Description
TRUEevaluated 23 times by 1 test
Evaluated by:
  • cts128test
FALSEevaluated 12 times by 1 test
Evaluated by:
  • cts128test
) {
12-23
22 for(n=0; n<16
n<16Description
TRUEevaluated 46 times by 1 test
Evaluated by:
  • cts128test
FALSEevaluated 23 times by 1 test
Evaluated by:
  • cts128test
; n+=sizeof(size_t))
23-46
23 *(
executed 46 times by 1 test: *(size_t*)(out+n) = *(size_t*)(in+n) ^ *(size_t*)(iv+n);
Executed by:
  • cts128test
size_t*)(out+n) =
executed 46 times by 1 test: *(size_t*)(out+n) = *(size_t*)(in+n) ^ *(size_t*)(iv+n);
Executed by:
  • cts128test
46
24 *(size_t*)(in+n) ^ *(size_t*)(iv+n);
executed 46 times by 1 test: *(size_t*)(out+n) = *(size_t*)(in+n) ^ *(size_t*)(iv+n);
Executed by:
  • cts128test
46
25 (*block)(out, out, key);-
26 iv = out;-
27 len -= 16;-
28 in += 16;-
29 out += 16;-
30 }
executed 23 times by 1 test: end of block
Executed by:
  • cts128test
23
31 }
executed 12 times by 1 test: end of block
Executed by:
  • cts128test
12
32-
33 while (len
lenDescription
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • cts128test
) {
0-12
34 for(n=0; n<16
n<16Description
TRUEnever evaluated
FALSEnever evaluated
&& n<len
n<lenDescription
TRUEnever evaluated
FALSEnever evaluated
; ++n)
0
35 out[n] = in[n] ^ iv[n];
never executed: out[n] = in[n] ^ iv[n];
0
36 for(; n<16
n<16Description
TRUEnever evaluated
FALSEnever evaluated
; ++n)
0
37 out[n] = iv[n];
never executed: out[n] = iv[n];
0
38 (*block)(out, out, key);-
39 iv = out;-
40 if (len<=16
len<=16Description
TRUEnever evaluated
FALSEnever evaluated
) break;
never executed: break;
0
41 len -= 16;-
42 in += 16;-
43 out += 16;-
44 }
never executed: end of block
0
45 memcpy(ivec,iv,16);-
46}
executed 12 times by 1 test: end of block
Executed by:
  • cts128test
12
47-
48void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,-
49 size_t len, const void *key,-
50 unsigned char ivec[16], block128_f block)-
51{-
52 size_t n;-
53 union { size_t t[16/sizeof(size_t)]; unsigned char c[16]; } tmp;-
54-
55-
56 if (in != out
in != outDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • cts128test
FALSEnever evaluated
) {
0-7
57 const unsigned char *iv = ivec;-
58-
59 if (0 &&-
60 ((
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
) {
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
61 while (len>=16) {
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
62 (*block)(in, out, key);
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
63 for(n=0; n<16; ++n)
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
64 out[n] ^= iv[n];
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
65 iv = in;
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
66 len -= 16;
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
67 in += 16;
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
68 out += 16;
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
69 }
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
-
70 }
dead code: { while (len>=16) { (*block)(in, out, key); for(n=0; n<16; ++n) out[n] ^= iv[n]; iv = in; len -= 16; in += 16; out += 16; } }
else if (16%sizeof(size_t) == 0
16%sizeof(size_t) == 0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • cts128test
FALSEnever evaluated
) {
-
71 while (len>=16
len>=16Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • cts128test
FALSEevaluated 7 times by 1 test
Evaluated by:
  • cts128test
) {
7-14
72 size_t *out_t=(size_t *)out, *iv_t=(size_t *)iv;-
73-
74 (*block)(in, out, key);-
75 for(n=0; n<16/sizeof(size_t)
n<16/sizeof(size_t)Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • cts128test
FALSEevaluated 14 times by 1 test
Evaluated by:
  • cts128test
; n++)
14-28
76 out_t[n] ^= iv_t[n];
executed 28 times by 1 test: out_t[n] ^= iv_t[n];
Executed by:
  • cts128test
28
77 iv = in;-
78 len -= 16;-
79 in += 16;-
80 out += 16;-
81 }
executed 14 times by 1 test: end of block
Executed by:
  • cts128test
14
82 }
executed 7 times by 1 test: end of block
Executed by:
  • cts128test
7
83 memcpy(ivec,iv,16);-
84 }
executed 7 times by 1 test: end of block
Executed by:
  • cts128test
else {
7
85 if (0 &&-
86 ((
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
dead code: ((size_t)in|(size_t)out|(size_t)ivec)%sizeof(size_t) != 0
) {
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
87 unsigned char c;
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
88 while (len>=16) {
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
89 (*block)(in, tmp.c, key);
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
90 for(n=0; n<16; ++n) {
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
91 c = in[n];
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
92 out[n] = tmp.c[n] ^ ivec[n];
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
93 ivec[n] = c;
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
94 }
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
95 len -= 16;
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
96 in += 16;
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
97 out += 16;
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
98 }
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
-
99 }
dead code: { unsigned char c; while (len>=16) { (*block)(in, tmp.c, key); for(n=0; n<16; ++n) { c = in[n]; out[n] = tmp.c[n] ^ ivec[n]; ivec[n] = c; } len -= 16; in += 16; out += 16; } }
else if (16%sizeof(size_t) == 0
16%sizeof(size_t) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
-
100 while (len>=16
len>=16Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
101 size_t c, *out_t=(size_t *)out, *ivec_t=(size_t *)ivec;-
102 const size_t *in_t=(const size_t *)in;-
103-
104 (*block)(in, tmp.c, key);-
105 for(n=0; n<16/sizeof(size_t)
n<16/sizeof(size_t)Description
TRUEnever evaluated
FALSEnever evaluated
; n++) {
0
106 c = in_t[n];-
107 out_t[n] = tmp.t[n] ^ ivec_t[n];-
108 ivec_t[n] = c;-
109 }
never executed: end of block
0
110 len -= 16;-
111 in += 16;-
112 out += 16;-
113 }
never executed: end of block
0
114 }
never executed: end of block
0
115 }
never executed: end of block
0
116-
117 while (len
lenDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • cts128test
) {
0-7
118 unsigned char c;-
119 (*block)(in, tmp.c, key);-
120 for(n=0; n<16
n<16Description
TRUEnever evaluated
FALSEnever evaluated
&& n<len
n<lenDescription
TRUEnever evaluated
FALSEnever evaluated
; ++n) {
0
121 c = in[n];-
122 out[n] = tmp.c[n] ^ ivec[n];-
123 ivec[n] = c;-
124 }
never executed: end of block
0
125 if (len<=16
len<=16Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
126 for (; n<16
n<16Description
TRUEnever evaluated
FALSEnever evaluated
; ++n)
0
127 ivec[n] = in[n];
never executed: ivec[n] = in[n];
0
128 break;
never executed: break;
0
129 }-
130 len -= 16;-
131 in += 16;-
132 out += 16;-
133 }
never executed: end of block
0
134}
executed 7 times by 1 test: end of block
Executed by:
  • cts128test
7
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2