diff --git a/src/Discord.Net.Core/Utils/TokenUtils.cs b/src/Discord.Net.Core/Utils/TokenUtils.cs index c820ef069..b52ba3dd6 100644 --- a/src/Discord.Net.Core/Utils/TokenUtils.cs +++ b/src/Discord.Net.Core/Utils/TokenUtils.cs @@ -23,13 +23,14 @@ namespace Discord /// Pads a base64-encoded string with 0, 1, or 2 '=' characters, /// if the string is not a valid multiple of 4. /// Does not ensure that the provided string contains only valid base64 characters. + /// Strings that already contain padding will not have any more padding applied. /// /// /// A string that would require 3 padding characters is considered to be already corrupt. /// Some older bot tokens may require padding, as the format provided by Discord /// does not include this padding in the token. /// - /// The base64 encoded string to pad with characters. + /// The base64 encoded string to pad with characters. /// A string containing the base64 padding. /// /// Thrown if would require an invalid number of padding characters. @@ -37,18 +38,15 @@ namespace Discord /// /// Thrown if is null, empty, or whitespace. /// - /// - /// Thrown if the given input string already contains padding characters. - /// internal static string PadBase64String(string encodedBase64) { if (string.IsNullOrWhiteSpace(encodedBase64)) throw new ArgumentNullException(paramName: encodedBase64, message: "The supplied base64-encoded string was null or whitespace."); + // do not pad if already contains padding characters if (encodedBase64.IndexOf(Base64Padding) != -1) - throw new ArgumentException(paramName: encodedBase64, - message: "The supplied base64-encoded string already contains padding characters."); + return encodedBase64; // based from https://stackoverflow.com/a/1228744 var padding = (4 - (encodedBase64.Length % 4)) % 4;