1 /* Copyright (C) 2005 Martin Koegler 2 * Copyright (C) 2006 OCCAM Financial Technology 3 * Copyright (C) 2010 TigerVNC Team 4 * 5 * This is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This software is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this software; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 18 * USA. 19 */ 20 #ifndef __RFB_SSECURITYPLAIN_H__ 21 #define __RFB_SSECURITYPLAIN_H__ 22 23 #ifdef HAVE_CONFIG_H 24 #include <config.h> 25 #endif 26 27 #include <rfb/SConnection.h> 28 #include <rfb/SSecurity.h> 29 #include <rfb/SSecurityVeNCrypt.h> 30 #include <rfb/util.h> 31 #include <rfb/Configuration.h> 32 33 namespace rfb { 34 35 class PasswordValidator { 36 public: validate(SConnection * sc,const char * username,const char * password)37 bool validate(SConnection* sc, const char *username, const char *password) 38 { return validUser(username) ? validateInternal(sc, username, password) : false; } 39 static StringParameter plainUsers; 40 ~PasswordValidator()41 virtual ~PasswordValidator() { } 42 43 protected: 44 virtual bool validateInternal(SConnection* sc, const char *username, const char *password)=0; 45 static bool validUser(const char* username); 46 }; 47 48 class SSecurityPlain : public SSecurity { 49 public: 50 SSecurityPlain(SConnection* sc); 51 virtual bool processMsg(); getType()52 virtual int getType() const { return secTypePlain; }; getUserName()53 virtual const char* getUserName() const { return username.buf; } 54 ~SSecurityPlain()55 virtual ~SSecurityPlain() { } 56 57 private: 58 PasswordValidator* valid; 59 unsigned int ulen, plen, state; 60 CharArray username; 61 62 static const unsigned int MaxSaneUsernameLength = 1024; 63 static const unsigned int MaxSanePasswordLength = 1024; 64 }; 65 66 } 67 #endif 68 69