OpenCoverage

xcbc_enc.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/des/xcbc_enc.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (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#include "des_locl.h"-
11-
12/* RSA's DESX */-
13-
14void DES_xcbc_encrypt(const unsigned char *in, unsigned char *out,-
15 long length, DES_key_schedule *schedule,-
16 DES_cblock *ivec, const_DES_cblock *inw,-
17 const_DES_cblock *outw, int enc)-
18{-
19 register DES_LONG tin0, tin1;-
20 register DES_LONG tout0, tout1, xor0, xor1;-
21 register DES_LONG inW0, inW1, outW0, outW1;-
22 register const unsigned char *in2;-
23 register long l = length;-
24 DES_LONG tin[2];-
25 unsigned char *iv;-
26-
27 in2 = &(*inw)[0];-
28 c2l(in2, inW0);-
29 c2l(in2, inW1);-
30 in2 = &(*outw)[0];-
31 c2l(in2, outW0);-
32 c2l(in2, outW1);-
33-
34 iv = &(*ivec)[0];-
35-
36 if (enc) {
encDescription
TRUEevaluated 103 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 79 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
79-103
37 c2l(iv, tout0);-
38 c2l(iv, tout1);-
39 for (l -= 8; l >= 0; l -= 8) {
l >= 0Description
TRUEevaluated 1083 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 103 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
103-1083
40 c2l(in, tin0);-
41 c2l(in, tin1);-
42 tin0 ^= tout0 ^ inW0;-
43 tin[0] = tin0;-
44 tin1 ^= tout1 ^ inW1;-
45 tin[1] = tin1;-
46 DES_encrypt1(tin, schedule, DES_ENCRYPT);-
47 tout0 = tin[0] ^ outW0;-
48 l2c(tout0, out);-
49 tout1 = tin[1] ^ outW1;-
50 l2c(tout1, out);-
51 }
executed 1083 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1083
52 if (l != -8) {
l != -8Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-102
53 c2ln(in, tin0, tin1, l + 8);
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
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 executed 1 time by 1 test: case 4:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 1 time by 1 test: case 3:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 1 time by 1 test: case 2:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 1 time by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
never executed: case 8:
never executed: case 7:
never executed: case 6:
executed 1 time by 1 test: case 5:
Executed by:
  • libcrypto.so.1.1
never executed: case 4:
never executed: case 3:
never executed: case 2:
executed 1 time by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
0-1
54 tin0 ^= tout0 ^ inW0;-
55 tin[0] = tin0;-
56 tin1 ^= tout1 ^ inW1;-
57 tin[1] = tin1;-
58 DES_encrypt1(tin, schedule, DES_ENCRYPT);-
59 tout0 = tin[0] ^ outW0;-
60 l2c(tout0, out);-
61 tout1 = tin[1] ^ outW1;-
62 l2c(tout1, out);-
63 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1
64 iv = &(*ivec)[0];-
65 l2c(tout0, iv);-
66 l2c(tout1, iv);-
67 } else {
executed 103 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
103
68 c2l(iv, xor0);-
69 c2l(iv, xor1);-
70 for (l -= 8; l > 0; l -= 8) {
l > 0Description
TRUEevaluated 1005 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 79 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
79-1005
71 c2l(in, tin0);-
72 tin[0] = tin0 ^ outW0;-
73 c2l(in, tin1);-
74 tin[1] = tin1 ^ outW1;-
75 DES_encrypt1(tin, schedule, DES_DECRYPT);-
76 tout0 = tin[0] ^ xor0 ^ inW0;-
77 tout1 = tin[1] ^ xor1 ^ inW1;-
78 l2c(tout0, out);-
79 l2c(tout1, out);-
80 xor0 = tin0;-
81 xor1 = tin1;-
82 }
executed 1005 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1005
83 if (l != -8) {
l != -8Description
TRUEevaluated 79 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-79
84 c2l(in, tin0);-
85 tin[0] = tin0 ^ outW0;-
86 c2l(in, tin1);-
87 tin[1] = tin1 ^ outW1;-
88 DES_encrypt1(tin, schedule, DES_DECRYPT);-
89 tout0 = tin[0] ^ xor0 ^ inW0;-
90 tout1 = tin[1] ^ xor1 ^ inW1;-
91 l2cn(tout0, tout1, out, l + 8);
executed 79 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
code before this statement executed 78 times by 1 test: case 7:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 78 times by 1 test: case 6:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 78 times by 1 test: case 5:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 79 times by 1 test: case 4:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 79 times by 1 test: case 3:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 79 times by 1 test: case 2:
Executed by:
  • libcrypto.so.1.1
code before this statement executed 79 times by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
executed 78 times by 1 test: case 8:
Executed by:
  • libcrypto.so.1.1
never executed: case 7:
never executed: case 6:
executed 1 time by 1 test: case 5:
Executed by:
  • libcrypto.so.1.1
never executed: case 4:
never executed: case 3:
never executed: case 2:
executed 79 times by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
0-79
92 xor0 = tin0;-
93 xor1 = tin1;-
94 }
executed 79 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
79
95-
96 iv = &(*ivec)[0];-
97 l2c(xor0, iv);-
98 l2c(xor1, iv);-
99 }
executed 79 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
79
100 tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;-
101 inW0 = inW1 = outW0 = outW1 = 0;-
102 tin[0] = tin[1] = 0;-
103}
executed 182 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
182
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2