1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-10 13:23:34 +00:00

Fix base64url decode on MacOS passkeys (#14227)

* Add support for padding in base64url decode

* whitespace

* whitespace
This commit is contained in:
Anders Åberg
2025-04-11 09:10:41 +02:00
committed by GitHub
parent f3726e5ac2
commit b7c2419aed

View File

@@ -18,9 +18,25 @@ NSString *serializeJson(NSDictionary *dictionary, NSError *error) {
} }
NSData *decodeBase64URL(NSString *base64URLString) { NSData *decodeBase64URL(NSString *base64URLString) {
if (base64URLString.length == 0) {
return nil;
}
// Replace URL-safe characters with standard base64 characters
NSString *base64String = [base64URLString stringByReplacingOccurrencesOfString:@"-" withString:@"+"]; NSString *base64String = [base64URLString stringByReplacingOccurrencesOfString:@"-" withString:@"+"];
base64String = [base64String stringByReplacingOccurrencesOfString:@"_" withString:@"/"]; base64String = [base64String stringByReplacingOccurrencesOfString:@"_" withString:@"/"];
// Add padding if needed
NSUInteger paddingLength = 4 - (base64String.length % 4);
if (paddingLength < 4) {
NSMutableString *paddedString = [NSMutableString stringWithString:base64String];
for (NSUInteger i = 0; i < paddingLength; i++) {
[paddedString appendString:@"="];
}
base64String = paddedString;
}
// Decode the string
NSData *nsdataFromBase64String = [[NSData alloc] NSData *nsdataFromBase64String = [[NSData alloc]
initWithBase64EncodedString:base64String options:0]; initWithBase64EncodedString:base64String options:0];