upravy opravy

This commit is contained in:
2024-04-10 08:03:43 +02:00
parent 79cc4998bc
commit ead3ba6e3e
50 changed files with 410 additions and 2846 deletions

View File

@@ -20,9 +20,19 @@ const BYTE cnibblescount = 32;
const string cidFilePath = "";
struct SDCardInfo
{
uint32_t cardSize {};
uint32_t serialNumber {};
string date = "";
uint8_t manufacturerID {};
char oemID[2] = {};
char name[5] = {};
bool isLoaded = false;
};
class SDCard
{
struct SDCardData
{
uint8_t isCorrectLoad = 0; // SD karta je korektne nactena //bool vs byte ?

View File

@@ -8,6 +8,7 @@
#include <cstring>
#include <string>
#include <unordered_map>
#include <map>
#include <stdint.h>
using namespace std;
@@ -51,9 +52,9 @@ enum class GeneralError
enum class ELCType
{
ELC1 = 1, //starý původní licenční soubor
ELC2 = 2, //modifikovaný starý licenční soubor umoznující modifikace dle paramatetrů
ELC3 = 3 //budoucí softwarový licenční soubor, který není zalození na existenci CID a CSD
ELC1 = 1, //starý původní licenční soubor zalozený na CID a CSD
ELC2 = 2, //modifikovaný starý licenční soubor umoznující modifikace (šifrování, název) dle parametrů
ELC3 = 3 //budoucí softwarový licenční soubor, který není zalozený na existenci CID a CSD, ale na unikátním ID instalace linuxu
};
enum class ELCSubType
{
@@ -110,7 +111,6 @@ struct LicenceIdentification
LicenceType licLicenceType;
string licTypeName = "";
PlcType licPlcType;
uint8_t licenceVersion = 1; // verze licence, určuje kodování, pojmenování souborů
uint8_t licenceIndex = 0; //index licenčního souboru v případě, ze jich je víc
uint8_t revision;
@@ -123,15 +123,14 @@ struct LicenceIdentification
/// @brief obecná struktura pro reader
struct LicenceInfoGeneral
{
int reqDataPointsCount = 0;
unordered_map<int, int> licences = {};
map<DWORD, DWORD> licences = {};
};
/// @brief obecná struktura polozky licence, defaultní kompatibilita
struct LicenceItem
{
int protocolId = -1;
int dataPointsCount = 0;
DWORD protocolId {};
DWORD dataPointsCount {};
};
/* struktury pro ELC 1 */
@@ -159,26 +158,26 @@ struct LicenceELC1Item
//defaultní struktura pro ELC 2
struct LicenceELC2Info
{
unordered_map<int, int> licences = {};
map<DWORD, DWORD> licences = {};
};
struct LicenceELC2Info_1
{
unordered_map<int, int> licences = {};
};
// struct LicenceELC2Info_1
// {
// map<int, int> licences = {};
// };
//defaultni struktura polozky ELC 2
struct LicenceELC2Item
{
int protocolId = -1;
int dataPointsCount = 0;
DWORD protocolId {};
DWORD dataPointsCount {};
};
//struktura polozky ELC 2,
struct LicenceELC2Item_1
{
int protocolId = -1;
int dataPointsCount = 0;
DWORD protocolId {};
DWORD dataPointsCount {};
};

View File

@@ -29,22 +29,21 @@ public:
// struct __attribute__((__packed__)) LicencePublicHeader
struct LicenceIdentDataHeader
{
BYTE licenceType = 0; // EOSEOV, DRT ...
BYTE licenceType {}; // EOSEOV, DRT ...
BYTE licenceTypeVersion = 1; // verze licence, urcuje nuance sifrování a pojmenování souborů
BYTE licenceIndex = 0; // puvodní post fix, identifikátor pro více licencí
BYTE licenceIndex {}; // puvodní post fix, identifikátor pro více licencí
BYTE compatibilityVersion = 1; // udava verzi komplet PrivateContent
BYTE licItemCount = 0; // počet licenčních bodů
WORD publicHeaderLength = 0; // délka veřejné hlavičy
WORD cardSize = 0; // velikost SD karty
DWORD serialNumber = 0; // seriove cislo karty
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
{
WORD protoId = 0; // id protokolu pro ktery je licence
WORD licCount = 0; // pocet datovych bodu licence
char dummy[64] = {}; // dummy pro větší velikost licence v případě méně licenčních bodů
DWORD protoId {}; // id protokolu pro ktery je licence
DWORD licCount {}; // pocet datovych bodu licence
};
struct PublicHeader
@@ -57,22 +56,22 @@ public:
struct PrivateContent // privátní šifrovaná část
{
LicenceIdentDataHeader licenceIdentHeader;
vector<licDataItem> dataItems;
WORD crc = 0;
LicenceIdentDataHeader licenceIdentHeader {};
vector<licDataItem> dataItems {};
WORD crc {};
};
struct LicenceBody
{
LicenceId licId;
LicenceIdentDataHeader licenceIdentHeader;
LicenceId licId {};
LicenceIdentDataHeader licenceIdentHeader {};
string publicHeader = ""; // JSON
PrivateContent privateContent;
PrivateContent privateContent {};
};
LicenceBody licBody;
SDCard sdCard;
LicenceIdentification lIdentification;
LicenceBody licBody {};
SDCard sdCard {};
LicenceIdentification lIdentification {};
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)[]);