00001 /* 00002 * Base64 encoding and decoding routines 00003 * 00004 * Copyright (C) 2004-2008 René Nyffenegger 00005 * Modified by Phusion for inclusion in Phusion Passenger. 00006 * 00007 * This source code is provided 'as-is', without any express or implied 00008 * warranty. In no event will the author be held liable for any damages 00009 * arising from the use of this software. 00010 * 00011 * Permission is granted to anyone to use this software for any purpose, 00012 * including commercial applications, and to alter it and redistribute it 00013 * freely, subject to the following restrictions: 00014 * 00015 * 1. The origin of this source code must not be misrepresented; you must not 00016 * claim that you wrote the original source code. If you use this source code 00017 * in a product, an acknowledgment in the product documentation would be 00018 * appreciated but is not required. 00019 * 00020 * 2. Altered source versions must be plainly marked as such, and must not be 00021 * misrepresented as being the original source code. 00022 * 00023 * 3. This notice may not be removed or altered from any source distribution. 00024 * 00025 * René Nyffenegger rene.nyffenegger@adp-gmbh.ch 00026 * 00027 */ 00028 00029 #ifndef _PASSENGER_BASE64_H_ 00030 #define _PASSENGER_BASE64_H_ 00031 00032 #include <iostream> 00033 #include <string> 00034 #include "StaticString.h" 00035 00036 namespace Passenger { 00037 00038 using namespace std; 00039 00040 class Base64 { 00041 public: 00042 static string encode(const StaticString &data) { 00043 return encode((const unsigned char *) data.data(), data.size()); 00044 } 00045 00046 static string decode(const StaticString &base64_data) { 00047 return decode((const unsigned char *) base64_data.data(), base64_data.size()); 00048 } 00049 00050 static string encode(const unsigned char *data, unsigned int len); 00051 00052 static string decode(const unsigned char *base64_data, unsigned int len); 00053 }; 00054 00055 } // namespace Passenger 00056 00057 #endif /* _PASSENGER_BASE64_H_ */