Create C++ Linux Build Environment with Encryption and JNI
$30-250 USD
Cancelled
Posted over 13 years ago
$30-250 USD
Paid on delivery
We are looking for an experienced C++ developer to create the initial build environment and licensing for one of our products. We will take the source code and add functionality at a later point.
The intention is the have a build environment that we can use on Linux and Windows. The library needs to use the Java JNI interface to deliver C++ functionality to the Java Environment. A basic JNI example included. Added to this is the support for licensing keys to validate each request based on a hardware profile.
The bid winner be the person who has extensive experience configuring build environments for Windows and Linux using autoconf, automake etc.
Experience with C++ Unit testing will also be needed. Code quality is very important to us, including tested code.
We do not expect this is more than a handful of classes leveraging off open source encryption libraries. It should be a small piece of work for an experienced Linux/C++ developer.
= Work Flow =
This is the expected user workflow
1. Install binaries on Linux server
2. Run
- - a. abd-create-request
b. This creates a licence request file
3. Licence request file is send to administrator
4. Admin runs
- - a. abd-create-licence <licence-file>
5. This returns a new licence file based on the server hardware
6. Licence file is copied to the server
7. JNI calls to the jni library will validate the licence files before returning a result
What we are looking for:
= Build Environment =
• Build environment and scripts compatible with
- - o Cygwin (Windows XP) or possibly MinGW
- - o RedHat (5.5)
- - o Including use of autoreconf configuration files:
- - - - * [login to view URL]
- - - - * [login to view URL]
• Preferred done as an Eclipse CDT project but not necessary
• JNI Support
- - o Needs to build with Java Native Interface support for the following header file
- - - - * See attached example
- - o JDK Version 1.6.0 Update 23
= Licensing =
• Licensing Functionality
- - o Profile Hardware (only important in linux env – not windows)
- - - - * MAC Address
- - - - * CPU count
- - - - * CPU type
- - o Create a licence request file binary
- - - - * Outputs a licence request file with encrypted hardware profile
- - - - * Hardware details included from above
- - - - * Encrypt the file with a shared key encryption
- - o Create a licence creation binary
- - - - * From the licence request create a licence file for the hardware
- - - - * Decrypt the licence request
- - - - * New licence key
• Put hardware profile into new licence key
• Should be encrypted with private/public key encryption
- - o Validate the licence file for every JNI call
- - - - * Decrypt the licence key
- - - - * Validate hardware
- - - - * Throw Exception if not valid
= Testing =
• Integration of Google Test Framework for unit testing
- - o [login to view URL]
- - o Licensing code should be unit testing for encryption classes
- - o Unit tests should run on Windows and Linux
- - o Tests should be run as part of the build process
= Conventions =
• Code should conform to following standards
- - o Should be written in C++
- - o [login to view URL]
- - o [login to view URL]
= Provided =
Java and C++ source projects for running JNI example – see attached.
= Outputs =
• Build env including the following files:
- - o [login to view URL]
- - o [login to view URL]
• Once compiled a binaries
- - o abd-create-request
- - o abd-create-licence
• Library for JNI calls
• Should run unit tests provided
= When Applying =
• What external libs are proposed
• Expected delivery timeframe
• Any suggestions to change the specifications