// // GTMBase64.h // // Copyright 2006-2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // #import <Foundation/Foundation.h> #import "GTMDefines.h" // GTMBase64 // /// Helper for handling Base64 and WebSafeBase64 encodings // /// The webSafe methods use different character set and also the results aren't /// always padded to a multiple of 4 characters. This is done so the resulting /// data can be used in urls and url query arguments without needing any /// encoding. You must use the webSafe* methods together, the data does not /// interop with the RFC methods. // @interface GTMBase64 : NSObject // // Standard Base64 (RFC) handling // // encodeData: // /// Base64 encodes contents of the NSData object. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)encodeData:(NSData *)data; // decodeData: // /// Base64 decodes contents of the NSData object. // /// Returns: /// A new autoreleased NSData with the decoded payload. nil for any error. // +(NSData *)decodeData:(NSData *)data; // encodeBytes:length: // /// Base64 encodes the data pointed at by |bytes|. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length; // decodeBytes:length: // /// Base64 decodes the data pointed at by |bytes|. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length; // stringByEncodingData: // /// Base64 encodes contents of the NSData object. // /// Returns: /// A new autoreleased NSString with the encoded payload. nil for any error. // +(NSString *)stringByEncodingData:(NSData *)data; // stringByEncodingBytes:length: // /// Base64 encodes the data pointed at by |bytes|. // /// Returns: /// A new autoreleased NSString with the encoded payload. nil for any error. // +(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length; // decodeString: // /// Base64 decodes contents of the NSString. // /// Returns: /// A new autoreleased NSData with the decoded payload. nil for any error. // +(NSData *)decodeString:(NSString *)string; // // Modified Base64 encoding so the results can go onto urls. // // The changes are in the characters generated and also allows the result to // not be padded to a multiple of 4. // Must use the matching call to encode/decode, won't interop with the // RFC versions. // // webSafeEncodeData:padded: // /// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES /// then padding characters are added so the result length is a multiple of 4. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)webSafeEncodeData:(NSData *)data padded:(BOOL)padded; // webSafeDecodeData: // /// WebSafe Base64 decodes contents of the NSData object. // /// Returns: /// A new autoreleased NSData with the decoded payload. nil for any error. // +(NSData *)webSafeDecodeData:(NSData *)data; // webSafeEncodeBytes:length:padded: // /// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES /// then padding characters are added so the result length is a multiple of 4. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)webSafeEncodeBytes:(const void *)bytes length:(NSUInteger)length padded:(BOOL)padded; // webSafeDecodeBytes:length: // /// WebSafe Base64 decodes the data pointed at by |bytes|. // /// Returns: /// A new autoreleased NSData with the encoded payload. nil for any error. // +(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length; // stringByWebSafeEncodingData:padded: // /// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES /// then padding characters are added so the result length is a multiple of 4. // /// Returns: /// A new autoreleased NSString with the encoded payload. nil for any error. // +(NSString *)stringByWebSafeEncodingData:(NSData *)data padded:(BOOL)padded; // stringByWebSafeEncodingBytes:length:padded: // /// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES /// then padding characters are added so the result length is a multiple of 4. // /// Returns: /// A new autoreleased NSString with the encoded payload. nil for any error. // +(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes length:(NSUInteger)length padded:(BOOL)padded; // webSafeDecodeString: // /// WebSafe Base64 decodes contents of the NSString. // /// Returns: /// A new autoreleased NSData with the decoded payload. nil for any error. // +(NSData *)webSafeDecodeString:(NSString *)string; @end