mirror of
https://github.com/bitwarden/browser
synced 2026-02-02 01:33:22 +00:00
46 lines
1.5 KiB
Objective-C
46 lines
1.5 KiB
Objective-C
#import "utils.h"
|
|
|
|
NSDictionary *parseJson(NSString *jsonString, NSError *error) {
|
|
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
|
|
if (error) {
|
|
return nil;
|
|
}
|
|
return json;
|
|
}
|
|
|
|
NSString *serializeJson(NSDictionary *dictionary, NSError *error) {
|
|
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];
|
|
if (error) {
|
|
return nil;
|
|
}
|
|
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
}
|
|
|
|
NSData *decodeBase64URL(NSString *base64URLString) {
|
|
if (base64URLString.length == 0) {
|
|
return nil;
|
|
}
|
|
|
|
// Replace URL-safe characters with standard base64 characters
|
|
NSString *base64String = [base64URLString stringByReplacingOccurrencesOfString:@"-" withString:@"+"];
|
|
base64String = [base64String stringByReplacingOccurrencesOfString:@"_" withString:@"/"];
|
|
|
|
// Add padding if needed
|
|
// Base 64 strings should be a multiple of 4 in length
|
|
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]
|
|
initWithBase64EncodedString:base64String options:0];
|
|
|
|
return nsdataFromBase64String;
|
|
}
|