namespace
{
-void dumpCheckCtx(const std::string& nameA, const std::string& nameB, const BLOWFISH_CTX& a, const BLOWFISH_CTX& b)
-{
- printf("CTX '%s': CTX '%s':\n", nameA.c_str(), nameB.c_str());
- const auto* ptrA = reinterpret_cast<const uint8_t*>(&a);
- const auto* ptrB = reinterpret_cast<const uint8_t*>(&b);
- size_t row = 0;
- while (row * 16 < sizeof(a))
- {
- for (size_t j = 0; j < 8; ++j)
- if (row * 16 + j < sizeof(a))
- {
- if (ptrA[row * 16 + j] == ptrB[row * 16 + j])
- printf(" %02x", static_cast<unsigned>(ptrA[row * 16 + j]));
- else
- printf(" \033[31m%02x\033[0m", static_cast<unsigned>(ptrA[row * 16 + j]));
- }
- else
- printf(" ");
- printf(" ");
- for (size_t j = 0; j < 8; ++j)
- if (row * 16 + j + 8 < sizeof(a))
- {
- if (ptrA[row * 16 + j + 8] == ptrB[row * 16 + j + 8])
- printf(" %02x", static_cast<unsigned>(ptrA[row * 16 + j + 8]));
- else
- printf(" \033[31m%02x\033[0m", static_cast<unsigned>(ptrA[row * 16 + j + 8]));
- }
- else
- printf(" ");
- printf(" | ");
- for (size_t j = 0; j < 8; ++j)
- if (row * 16 + j < sizeof(b))
- {
- if (ptrA[row * 16 + j] == ptrB[row * 16 + j])
- printf(" %02x", static_cast<unsigned>(ptrB[row * 16 + j]));
- else
- printf(" \033[31m%02x\033[0m", static_cast<unsigned>(ptrB[row * 16 + j]));
- }
- else
- printf(" ");
- printf(" ");
- for (size_t j = 0; j < 8; ++j)
- if (row * 16 + j + 8 < sizeof(b))
- {
- if (ptrA[row * 16 + j + 8] == ptrB[row * 16 + j + 8])
- printf(" %02x", static_cast<unsigned>(ptrB[row * 16 + j + 8]));
- else
- printf(" \033[31m%02x\033[0m", static_cast<unsigned>(ptrB[row * 16 + j + 8]));
- }
- else
- printf(" ");
- printf("\n");
- ++row;
- }
- printf("\n\n");
-}
-
bool equalCtx(const BLOWFISH_CTX& a, const BLOWFISH_CTX& b)
{
- for (size_t i = 0; i < sizeof(a.P); ++i)
+ for (size_t i = 0; i < 18; ++i)
if (a.P[i] != b.P[i])
{
printf("Failed for P at %ld: 0x%x != 0x%x\n", i, a.P[i], b.P[i]);
- dumpCheckCtx("a", "b", a, b);
return false;
}
for (size_t i = 0; i < 4; ++i)
if (a.S[i][j] != b.S[i][j])
{
printf("Failed for S at %ld, %ld: 0x%x != 0x%x\n", i, j, a.S[i][j], b.S[i][j]);
- dumpCheckCtx("a", "b", a, b);
return false;
}
return true;