String generateCodeChallenge(String verifier) { final bytes = utf8.encode(verifier); final digest = sha256.convert(bytes); return base64UrlEncode(digest.bytes).replaceAll('=', ''); }