diff --git a/Source/IBMCloudAppID/internal/Utils.swift b/Source/IBMCloudAppID/internal/Utils.swift index daccde2..429bc2e 100644 --- a/Source/IBMCloudAppID/internal/Utils.swift +++ b/Source/IBMCloudAppID/internal/Utils.swift @@ -15,7 +15,16 @@ import BMSCore public class Utils { - + + public static func base64urlToBase64(base64url: String) -> String { + var base64 = base64url + .replacingOccurrences(of: "-", with: "+") + .replacingOccurrences(of: "_", with: "/") + if base64.count % 4 != 0 { + base64.append(String(repeating: "=", count: 4 - base64.count % 4)) + } + return base64 + } public static func JSONStringify(_ value: AnyObject, prettyPrinted:Bool = false) throws -> String{ diff --git a/Source/IBMCloudAppID/internal/tokens/AbstractToken.swift b/Source/IBMCloudAppID/internal/tokens/AbstractToken.swift index 25d7650..8d25c35 100644 --- a/Source/IBMCloudAppID/internal/tokens/AbstractToken.swift +++ b/Source/IBMCloudAppID/internal/tokens/AbstractToken.swift @@ -45,8 +45,8 @@ internal class AbstractToken: Token { self.signature = tokenComponents[2] guard - let headerDecodedData = Utils.decodeBase64WithString(headerComponent, isSafeUrl: true), - let payloadDecodedData = Utils.decodeBase64WithString(payloadComponent, isSafeUrl: true) + let headerDecodedData = Data(base64Encoded: Utils.base64urlToBase64(base64url: headerComponent)), + let payloadDecodedData = Data(base64Encoded: Utils.base64urlToBase64(base64url: payloadComponent)) else { return nil }