GCC Code Coverage Report


Directory: src/gate/
File: src/gate/encode/tests/gateencode_cpp_test/test_blockciphers.cpp
Date: 2025-12-12 23:40:09
Exec Total Coverage
Lines: 92 92 100.0%
Functions: 12 12 100.0%
Branches: 142 362 39.2%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/encode/blockciphers.hpp"
3
4 using namespace gate;
5 using namespace gate::enc;
6
7 static char const key[] = "abcdefghijklmnopqrstuvwxyz";
8 static StaticString const content = "Hello World, World of hellos, Hell of Worlds ...";
9
10
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(Blowfish)
11 {
12
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream encoded;
13 {
14
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish encoder(key, sizeof(key));
15
16
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
17
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
18
19
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
2 GATEXX_TEST_CHECK(encoded.size() >= content.size());
20 }
21
22 4 String plaintext;
23 {
24
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish decoder(key, sizeof(key));
25
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
26
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
27
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
28 }
29
30
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(content, plaintext);
31
32 {
33 char buffer[256];
34
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer, sizeof(buffer));
35
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish encoder(key, sizeof(key));
36
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish decoder(key, sizeof(key));
37
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(buffer, buffer_used);
38
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(buffer, buffer_used);
39
40 4 String output = String::createStatic(buffer, buffer_used);
41
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(output, content);
42 }
43 2 }
44
45
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(BlowfishCBC)
46 {
47
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
2 static const Blowfish::Block iv(1, 2);
48
49
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream encoded;
50 {
51
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish encoder(key, sizeof(key), iv);
52
53
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
54
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
55
56
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
2 GATEXX_TEST_CHECK(encoded.size() >= content.size());
57 }
58
59 4 String plaintext;
60 {
61
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish decoder(key, sizeof(key), iv);
62
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
63
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
64
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
65 }
66
67
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(content, plaintext);
68
69 {
70 char buffer[256];
71
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer, sizeof(buffer));
72
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish encoder(key, sizeof(key), iv);
73
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blowfish decoder(key, sizeof(key), iv);
74
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(buffer, buffer_used);
75
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(buffer, buffer_used);
76
77 4 String output = String::createStatic(buffer, buffer_used);
78
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(output, content);
79 }
80 2 }
81
82
83
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(Xtea)
84 {
85
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream encoded;
86 {
87 static uint32_t const test_key[4] = { 1, 2, 3, 4};
88
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea init_test(test_key);
89 }
90 {
91
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea encoder(key, sizeof(key));
92
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
93
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
94
95
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
2 GATEXX_TEST_CHECK(encoded.size() >= content.size());
96 }
97
98 4 String plaintext;
99 {
100
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea decoder(key, sizeof(key));
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
102
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
103
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
104 }
105
106
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(content, plaintext);
107
108 {
109 char buffer1[256];
110 char buffer2[256];
111 char buffer3[256];
112
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer1, sizeof(buffer1));
113
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea codec(key, sizeof(key));
114
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_processed = codec.encrypt(buffer1, buffer2, buffer_used);
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_decrypted = codec.decrypt(buffer2, buffer3, buffer_processed);
116 4 String output = String::createStatic(buffer3, buffer_decrypted);
117
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(output, content);
118 }
119
120 {
121 static uint32_t const blocks[4] = { 1, 2, 3, 4 };
122 uint32_t buffer[4];
123
124
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate_mem_copy(buffer, blocks, sizeof(blocks));
125
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea codec(key, sizeof(key));
126
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.encrypt(buffer, 4);
127
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(gate_mem_compare(buffer, blocks, sizeof(blocks)) != 0);
128
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.decrypt(buffer, 4);
129
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(gate_mem_compare(buffer, blocks, sizeof(blocks)) == 0);
130 }
131
132 2 }
133
134
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(Xxtea)
135 {
136
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream encoded;
137 {
138
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea encoder(key, sizeof(key));
139
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
140
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
141
142
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
2 GATEXX_TEST_CHECK(encoded.size() >= content.size());
143 }
144
145 4 String plaintext;
146 {
147
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea decoder(key, sizeof(key));
148
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
149
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
150
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
151 }
152
153
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(content, plaintext);
154
155 {
156 char buffer1[256];
157 char buffer2[256];
158 char buffer3[256];
159
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer1, sizeof(buffer1));
160
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea codec(key, sizeof(key));
161
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_processed = codec.encrypt(buffer1, buffer2, buffer_used);
162
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_decoded = codec.decrypt(buffer2, buffer3, buffer_processed);
163 4 String output = String::createStatic(buffer3, buffer_decoded);
164
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_CHECK_EQUAL(output, content);
165 }
166
167 {
168 static uint32_t const blocks[4] = { 1, 2, 3, 4 };
169 uint32_t buffer[4];
170
171
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate_mem_copy(buffer, blocks, sizeof(blocks));
172
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea codec(key, sizeof(key));
173
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.encrypt(buffer, 4);
174
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(gate_mem_compare(buffer, blocks, sizeof(blocks)) != 0);
175
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.decrypt(buffer, 4);
176
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(gate_mem_compare(buffer, blocks, sizeof(blocks)) == 0);
177 }
178
179 2 }
180