| | |
| | | #include <cstring> |
| | | #include <string> |
| | | #include <vector> |
| | | |
| | | #include <stdexcept> |
| | | #include <licensecc/datatypes.h> |
| | | |
| | | #include "../base/base64.h" |
| | | #include "../base/EventRegistry.h" |
| | | #include "../base/FileUtils.hpp" |
| | | #include "../base/StringUtils.h" |
| | | |
| | | #include "ExternalDefinition.hpp" |
| | | #include "../base/file_utils.hpp" |
| | | |
| | | namespace license { |
| | | namespace locate { |
| | | using namespace std; |
| | | using namespace std; |
| | | |
| | | ExternalDefinition::ExternalDefinition(const LicenseLocation *location) |
| | | : LocatorStrategy("ExternalDefinition"), m_location(location) {} |
| | |
| | | eventRegistry.addEvent(LICENSE_SPECIFIED, get_strategy_name()); |
| | | switch (m_location->license_data_type) { |
| | | case LICENSE_PATH: { |
| | | string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, API_LICENSE_DATA_LENGTH)); |
| | | string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, LCC_API_MAX_LICENSE_DATA_LENGTH)); |
| | | const vector<string> declared_positions = license::split_string(licData, ';'); |
| | | existing_pos = |
| | | license::filter_existing_files(declared_positions, eventRegistry, get_strategy_name().c_str()); |
| | |
| | | |
| | | const std::string ExternalDefinition::retrieve_license_content(const std::string &licenseLocation) const { |
| | | if (licenseLocation == get_strategy_name()) { |
| | | string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, API_LICENSE_DATA_LENGTH)); |
| | | string licData(m_location->licenseData, mstrnlen_s(m_location->licenseData, LCC_API_MAX_LICENSE_DATA_LENGTH)); |
| | | if (m_location->license_data_type == LICENSE_ENCODED) { |
| | | int flen = 0; |
| | | unsigned char *raw = unbase64(licData.c_str(), licData.length(), &flen); |
| | | string str = string(reinterpret_cast<char *>(raw)); |
| | | free(raw); |
| | | // FIXME what if license is wrong |
| | | vector<uint8_t> raw = unbase64(licData); |
| | | string str = string(reinterpret_cast<char *>(raw.data())); |
| | | return str; |
| | | } else { |
| | | return licData; |