00001 /* 00002 * Funambol is a mobile platform developed by Funambol, Inc. 00003 * Copyright (C) 2003 - 2007 Funambol, Inc. 00004 * 00005 * This program is free software; you can redistribute it and/or modify it under 00006 * the terms of the GNU Affero General Public License version 3 as published by 00007 * the Free Software Foundation with the addition of the following permission 00008 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED 00009 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 00010 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 00011 * 00012 * This program is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00015 * details. 00016 * 00017 * You should have received a copy of the GNU Affero General Public License 00018 * along with this program; if not, see http://www.gnu.org/licenses or write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00020 * MA 02110-1301 USA. 00021 * 00022 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 00023 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com. 00024 * 00025 * The interactive user interfaces in modified source and object code versions 00026 * of this program must display Appropriate Legal Notices, as required under 00027 * Section 5 of the GNU Affero General Public License version 3. 00028 * 00029 * In accordance with Section 7(b) of the GNU Affero General Public License 00030 * version 3, these Appropriate Legal Notices must retain the display of the 00031 * "Powered by Funambol" logo. If the display of the logo is not reasonably 00032 * feasible for technical reasons, the Appropriate Legal Notices must display 00033 * the words "Powered by Funambol". 00034 */ 00035 00036 00037 #ifndef INCL_AUTHENTICATION 00038 #define INCL_AUTHENTICATION 00039 /** @cond DEV */ 00040 00041 #include "base/fscapi.h" 00042 #include "base/util/utils.h" 00043 #include "base/base64.h" 00044 #include "syncml/core/Meta.h" 00045 #include "base/globalsdef.h" 00046 00047 BEGIN_NAMESPACE 00048 00049 class Authentication { 00050 00051 // ------------------------------------------------------------ Private data 00052 private: 00053 char* data; 00054 char* username; 00055 char* password; 00056 bool encode; 00057 char* deviceId; 00058 char* syncMLVerProto; 00059 char* principalId; 00060 Meta* meta; 00061 00062 void initialize(); 00063 00064 // ---------------------------------------------------------- Public data 00065 public: 00066 00067 // ---------------------------------------------------------- Constructor 00068 Authentication(); 00069 ~Authentication(); 00070 00071 /** 00072 * used for clone action. It clone every value. 00073 */ 00074 Authentication(Authentication* auth); 00075 00076 /** 00077 * Creates a new Authentication object with the given data 00078 * 00079 * @param meta the Meta object with authentication type and format 00080 * @param data the data of authentication 00081 * 00082 */ 00083 Authentication(Meta* meta, const char* data); 00084 00085 /** 00086 * Creates a new Authentication object with the given data 00087 * 00088 * @param type the authentication type 00089 * @param data the data of authentication 00090 * 00091 */ 00092 Authentication(const char* type, const char* data); 00093 00094 /** 00095 * Creates a new Authentication object with the given data 00096 * 00097 * @param type the authentication type 00098 * @param data the data of authentication 00099 * @param encode true if data is encoded, false otherwise 00100 * 00101 */ 00102 Authentication(const char* type, 00103 const char* data, 00104 bool encode); 00105 00106 /** 00107 * Creates a new Authentication object with the given data 00108 * 00109 * @param type the authentication type 00110 * @param username the username 00111 * @param password the password 00112 * 00113 */ 00114 Authentication(const char* type, 00115 const char* username, 00116 const char* password); 00117 00118 // ---------------------------------------------------------- Public methods 00119 00120 void createAuthentication(const char* type, const char* data); 00121 00122 /** 00123 * Gets the type property 00124 * 00125 * @return the type property 00126 */ 00127 const char* getType(); 00128 00129 /** 00130 * Sets the type property 00131 * 00132 * @param type the type property 00133 */ 00134 void setType(const char* type); 00135 00136 /** 00137 * Gets the format property 00138 * 00139 * @return the format property 00140 */ 00141 const char* getFormat(); 00142 00143 /** 00144 * Sets the format property 00145 * 00146 * @param format the format property 00147 */ 00148 void setFormat(const char* format); 00149 00150 /** 00151 * Gets the data property 00152 * 00153 * @return the data property 00154 */ 00155 const char* getData(); 00156 00157 /** 00158 * Sets the data property 00159 * 00160 * @param data the data property 00161 * 00162 */ 00163 void setData(const char* data); 00164 00165 00166 /** 00167 * Gets username property 00168 * 00169 * @return the username property 00170 */ 00171 const char* getUsername(); 00172 00173 /** 00174 * Sets the username property 00175 * 00176 * @param username the username property 00177 */ 00178 void setUsername(const char* username); 00179 00180 /** 00181 * Gets password property 00182 * 00183 * @return the password property 00184 */ 00185 const char* getPassword(); 00186 00187 /** 00188 * Sets the password property 00189 * 00190 * @param password the password property 00191 */ 00192 void setPassword(const char* password); 00193 00194 /** 00195 * Gets the nextNonce property 00196 * 00197 * @return nextNonce the nextNonce property 00198 */ 00199 NextNonce* getNextNonce(); 00200 00201 /** 00202 * Sets the nextNonce property 00203 * 00204 * @param nextNonce the nextNonce property 00205 * 00206 */ 00207 void setNextNonce(NextNonce* nextNonce); 00208 00209 /** 00210 * Gets the meta property 00211 * 00212 * @return meta the meta property 00213 */ 00214 Meta* getMeta(); 00215 00216 /** 00217 * Sets the meta property 00218 * 00219 * @param meta the meta property 00220 * 00221 */ 00222 void setMeta(Meta* meta); 00223 00224 /** 00225 * Gets the device id 00226 * 00227 * @return deviceId the device identificator 00228 */ 00229 const char* getDeviceId(); 00230 00231 /** 00232 * Sets the device identificator 00233 * 00234 * @param deviceId the device identificator 00235 */ 00236 void setDeviceId(const char* deviceId); 00237 00238 /** 00239 * Gets the SyncML Protocol version. It is useful to decide how calculate 00240 * the digest with MD5 authentication. 00241 * 00242 * @return syncMLVerProto the SyncML Protocol version. 00243 */ 00244 const char* getSyncMLVerProto(); 00245 00246 /** 00247 * Sets the SyncML Protocol version. It is useful to decide how calculate 00248 * the digest with MD5 authentication. 00249 * 00250 * @param syncMLVerProto the SyncML Protocol version. 00251 * 00252 */ 00253 void setSyncMLVerProto(const char* syncMLVerProto); 00254 00255 /** 00256 * Gets the principal id 00257 * 00258 * @return principalId the principal identificator 00259 */ 00260 const char* getPrincipalId(); 00261 00262 /** 00263 * Sets the principal identificator 00264 * 00265 * @param principalId the principal identificator 00266 */ 00267 void setPrincipalId(const char* principalId); 00268 00269 Authentication* clone(); 00270 00271 }; 00272 00273 00274 END_NAMESPACE 00275 00276 /** @endcond */ 00277 #endif