|
@@ -6,6 +6,7 @@
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
+#include <AK/Memory.h>
|
|
|
#include <AK/OwnPtr.h>
|
|
|
#include <AK/StringBuilder.h>
|
|
|
#include <AK/StringView.h>
|
|
@@ -124,12 +125,11 @@ public:
|
|
|
block0.apply_initialization_vector({ auth_tag.data, array_size(auth_tag.data) });
|
|
|
|
|
|
auto test_consistency = [&] {
|
|
|
- if (block0.block_size() != tag.size() || __builtin_memcmp(block0.bytes().data(), tag.data(), tag.size()) != 0)
|
|
|
+ if (block0.block_size() != tag.size() || !timing_safe_compare(block0.bytes().data(), tag.data(), tag.size()))
|
|
|
return VerificationConsistency::Inconsistent;
|
|
|
|
|
|
return VerificationConsistency::Consistent;
|
|
|
};
|
|
|
- // FIXME: This block needs constant-time comparisons.
|
|
|
|
|
|
if (in.is_empty()) {
|
|
|
out = {};
|