using System.Security.Cryptography; namespace VPNAuth.Server; public static class PkceUtils { private static string _codeChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; private static string _tokenChars = _codeChars + ".!$"; private static string GenerateRandomString(string availableChars, int length) { string randomString = ""; for (int i = 0; i < length; i++) randomString += availableChars[RandomNumberGenerator.GetInt32(availableChars.Length)]; return randomString; } public static string GenerateCode(int length = 10) => GenerateRandomString(_codeChars, length); public static string GenerateToken(int length = 20) => GenerateRandomString(_tokenChars, length); }