Objective-C Base64 encode and decode with validation

Objective-C
#import <Foundation/Foundation.h>

static NSString *Base64Encode(NSString *text) {
    NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions:0];
}

static NSString *Base64Decode(NSString *encoded, NSError **error) {
    if (encoded.length % 4 != 0) {
        if (error) *error = [NSError errorWithDomain:@"Base64" code:1 userInfo:@{NSLocalizedDescriptionKey: @"length must be a multiple of 4"}];
        return nil;
    }
    NSData *data = [[NSData alloc] initWithBase64EncodedString:encoded options:0];
    if (!data) {
        if (error) *error = [NSError errorWithDomain:@"Base64" code:2 userInfo:@{NSLocalizedDescriptionKey: @"invalid base64 characters"}];
        return nil;
    }
    NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if (!text && error) *error = [NSError errorWithDomain:@"Base64" code:3 userInfo:@{NSLocalizedDescriptionKey: @"payload is not valid UTF-8"}];
    return text;
}