13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef GENERATEPASSWORD_H
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define GENERATEPASSWORD_H
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass GeneratePassword
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public:
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  GeneratePassword();
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  ~GeneratePassword();
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPasswordKey(char * deviceId);
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateKeyFromDict(char * deviceId, char dict[]);
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPasswordKey(char * deviceId);
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPassword(char * deviceId, char * serverId);
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPassword(char * deviceId, char * serverId);
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPassword();
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPassword();
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * encodeDeviceId(char * deviceId);
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * get36BasedIMEI(char * deviceId);
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generatePassword(char * deviceId, char * serverId, char * key);
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * encodeHex(char data[]);
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  long long convertChar2Long(char * input);
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void shuffle(char & buffer);
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void setServerId(const char * sid);
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void setIMEI(const char * did);
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * getIMEI();
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * getServerId();
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private:
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * serverId;
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * imei;
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char clientPasswordDict [15];
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char serverPasswordDict[15];
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char hexTable[16];
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  int MD5_HASH_LENGTH;
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
58