checkDigit static method

String checkDigit(
  1. String value
)

Implementation

static String checkDigit(String value) {
  if (!RegExp(r'^[A-Z0-9<]+$').hasMatch(value)) {
    throw const FormatException('Invalid MRZ characters');
  }
  var sum = 0;
  for (var i = 0; i < value.length; i++) {
    final c = value.codeUnitAt(i);
    final n = c == 60
        ? 0
        : c >= 48 && c <= 57
        ? c - 48
        : c - 55;
    sum += n * [7, 3, 1][i % 3];
  }
  return (sum % 10).toString();
}