/// <summary> /// Generates a QR code bitmap for provisioning. /// </summary> public byte[] GenerateProvisioningImage(string identifier, byte[] key, int width, int height) { var KeyString = Encoder.Base32Encode(key); var ProvisionUrl = Encoder.UrlEncode(string.Format("otpauth://totp/{0}?secret={1}", identifier, KeyString)); var ChartUrl = string.Format("https://chart.googleapis.com/chart?cht=qr&chs={0}x{1}&chl={2}", width, height, ProvisionUrl); using (var Client = new WebClient()) { return(Client.DownloadData(ChartUrl)); } }
/// <summary> /// Generates a QR code bitmap for provisioning. /// </summary> public static string GetGQCodeImageLink(string username, byte[] key, int width, int height) { var keyString = Encoder.Base32Encode(key); var provisionUrl = Encoder.UrlEncode($"otpauth://totp/{username}?secret={keyString}&issuer={Globals.SERVER_NAME}"); var chartUrl = $"https://chart.apis.google.com/chart?cht=qr&chs={width}x{height}&chl={provisionUrl}"; return(chartUrl); /*using (var client = new WebClient()) * { * return client.DownloadData(chartUrl); * }*/ }
/// <summary> /// Encodes the key as a string /// </summary> public string EncodeKey(byte[] keyData) { return(Encoder.Base32Encode(keyData)); }