2
2
3
3
#include " source/include/obsidian/encoding.hpp"
4
4
#include " source/include/obsidian/random.hpp"
5
+
5
6
using namespace obsidian ;
6
7
7
8
const std::string& QBF_TEST_STRING =
@@ -65,6 +66,9 @@ bool pkcs7_validator(const std::vector<uint8_t>& bytes,
65
66
const uint8_t & last_byte = *bytes.cend ();
66
67
67
68
if (last_byte != correct_difference) {
69
+ std::cout << " Difference is " << static_cast <uint32_t >(last_byte)
70
+ << " should have been " << correct_difference << " \n " ;
71
+
68
72
return false ;
69
73
}
70
74
@@ -74,33 +78,42 @@ bool pkcs7_validator(const std::vector<uint8_t>& bytes,
74
78
[&](const auto & byte) -> bool { return byte == last_byte; });
75
79
76
80
if (!valid_padding) {
81
+ for (const auto & byte : bytes) {
82
+ std::cout << std::hex << std::setw (2 ) << std::setfill (' 0' )
83
+ << static_cast <uint32_t >(byte) << " , " ;
84
+ }
85
+
86
+ std::cout << ' \n ' ;
87
+
77
88
return false ;
78
89
}
79
90
80
91
return true ;
81
92
}
82
93
83
- TEST (Encodings, Pkcs7KnownPad )
94
+ TEST (Encodings, Pkcs7Padding )
84
95
{
85
- const std::vector<uint8_t >& sample_15b {
86
- 0xFF ,
87
- 0xFF ,
88
- 0xFF ,
89
- 0xFF ,
90
- 0xFF ,
91
- 0xFF ,
92
- 0xFF ,
93
- 0xFF ,
94
- 0xFF ,
95
- 0xFF ,
96
- 0xFF ,
97
- 0xFF ,
98
- 0xFF ,
99
- 0xFF ,
100
- 0xFF ,
101
- };
102
-
103
- const auto & padded = encoding::apply_pkcs7_padding (sample_15b, 16 );
104
-
105
- ASSERT_EQ (pkcs7_validator (sample_15b, 1 ), true );
96
+ const auto & padding_factor = 16 ;
97
+ const auto & fill_byte = 0xFF ;
98
+
99
+ std::vector<uint8_t > sample (64 , fill_byte);
100
+
101
+ for (uint32_t i = 0 ; i < 64 ; ++i) {
102
+ const auto & padded = encoding::apply_pkcs7_padding (
103
+ {sample.begin (), sample.end () - i}, padding_factor);
104
+
105
+ const auto & last_byte = padded[padded.size () - 1 ];
106
+
107
+ if (i % padding_factor) {
108
+ const auto & delta = i % padding_factor;
109
+
110
+ ASSERT_EQ (last_byte, i % padding_factor);
111
+
112
+ for (auto i = 0 ; i < delta; ++i) {
113
+ ASSERT_EQ (padded[padded.size () - 1 - i], delta);
114
+ }
115
+ } else {
116
+ ASSERT_EQ (last_byte, fill_byte);
117
+ }
118
+ }
106
119
}
0 commit comments