gcontini
2020-03-22 cba65cde7db0b3006f194f4e120d36de4b21e904
src/library/LicenseReader.cpp
@@ -22,28 +22,26 @@
#include <stdlib.h>
#include <math.h>
#include <public_key.h>
#include <licensecc_properties.h>
#include <licensecc/licensecc.h>
#include "base/base.h"
#include "pc-identifiers.h"
#include "LicenseReader.hpp"
#include "base/StringUtils.h"
#include "base/logger.h"
#include "locate/LocatorFactory.hpp"
namespace license {
using namespace std;
FullLicenseInfo::FullLicenseInfo(const string &source, const string &product, const string &license_signature)
   : source(source),
     m_project(product),  //
     license_signature(license_signature) {}
     license_signature(license_signature),
     m_magic(0) {}
LicenseReader::LicenseReader(const LicenseLocation *licenseLocation) : licenseLocation(licenseLocation) {}
EventRegistry LicenseReader::readLicenses(const string &product, vector<FullLicenseInfo> &licenseInfoOut) {
   vector<string> diskFiles;
EventRegistry LicenseReader::readLicenses(const string &product, vector<FullLicenseInfo> &licenseInfoOut) const {
   vector<unique_ptr<locate::LocatorStrategy>> locator_strategies;
   FUNCTION_RETURN ret = locate::LocatorFactory::get_active_strategies(locator_strategies, licenseLocation);
   EventRegistry eventRegistry;
@@ -54,6 +52,8 @@
   }
   bool atLeastOneLicenseComplete = false;
   const string product_up = toupper_copy(product);
   const char *productNamePtr = product_up.c_str();
   for (unique_ptr<locate::LocatorStrategy> &locator : locator_strategies) {
      vector<string> licenseLocations = locator->license_locations(eventRegistry);
      if (licenseLocations.size() == 0) {
@@ -62,13 +62,12 @@
      CSimpleIniA ini;
      for (auto it = licenseLocations.begin(); it != licenseLocations.end(); it++) {
         ini.Reset();
         string license = locator->retrieve_license_content((*it).c_str());
         const string license = locator->retrieve_license_content((*it).c_str());
         const SI_Error rc = ini.LoadData(license.c_str(), license.size());
         if (rc < 0) {
            eventRegistry.addEvent(FILE_FORMAT_NOT_RECOGNIZED, *it);
            continue;
         }
         const char *productNamePtr = product.c_str();
         const int sectionSize = ini.GetSectionSize(productNamePtr);
         if (sectionSize <= 0) {
            eventRegistry.addEvent(PRODUCT_NOT_LICENSED, *it);
@@ -85,8 +84,8 @@
          *  sig = XXXXXXXXXX (mandatory, 1024)
          *  application_data = xxxxxxxxx (optional string 16)
          */
         const char *license_signature = ini.GetValue(productNamePtr, "sig", nullptr);
         long license_version = ini.GetLongValue(productNamePtr, "lic_ver", -1);
         const char *license_signature = ini.GetValue(productNamePtr, LICENSE_SIGNATURE, nullptr);
         long license_version = ini.GetLongValue(productNamePtr, LICENSE_VERSION, -1);
         if (license_signature != nullptr && license_version == 200) {
            CSimpleIniA::TNamesDepend keys;
            ini.GetAllKeys(productNamePtr, keys);
@@ -119,7 +118,7 @@
   }
#ifdef _DEBUG
   cout << "[" << oss.str() << "]" << endl;
   cout << "license to sign [" << oss.str() << "]" << endl;
#endif
   return oss.str();
}