GCC Code Coverage Report


Directory: src/gate/
File: src/gate/encode/tests/gateencode_cpp_test/test_blockciphers.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 79 79 100.0%
Functions: 12 12 100.0%
Branches: 113 288 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 String const content = String::createStaticFrom("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
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea encoder(key, sizeof(key));
88
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
89
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
90
91
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());
92 }
93
94 4 String plaintext;
95 {
96
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea decoder(key, sizeof(key));
97
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
98
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
99
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
100 }
101
102
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);
103
104 {
105 char buffer[256];
106
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer, sizeof(buffer));
107
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xtea codec(key, sizeof(key));
108
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_processed = codec.encrypt(buffer, buffer, buffer_used);
109
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.decrypt(buffer, buffer, buffer_processed);
110 4 String output = String::createStatic(buffer, buffer_processed);
111
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);
112 }
113
114 2 }
115
116
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)
117 {
118
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream encoded;
119 {
120
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea encoder(key, sizeof(key));
121
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream original(content);
122
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 encoder.encrypt(original, encoded);
123
124
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());
125 }
126
127 4 String plaintext;
128 {
129
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea decoder(key, sizeof(key));
130
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 StringStream decoded;
131
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 decoder.decrypt(encoded, decoded);
132
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 plaintext = decoded.toString();
133 }
134
135
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);
136
137 {
138 char buffer[256];
139
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_used = content.copyTo(buffer, sizeof(buffer));
140
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Xxtea codec(key, sizeof(key));
141
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t buffer_processed = codec.encrypt(buffer, buffer, buffer_used);
142
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 codec.decrypt(buffer, buffer, buffer_processed);
143 4 String output = String::createStatic(buffer, buffer_processed);
144
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);
145 }
146 2 }
147