88 lines
2.2 KiB
C++
88 lines
2.2 KiB
C++
#ifndef PLC_LICENCE2_COMMON_H
|
|
#define PLC_LICENCE2_COMMON_H
|
|
|
|
#include "utils.h"
|
|
#ifndef EZ_APPLICATION_LICENCE_DISABLE
|
|
|
|
#include <vector>
|
|
#include "licenceCommon.h"
|
|
#include "SDCard.h"
|
|
|
|
/// @brief společná třída pro pro reader i generator licence typu ELC2
|
|
class LicenceELC2
|
|
{
|
|
public:
|
|
LicenceELC2();
|
|
LicenceELC2(LicenceIdentification &licIdentification);
|
|
~LicenceELC2();
|
|
|
|
string cid_cdsPath = "";
|
|
string licenceFilePath = "";
|
|
string licFileName = "";
|
|
|
|
Mapping mapping;
|
|
|
|
ErrorMessage errorMessage;
|
|
|
|
struct LicenceId
|
|
{
|
|
char licIdent[5] = {'E', 'L', 'C', '0', '_'};
|
|
};
|
|
|
|
// struct __attribute__((__packed__)) LicencePublicHeader
|
|
struct LicenceIdentDataHeader
|
|
{
|
|
BYTE licenceType{}; // EOSEOV, DRT ...
|
|
BYTE licenceTypeVersion = 1; // verze licence, urcuje nuance sifrování a pojmenování souborů
|
|
BYTE licenceIndex{}; // puvodní post fix, identifikátor pro více licencí
|
|
BYTE compatibilityVersion = 1; // udava verzi komplet PrivateContent
|
|
BYTE licItemCount{}; // počet protokolů v linenci
|
|
WORD publicHeaderLength{}; // délka veřejné hlavičy
|
|
WORD cardSize{}; // velikost SD karty
|
|
DWORD serialNumber = {}; // seriove cislo karty
|
|
};
|
|
|
|
struct licDataItem
|
|
{
|
|
DWORD protoId{}; // id protokolu pro ktery je licence
|
|
DWORD licCount{}; // pocet datovych bodu licence
|
|
};
|
|
|
|
struct PublicHeader
|
|
{
|
|
string version = "";
|
|
string projectDescription = "";
|
|
string date = "";
|
|
string licenceType = "";
|
|
};
|
|
|
|
struct PrivateContent // privátní šifrovaná část
|
|
{
|
|
LicenceIdentDataHeader licenceIdentHeader{};
|
|
vector<licDataItem> dataItems{};
|
|
WORD crc{};
|
|
};
|
|
|
|
struct LicenceBody
|
|
{
|
|
LicenceId licId{};
|
|
LicenceIdentDataHeader licenceIdentHeader{};
|
|
string publicHeader = ""; // JSON
|
|
PrivateContent privateContent{};
|
|
};
|
|
|
|
SDCard sdCard{};
|
|
|
|
protected:
|
|
vector<unsigned char> cryptPrivateContent(const std::vector<unsigned char> &content);
|
|
vector<unsigned char> decryptPrivateContent(const std::vector<unsigned char> &content);
|
|
void initVector(BYTE *iVector, BYTE *key);
|
|
string getLicenceName();
|
|
LicenceBody licBody{};
|
|
LicenceIdentification lIdentification{};
|
|
|
|
private:
|
|
};
|
|
|
|
#endif
|
|
#endif |