13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License.
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License.
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef GENERATEPASSWORD_H
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define GENERATEPASSWORD_H
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Types.h"
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass GeneratePassword
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public:
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  GeneratePassword();
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  ~GeneratePassword();
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPasswordKey(const char * deviceId);
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateKeyFromDict(const char * deviceId, const char dict[]);
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPasswordKey(const char * deviceId);
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPassword(const char * deviceId, const char * serverId);
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPassword(const char * deviceId, const char * serverId);
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateClientPassword();
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generateServerPassword();
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * encodeDeviceId(const char * deviceId);
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * get36BasedNumber(const char * deviceId);
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * generatePassword(const char * deviceId, const char * serverId, const char * key);
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * encodeHex(const char data[]);
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  UINT64 convertchar2Long(const char * input);
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void shuffle(char & buffer);
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void setServerId(const char * sid);
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  void setIMEI(const char * did);
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  const char * getIMEI();
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  const char * getServerId();
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby private:
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * serverId;
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  char * imei;
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  static const char clientPasswordDict [15];
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  static const char serverPasswordDict[15];
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  static const char hexTable[16];
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
75