base64UrlCharTo6Bits function

List<int> base64UrlCharTo6Bits(
  1. String base64UrlChar
)

Implementation

List<int> base64UrlCharTo6Bits(String base64UrlChar) {
  if (base64UrlChar.length != 1) {
    throw ArgumentError('Invalid base64Url character: ' + base64UrlChar);
  }

  // Define the base64URL character set
  const base64UrlCharacterSet =
      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';

  // Find the index of the input character in the base64URL character set
  final index = base64UrlCharacterSet.indexOf(base64UrlChar);

  if (index == -1) {
    throw ArgumentError('Invalid base64Url character: ' + base64UrlChar);
  }

  // Convert the index to a 6-bit binary string
  final binaryString = index.toRadixString(2).padLeft(6, '0');

  // Convert the binary string to an array of bits
  final bits = binaryString.split("").map((e) => int.parse(e)).toList();

  return bits;
}