constantTimeEquals function

bool constantTimeEquals(
  1. String a,
  2. String b
)

Constant-time string comparison to prevent timing attacks.

Implementation

bool constantTimeEquals(String a, String b) {
  final aBytes = utf8.encode(a);
  final bBytes = utf8.encode(b);
  if (aBytes.length != bBytes.length) return false;

  var result = 0;
  for (var i = 0; i < aBytes.length; i++) {
    result |= aBytes[i] ^ bBytes[i];
  }
  return result == 0;
}