gcontini
2020-01-11 84597288d950867922a185b2c5a8231495a5d303
src/library/licensecc.cpp
@@ -1,5 +1,5 @@
//============================================================================
// Name        : license-manager-cpp.cpp
// Name        : licensecc.cpp
// Author      :
// Version     :
// Copyright   : BSD
@@ -17,20 +17,21 @@
#include <licensecc/licensecc.h>
#include <licensecc_properties.h>
#include "pc_identifier/pc_identifier_facade.hpp"
#include "limits/license_verifier.hpp"
#include "base/StringUtils.h"
#include "LicenseReader.hpp"
#include "pc-identifiers.h"
using namespace std;
void print_error(char out_buffer[256], LicenseInfo* licenseInfo) {}
bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t bufSize) {
   FUNCTION_RETURN result = FUNC_RET_BUFFER_TOO_SMALL;
   if (bufSize >= sizeof(PcSignature)) {
      PcSignature identifier_out;
      result = generate_user_pc_signature(identifier_out, pc_id_method);
      strncpy(chbuffer, identifier_out, bufSize);
void print_error(char out_buffer[API_ERROR_BUFFER_SIZE], LicenseInfo* licenseInfo) {}
bool identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t* bufSize) {
   string pc_id = license::PcIdentifierFacade::generate_user_pc_signature(pc_id_method);
   if (*bufSize >= pc_id.size() + 1) {
      strncpy(chbuffer, pc_id.c_str(), *bufSize);
   } else {
      *bufSize = pc_id.size() + 1;
   }
   return result == FUNC_RET_OK;
}
@@ -69,16 +70,20 @@
      vector<LicenseInfo> licenses_with_errors;
      vector<LicenseInfo> licenses_ok;
      license::LicenseVerifier verifier(er);
      for (auto it = licenses.begin(); it != licenses.end(); it++) {
         FUNCTION_RETURN signatureValid = verifier.verify_signature(*it);
      for (auto full_lic_info_it = licenses.begin(); full_lic_info_it != licenses.end(); full_lic_info_it++) {
         if (callerInformation != nullptr) {
            full_lic_info_it->m_magic = callerInformation->magic;
         }
         const FUNCTION_RETURN signatureValid = verifier.verify_signature(*full_lic_info_it);
         LicenseInfo licInfo = verifier.toLicenseInfo(*full_lic_info_it);
         if (signatureValid == FUNC_RET_OK) {
            if (verifier.verify_limits(*it) == FUNC_RET_OK) {
               licenses_ok.push_back(verifier.toLicenseInfo(*it));
            if (verifier.verify_limits(*full_lic_info_it) == FUNC_RET_OK) {
               licenses_ok.push_back(licInfo);
            } else {
               licenses_with_errors.push_back(verifier.toLicenseInfo(*it));
               licenses_with_errors.push_back(licInfo);
            }
         } else {
            licenses_with_errors.push_back(verifier.toLicenseInfo(*it));
            licenses_with_errors.push_back(licInfo);
         }
      }
      if (licenses_ok.size() > 0) {
@@ -104,7 +109,7 @@
#endif
   if (license_out != nullptr) {
      er.exportLastEvents(license_out->status, AUDIT_EVENT_NUM);
      er.exportLastEvents(license_out->status, API_AUDIT_EVENT_NUM);
   }
   return result;
}