Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/modes/ctr128.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | static void ctr128_inc(unsigned char *counter) { | - | ||||||||||||
13 | u32 n=16; | - | ||||||||||||
14 | u8 c; | - | ||||||||||||
15 | - | |||||||||||||
16 | do { | - | ||||||||||||
17 | --n; | - | ||||||||||||
18 | c = counter[n]; | - | ||||||||||||
19 | ++c; | - | ||||||||||||
20 | counter[n] = c; | - | ||||||||||||
21 | if (c
never executed: return; | 0 | ||||||||||||
22 | } never executed: while (nend of block
| 0 | ||||||||||||
23 | } never executed: end of block | 0 | ||||||||||||
24 | - | |||||||||||||
25 | - | |||||||||||||
26 | static void | - | ||||||||||||
27 | ctr128_inc_aligned(unsigned char *counter) | - | ||||||||||||
28 | { | - | ||||||||||||
29 | - | |||||||||||||
30 | ctr128_inc(counter); | - | ||||||||||||
31 | } never executed: end of block | 0 | ||||||||||||
32 | void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, | - | ||||||||||||
33 | size_t len, const void *key, | - | ||||||||||||
34 | unsigned char ivec[16], unsigned char ecount_buf[16], | - | ||||||||||||
35 | unsigned int *num, block128_f block) | - | ||||||||||||
36 | { | - | ||||||||||||
37 | unsigned int n; | - | ||||||||||||
38 | size_t l=0; | - | ||||||||||||
39 | - | |||||||||||||
40 | - | |||||||||||||
41 | ((void) (0)) | - | ||||||||||||
42 | ; | - | ||||||||||||
43 | - | |||||||||||||
44 | n = *num; | - | ||||||||||||
45 | - | |||||||||||||
46 | - | |||||||||||||
47 | if (16%sizeof(size_t) == 0
| 0 | ||||||||||||
48 | while (n
| 0 | ||||||||||||
49 | *(out++) = *(in++) ^ ecount_buf[n]; | - | ||||||||||||
50 | --len; | - | ||||||||||||
51 | n = (n+1) % 16; | - | ||||||||||||
52 | } never executed: end of block | 0 | ||||||||||||
53 | - | |||||||||||||
54 | - | |||||||||||||
55 | - | |||||||||||||
56 | - | |||||||||||||
57 | - | |||||||||||||
58 | while (len>=16
| 0 | ||||||||||||
59 | (*block)(ivec, ecount_buf, key); | - | ||||||||||||
60 | ctr128_inc_aligned(ivec); | - | ||||||||||||
61 | for (; n<16
| 0 | ||||||||||||
62 | *( never executed: size_t *)(out+n) =*(size_t *)(out+n) = *(size_t *)(in+n) ^ *(size_t *)(ecount_buf+n); never executed: *(size_t *)(out+n) = *(size_t *)(in+n) ^ *(size_t *)(ecount_buf+n); | 0 | ||||||||||||
63 | *(size_t *)(in+n) ^ *(size_t *)(ecount_buf+n); never executed: *(size_t *)(out+n) = *(size_t *)(in+n) ^ *(size_t *)(ecount_buf+n); | 0 | ||||||||||||
64 | len -= 16; | - | ||||||||||||
65 | out += 16; | - | ||||||||||||
66 | in += 16; | - | ||||||||||||
67 | n = 0; | - | ||||||||||||
68 | } never executed: end of block | 0 | ||||||||||||
69 | if (len
| 0 | ||||||||||||
70 | (*block)(ivec, ecount_buf, key); | - | ||||||||||||
71 | ctr128_inc_aligned(ivec); | - | ||||||||||||
72 | while (len--
| 0 | ||||||||||||
73 | out[n] = in[n] ^ ecount_buf[n]; | - | ||||||||||||
74 | ++n; | - | ||||||||||||
75 | } never executed: end of block | 0 | ||||||||||||
76 | } never executed: end of block | 0 | ||||||||||||
77 | *num = n; | - | ||||||||||||
78 | return; never executed: return; | 0 | ||||||||||||
79 | } never executed: while(0);end of block | 0 | ||||||||||||
80 | - | |||||||||||||
81 | - | |||||||||||||
82 | while (l<len
| 0 | ||||||||||||
83 | if (n==0
| 0 | ||||||||||||
84 | (*block)(ivec, ecount_buf, key); | - | ||||||||||||
85 | ctr128_inc(ivec); | - | ||||||||||||
86 | } never executed: end of block | 0 | ||||||||||||
87 | out[l] = in[l] ^ ecount_buf[n]; | - | ||||||||||||
88 | ++l; | - | ||||||||||||
89 | n = (n+1) % 16; | - | ||||||||||||
90 | } never executed: end of block | 0 | ||||||||||||
91 | - | |||||||||||||
92 | *num=n; | - | ||||||||||||
93 | } never executed: end of block | 0 | ||||||||||||
94 | - | |||||||||||||
95 | - | |||||||||||||
96 | static void ctr96_inc(unsigned char *counter) { | - | ||||||||||||
97 | u32 n=12; | - | ||||||||||||
98 | u8 c; | - | ||||||||||||
99 | - | |||||||||||||
100 | do { | - | ||||||||||||
101 | --n; | - | ||||||||||||
102 | c = counter[n]; | - | ||||||||||||
103 | ++c; | - | ||||||||||||
104 | counter[n] = c; | - | ||||||||||||
105 | if (c
never executed: return; | 0 | ||||||||||||
106 | } never executed: while (nend of block
| 0 | ||||||||||||
107 | } never executed: end of block | 0 | ||||||||||||
108 | - | |||||||||||||
109 | void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, | - | ||||||||||||
110 | size_t len, const void *key, | - | ||||||||||||
111 | unsigned char ivec[16], unsigned char ecount_buf[16], | - | ||||||||||||
112 | unsigned int *num, ctr128_f func) | - | ||||||||||||
113 | { | - | ||||||||||||
114 | unsigned int n,ctr32; | - | ||||||||||||
115 | - | |||||||||||||
116 | - | |||||||||||||
117 | ((void) (0)) | - | ||||||||||||
118 | ; | - | ||||||||||||
119 | - | |||||||||||||
120 | n = *num; | - | ||||||||||||
121 | - | |||||||||||||
122 | while (n
| 0-9 | ||||||||||||
123 | *(out++) = *(in++) ^ ecount_buf[n]; | - | ||||||||||||
124 | --len; | - | ||||||||||||
125 | n = (n+1) % 16; | - | ||||||||||||
126 | } never executed: end of block | 0 | ||||||||||||
127 | - | |||||||||||||
128 | ctr32 = ({ u32 ret=(*(const u32 *)(ivec+12)); asm ("bswapl %0" : "+r"(ret)); ret; }); | - | ||||||||||||
129 | while (len>=16
| 9 | ||||||||||||
130 | size_t blocks = len/16; | - | ||||||||||||
131 | - | |||||||||||||
132 | - | |||||||||||||
133 | - | |||||||||||||
134 | - | |||||||||||||
135 | - | |||||||||||||
136 | if (sizeof(size_t)>sizeof(unsigned int)
| 0-9 | ||||||||||||
137 | blocks = (1U<<28); never executed: blocks = (1U<<28); | 0 | ||||||||||||
138 | - | |||||||||||||
139 | - | |||||||||||||
140 | - | |||||||||||||
141 | - | |||||||||||||
142 | - | |||||||||||||
143 | - | |||||||||||||
144 | ctr32 += (u32)blocks; | - | ||||||||||||
145 | if (ctr32 < blocks
| 0-9 | ||||||||||||
146 | blocks -= ctr32; | - | ||||||||||||
147 | ctr32 = 0; | - | ||||||||||||
148 | } never executed: end of block | 0 | ||||||||||||
149 | (*func)(in,out,blocks,key,ivec); | - | ||||||||||||
150 | - | |||||||||||||
151 | *(u32 *)(ivec+12) = ({ u32 ret=(ctr32); asm ("bswapl %0" : "+r"(ret)); ret; }); | - | ||||||||||||
152 | - | |||||||||||||
153 | if (ctr32 == 0
never executed: ctr96_inc(ivec); | 0-9 | ||||||||||||
154 | blocks *= 16; | - | ||||||||||||
155 | len -= blocks; | - | ||||||||||||
156 | out += blocks; | - | ||||||||||||
157 | in += blocks; | - | ||||||||||||
158 | } executed 9 times by 1 test: end of block Executed by:
| 9 | ||||||||||||
159 | if (len
| 3-6 | ||||||||||||
160 | memset(ecount_buf,0,16); | - | ||||||||||||
161 | (*func)(ecount_buf,ecount_buf,1,key,ivec); | - | ||||||||||||
162 | ++ctr32; | - | ||||||||||||
163 | *(u32 *)(ivec+12) = ({ u32 ret=(ctr32); asm ("bswapl %0" : "+r"(ret)); ret; }); | - | ||||||||||||
164 | if (ctr32 == 0
never executed: ctr96_inc(ivec); | 0-3 | ||||||||||||
165 | while (len--
| 3-12 | ||||||||||||
166 | out[n] = in[n] ^ ecount_buf[n]; | - | ||||||||||||
167 | ++n; | - | ||||||||||||
168 | } executed 12 times by 1 test: end of block Executed by:
| 12 | ||||||||||||
169 | } executed 3 times by 1 test: end of block Executed by:
| 3 | ||||||||||||
170 | - | |||||||||||||
171 | *num=n; | - | ||||||||||||
172 | } executed 9 times by 1 test: end of block Executed by:
| 9 | ||||||||||||
Switch to Source code | Preprocessed file |