casa
$Rev:20696$
|
00001 00005 /* 00006 Copyright (C) 2004,2005 Anders Hedstrom 00007 00008 This library is made available under the terms of the GNU GPL. 00009 00010 If you would like to use this library in a closed-source application, 00011 a separate license agreement is available. For information about 00012 the closed-source license agreement for the C++ sockets library, 00013 please visit http://www.alhem.net/Sockets/license.html and/or 00014 email license@alhem.net. 00015 00016 This program is free software; you can redistribute it and/or 00017 modify it under the terms of the GNU General Public License 00018 as published by the Free Software Foundation; either version 2 00019 of the License, or (at your option) any later version. 00020 00021 This program is distributed in the hope that it will be useful, 00022 but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 GNU General Public License for more details. 00025 00026 You should have received a copy of the GNU General Public License 00027 along with this program; if not, write to the Free Software 00028 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00029 */ 00030 #ifndef _BASE64_H 00031 #define _BASE64_H 00032 00033 #ifdef _WIN32 00034 #pragma warning(disable:4514) 00035 #endif 00036 00037 #include <stdio.h> 00038 #include <string> 00039 00040 #ifdef SOCKETS_NAMESPACE 00041 namespace SOCKETS_NAMESPACE { 00042 #endif 00043 00048 class Base64 00049 { 00050 public: 00051 Base64(); 00052 00053 void encode(FILE *, std::string& , bool add_crlf = true); 00054 void encode(const std::string&, std::string& , bool add_crlf = true); 00055 void encode(const char *, size_t, std::string& , bool add_crlf = true); 00056 void encode(unsigned char *, size_t, std::string& , bool add_crlf = true); 00057 00058 void decode(const std::string&, std::string& ); 00059 void decode(const std::string&, unsigned char *, size_t&); 00060 00061 size_t decode_length(const std::string& ); 00062 00063 private: 00064 Base64(const Base64& ) {} 00065 Base64& operator=(const Base64& ) { return *this; } 00066 static char *bstr; 00067 static char rstr[128]; 00068 }; 00069 00070 00071 #ifdef SOCKETS_NAMESPACE 00072 } 00073 #endif 00074 00075 #endif // _BASE64_H