Copyright: : MARX(R) CryptoTech LP File : readme.txt Date: : June 1, 2021 Description : Smarx(R)OS distributive for Linux Author: : KS Content: 1. Smarx(R)OS 4 Linux package - Overview 2. Package content 3. Supported Linux distributions 4. Setting up the Linux environment for CRYPTO-BOX Support 4.1 Access to the CRYPTO-BOX on the local USB port 4.2 Access to the CRYPTO-BOX in network mode 5. Samples for Implementation with API 5.1 Overview 5.2 API directory content 5.3 Sample build instructions 6. Contact Details 7. Version Information ******************************************************************************* 1. Smarx(R)OS 4 Linux package - Overview ******************************************************************************* This document contains description of Smarx(R)OS for Linux package. The package includes all software and license management solutions for the CRYPTO-BOX which are currently supported for GNU/Linux based systems. With this distributive you can: - manually protect your application using Smarx(R)OS API - use automatic protection (AutoCrypt)* - program CRYPTO-BOX(R) hardware with licensing data - use both local and network licensing modes (Smarx(R)OS Network Server) - use Online License Management (OLM) with Smarx Cloud Security/Web API The latest release of the Smarx(R)OS for Linux package is available in our download area: https://www.marx.com/downloads A MyMARX login and a valid support contract are required for downloading. See here for more details: https://www.marx.com/en/support/support-level-options ******************************************************************************* 2. Package content ******************************************************************************* This distributive includes the following files and folders: - readme.txt - this file - 10-cryptobox.rules - example udev rules file - /autocrypt - folder with AutoCrypt for Linux packages and demo licensing scripts and CRYPTO-BOX(R) access codes * - /smrxprog - SmrxProg for Linux packages (command line tool for CRYPTO-BOX configuration under Linux) - /api - Smarx(R)OS API libraries and samples for Linux, see "5. Samples for Implementation with API" for further details - /network_server - Smarx(R)OS Network Server for Linux to make the CRYPTO-BOX available in the network via TCP/IP connection. See our White Paper "Network Licensing for more details: https://www.marx.com/en/support/documents#whitepapers - /web_api_client - Smarx(R)OS Web API for Linux (deprecated) * Remark: AutoCrypt for Linux is deprecated, we recommend to use SmarxAPI/AutoCrypt (AC) API samples which are easy to implement - see /api folder for more details. Please contact us if you are interested in a fully automatic protection solution for Linux, see "6. Contact Details" ******************************************************************************* 3. Supported Linux distributions ******************************************************************************* This package was tested on the following Linux distributions: - Ubuntu 18.04 and 20.04, 64bit - OpenSUSE Leap 15.2, 64bit - Debian 10, 32bit - Raspberry Pi OS 5.10, 32 and 64bit ******************************************************************************* 4. Setting up the Linux environment for CRYPTO-BOX Support ******************************************************************************* 4.1 Access to the CRYPTO-BOX on the local USB port -------------------------------------------------- To access a CRYPTO-BOX(R) attached to the local USB port of the Linux system, Read-Write permissions for the CRYPTO-BOX(R) USB device through libusb library are required. By default only root has such permissions. You can use udev rules to configure CRYPTO-BOX(R) permissions. Access rules can be set by: a) Installing Smarx(R)OS Network Server package or b) Manually setting access rules - just copy the file 10-cryptobox.rules from package root folder to /rules.d directory (root rights required): $ sudo cp 10-cryptobox.rules /etc/udev/rules.d/ Then re-attach your CRYPTO-BOX(R) for signalizing udev system to reload rules. For samples supporting local CRYPTO-BOX access (all samples/development except .Net Core 2.1+ support which supports network access only) it is enough to link your application with the Smarx OS libraries we provide and set access rules on the target system as described above. Installation of additional drivers/runtime components is not required. NOTE: If you are a developer, refer to "5.3 Sample build instructions" for additional build requirements. 4.2 Access to the CRYPTO-BOX in network mode -------------------------------------------- The Smarx OS libraries for Linux support support the network mode (CRYPTO-BOX is attached to any computer in the network where our "CBIOS Network Server" is running). In that case the client application access the CRYPTO-BOX via TCP/IP (client and server may also the same computer). The CBIOS Network server is available for Windows, Linux and macOS platforms and can be downloaded from https://www.marx.com/en/support/downloads#networktools See our White Paper "Network Licensing for more details on network mode: https://www.marx.com/en/support/documents#whitepapers ******************************************************************************* 5. Samples for Implementation with API ******************************************************************************* 5.1 Overview ------------ IMPORTANT: For an introduction into API implementation and an overview on the available APIs, please read our "Implementation with API" White Paper: https://www.marx.com/en/support/documents#whitepapers The samples in the /api subfolder of this package are targeted to developers who want implement software protection and licensing with the CRYPTO-BOX(R) under Linux environments using implementation into the source code with API. Smarx(R)OS API supports i386, x86_64 and ARMv7/aarch64 platforms and includes SDK and set of samples for: - GNU C/C++ Compiler (gcc 6.0 or higher) - Java Virtual Machine (OpenJDK Version 8 or higher) - Qt4 - ADA - REALbasic Please note that we also support .Net Core 2.1+ with Linux as target. Corresponding libraries and sample code can be found in the "Smarx(R) OS PPK" for Windows. Support for further environments can be provided on request, please contact us (see "6. Contact Details") The following Smarx(R)OS programming interfaces are supported: a) Smarx(R)API - high level, object oriented APIs (see /Samples/SmarxAPI/readme.txt for further details): - SmarxAPI - AC API - SmarxCpp b) Standard API subsets: - CBIOS: querying the CRYPTO-BOX local and in networks, access to memory and encryption functions) - DO: using (encrypted) DataObjects, such as Expiration Date, Counters or customized memory objects - RFP: updating the CRYPTO-BOX at the end-user side 5.2 API directory content ------------------------- The /api subfolder includes the following files and folders: - api.txt - this file - sdk/%os%/static/ - static SmarxAPI/CBIOS libraries - sdk/%os%/shared/ - shared SmarxAPI/CBIOS libraries - sdk/%os%/java/ - JNI (java native interface library for CBIOS/DO) - /samples/ - Standard API samples (CBIOS, DO, RFP) - /samples/SmarxAPI/ - SmarxAPI samples (SmarxAPI, AC API, SmarxCpp) 5.3 Sample build instructions ----------------------------- To build and run gcc samples (CBIOS/DO/RFP): - copy corresponding libcbios.a for your platform from sdk/%os%/static/%platform% to /samples/%CBIOS_DO_RFP%/gcc/%lib% - navigate to /samples/%CBIOS_DO_RFP%/gcc/sample directory - run "make" - to run the sample, type: ./%sample_name% (do not forget "./" before sample name) To run Java sample (CBIOS/DO): - copy corresponding libjnicbios.so for your platform from sdk/%os%/java/%platform% to /usr/lib - navigate to /samples/CBIOS/jdk/bin directory and type "java CBIOSSample" to run the sample To build SmarxAPI samples: - refer to readme.txt in /Samples/SmarxAPI/ subfolder IMPORTANT REMARKS: a) libusb support must be installed on the build system. Our Smarx(R)OS libraries for the CRYPTO-BOX support modern libusb-1.0 & libudev. If libusb or libudev is not installed on your system, it can be downloaded from its official site http://www.libusb.org/ and installed manually or installed using apt-get (Ubuntu Linux), zypper (OpenSUSE), yum (Fedora) or any other package management system. For example, in Ubuntu command line execute command: $ sudo apt-get install libusb-1.0-0-dev $ sudo apt-get install libudev-dev In OpenSUSE Linux: $ sudo zypper install libusb-1_0-devel $ sudo zypper install libudev-devel b) To build SmarxAPI samples, libx11 package needs to be installed. Refer to readme.txt in /Samples/SmarxAPI/ subfolder for further details. c) To test samples in network mode, the Smarx(R)OS Network Server needs to be run on the computer where the CRYPTO-BOX(R) is attached - can be either the same computer or any computer in the local network. Refer to the readme in /network_server subfolder of this package for further details. ******************************************************************************* 6. Contact Details ******************************************************************************* U.S.A. ------------------------------ MARX CryptoTech LP 489 South Hill Street USA-30518 Buford, GA Phone: (+1) 770 904 0369 Fax: (+1) 678 730 1804 contact@marx.com www.marx.com Germany ------------------------------ MARX Software Security GmbH Vohburger Strasse 68 D-85104 Wackerstein Phone: (+49) 8403 / 9295-0 contact-de@marx.com Sales: (+49) 8403 / 9295-19 or sales-de@marx.com www.marx.com ******************************************************************************* 7. Version Information ******************************************************************************* 1.15.0421 21APR2015 KS libusb-1.0 supported, rebuild with new CBIOS functions, Support for latest Linux distributives (Ubuntu 14, CentOS 7, etc.) without usbfs support which lead to high processor load with our previous libraries 1.16.0304 04MAR2016 KS CBIOS libraries: plug-in detection changed, libudev supported, fixed "bad package" message for server packages under Ubuntu 1.16.0630 30JUN2016 KS CBIOS network mode stability improvements, updated Network Server (built with new CBIOS library) 1.17.1213 13DEC2017 KS SmarxAPI samples included, CBIOS libraries with CBIOS2017 updates (extended networking support) and sample code, RFP library revised: fixed crossplatform usage scenarios, PIC mode supported 1.19.0207 07FEB2019 KS New CBIOS static and dynamic libraries (libcbios.a / libcbios.so): No delays when using CBIOS in network mode, updated Network Server (built with new CBIOS library) 1.19.0228 28FEB2019 KS Updated jnicbios Java library: support for CBU SC extended AES/RSA encryption functions added 1.19.0429 29APR2019 AM Fixed bug when network server sometimes hangs when accepting a new connection 1.19.1021 22OCT2019 KS CBIOS static and dynamic libraries (libcbios.a / libcbios.so) and Network Server packages for ARMv7 32bit and ARMv8 (aarch64) platforms (Raspberry Pi 3 and 4) added SmarxAPI samples: Ubuntu 18.04 compatibility fix 1.20.0122 22JAN2020 KS Updated CBIOS (libcbios/libjnicbios) and Smarx API (libSmarxCPP) libraries: CDO overflow fix; Smarx API: support for for ARMv7 32bit and ARMv8 (aarch64) platforms added 1.20.0217 17FEB2020 KS Fixed Smarx API (libSmarxCPP) library for Debian x64 ADA sample: Issue with data types fixed Smarx API samples (SmarxCbiosCpp): code fixes and updated readme making it easier for developers to get started. 1.20.0824 24AUG2020 AM Rebuilt jnicbios with latest cbios version IPv6 support for CBIOS (Debian, Red Hat support is available on request) 1.21.0601 01JUN2021 AM netcbios_server: - Fix udev rules for Debian package - Added IP option to network server configuration - Fixed UDP search bugs - Added DDoS protection to network server Fixed build scripts for gcc samples Libraries rebuild with latest CBIOS updates and fixes SmrxProg: Added SmarxAPI license generation *********** Copyright(c) 2002, 2021 MARX(R) CryptoTech LP ********************* *****************************************************************************/