Licensecc: a C++ software license manager

Copy protect, limit the usage of your C++ software with a license.

c11 License unstable TravisBuild GithubCI CodacyBadge codecov forum

Protect the software you develop from unauthorized copies, limit the usage in time, to a specific set of machines, or prevent the usage in virtualized environments. Licensecc is an open source license management system that helps to keep your software closed 😏 . Among the other features the most notable one is: if it runs on a “real hardware” (not a container/vm) it can generate a signature of that hardware and report if the signature doesn’t match, because for instance the software has been copied to another place.

A comprehensive list of features, and their status is available in the project wiki.

If you’re experiencing problems, or you just need informations you can’t find here in the documentation, please contact us on the user forum (hosted on Google), we’ll be happy to help.

License (BSD)

The project is donated to the community. It comes with a very large freedom of use for everyone, and it will always be. It uses a BSD 3 clauses licensing schema, that allows modification and inclusion in GPL and commercial software.

Project Structure

The software is made by 4 main sub-components:

  • licensecc : the C++ library with a C api (the part you have to integrate in your software) with minimal external dependencies. (github project licensecc )

  • lccinspector : a license debugger to be sent to the final customer to diagnose licensing problems or for calculating the hardware id before issuing the license.

  • lccgen : a license generator (github project lcc-license-generator ) to initialize the library and generate the licenses.

  • examples : usage samples (github project examples ).

How to build

Below an overview of the basic build procedure, provided as an example but if you really want to try we suggest you to refer to the detailed section for your operating system: Linux or Windows.

Prerequisites

  • Operating system : Linux(Ubuntu, CentOS), Windows

  • compilers : GCC (Linux) MINGW (Linux cross compile for Windows), MINGW or MSVC (Windows)

  • tools : Cmake(>3.6), git, make/ninja(linux)

  • libraries : If target is Linux Openssl is required. Windows depends only on system libraries. Boost is necessary to build license generator and to run the tests but it’s NOT a dependency of the final licensecc library.

For a complete list of dependencies and supported environments see the dependencies section. Clone the project.

Note

It has submodules, don’t forget the –recursive option.

git clone --recursive https://github.com/open-license-manager/licensecc.git
cd licensecc/
cd build

Build on Linux

cmake .. -DCMAKE_INSTALL_PREFIX=../install
make
make install

Build on Windows (with MSVC 2017)

cmake .. -G "Visual Studio 16 2017 Win64" -DBOOST_ROOT="{Folder where boost is}" -DCMAKE_INSTALL_PREFIX=../install
cmake --build . --target install --config Release

Cross compile with MINGW on Linux

x86_64-w64-mingw32.static-cmake .. -DCMAKE_INSTALL_PREFIX=../install
make
make install

How to test

On Linux:

make test

On Windows (MSVC):

ctest -C Release

How to use

The examples repository shows various ways to integrate licensecc into your project.

Branches and status

  • On branch master there is the ‘legacy’ 1.0.0 version. This version is working but doesn’t correspond to the current documentation, and we don’t plan to actively fix it. There are well-known bugs and limitations. We still accept community contributions on this branch. Feel free to propose your pull request.

  • On branch develop there is the upcoming 2.0.0 version that corresponds to the documentation. This version is under development and has not been extensively used/tested. However we encourage users to download and use this one.

How to contribute

Tip

The easiest way you can solve your problems or ask help is through the forums (hosted on Google)

Otherwise you can open an issue in the issue system. Have a look to the contribution guidelines before reporting.

We use GitFlow (or at least a subset of it). Remember to install the gitflow git plugin and use develop as default branch for your pull requests.