You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef AUTH_H
#define AUTH_H
#include <mutex>
#include "crypto/DES.h"
#define TYPE_NOTHING 0 // 无
#define TYPE_ELECTRIC 1 // 电动的
#define TYPE_CHARGED 2 // 充电的
#define TYPE_HYDRAULIC 4 // 液压的
#define TYPE_PNEUMATIC 8 // 气动的
class Auth
{
public:
static Auth *GetInstance() {
if(!m_pInstance)
{
m_mutex.lock();
if(!m_pInstance)
{
m_pInstance = new Auth();
}
m_mutex.unlock();
}
return m_pInstance;
}
Auth(const Auth&) = delete; // 拷贝构造
Auth& operator=(const Auth&) = delete; // 赋值构造
bool getIsEncrypt() { return m_isEncrypt; } // 是否加密文件,目前仅支持加密文件
void setIsEncrypt(bool isEncrypt) { m_isEncrypt = isEncrypt; }
unsigned char getEncryptFlag() { return m_encryptFlag; }
void setEncryptFlag(unsigned char encryptFlag) { m_encryptFlag = encryptFlag; }
std::string getCompanyName() { return m_companyName; }
void setComanyName(std::string companyName) { m_companyName = companyName; }
unsigned char getProductType() { return m_productType; }
void setProductType(unsigned char productType) { m_productType = productType; }
std::string getDate() { return m_date; }
void setDate(std::string date) { m_date = date; }
std::string getPublishDate() { return m_publishDate; }
void setPublishDate(std::string date) { m_publishDate = date; }
bool getTimesFlag() { return m_bTimesFlag; }
void setTimesFlag(bool timesFlag) { m_bTimesFlag = timesFlag; }
int getTimes() { return m_times; }
void setTimes(int times) { m_times = times; }
std::string getAdvancePwd() { return m_advancePwd; }
void setAdvancePwd(std::string advancePwd) { m_advancePwd = advancePwd; }
bool writeFile();
bool readFile();
std::string getOriginString();
std::string toMessage();
bool checkEncryptFlag();
bool checkProductType();
bool checkDate();
bool checkTimes();
bool checkAdvancePwd();
bool bIsValidate();
private:
Auth();
~Auth();
private:
static Auth *m_pInstance;
static std::mutex m_mutex;
private:
bool m_isEncrypt; // 加密标记
unsigned char m_encryptFlag; // 加密标记字节
std::string m_companyName; // 公司名称
unsigned char m_productType; // 产品类型0-无,其余根据组合计算
std::string m_publishDate; // 发布日期
std::string m_date; // 日期
bool m_bTimesFlag; // 次数使用标记
int m_times; // 次数
std::string m_advancePwd; // 高级设置密码
DES m_des;
std::string m_cfgFileName;
std::string m_desKey;
std::string m_hexDesKey;
private:
// 垃圾回收类,它的唯一工作就是在析构函数中删除 Auth 的实例
class Garbo
{
public:
~Garbo()
{
if (Auth::m_pInstance)
{
// 销毁设备管理单例实例
delete Auth::m_pInstance;
}
}
};
// 定义一个静态成员,在程序结束时,系统会调用它的析构函数
static Garbo m_Garbo;
};
#endif // AUTH_H