s256Challenge function
Implementation
String s256Challenge(String verifier) {
// Dart's crypto SHA-256 lives in package:crypto; source-only build
// avoids that dep by shelling to dart:convert + manual sha via
// dart:typed_data. To keep this file dependency-free, callers
// wire package:crypto via [ChallengeHasher]. Default is a stub
// that ONLY works when [ChallengeHasher.override] is set (real
// Flutter apps and tests do this once at startup).
return ChallengeHasher.current(verifier);
}