| 120 | } |
| 121 | |
| 122 | static bool leakless_equals_char (const unsigned char* a, const unsigned char* b, std::size_t len) |
| 123 | { |
| 124 | volatile int diff = 0; |
| 125 | |
| 126 | while (len > 0) { |
| 127 | diff |= *a++ ^ *b++; |
| 128 | --len; |
| 129 | } |
| 130 | |
| 131 | return diff == 0; |
| 132 | } |
| 133 | |
| 134 | bool leakless_equals (const void* a, const void* b, std::size_t len) |
| 135 | { |