EasyLicenser C/C++ Multiplatform Library Distribution
-----------------------------------------------------

Version
-------
2.5.00

Purpose
-------
The zip file represents the multiplatform C/C++ EasyLicenser
runtime library distribution that supplements the main
EasyLicenser product distribution.

Compatibility
-------------
The EasyLicenser 2.5.00 runtime library is compatible with
license keys generated using EasyLicenser License Manager
and the corresponding key generation libraries 
versions 1.1 through 2.5.

Contents
--------
Binary code for the EasyLicenser C/C++ library, Include files,
source and binary code for demo programs, and source and
binary code for utilities, for all supported core platforms.
The directory structure is identical to the "cpp" directory 
hierarchy of the main EasyLicenser product distribution,
with the difference that whereas the former includes only Windows 
and Linux platform support, this distribution includes 
Windows, Linux, Solaris-Intel and Solaris-SPARC platform support.

Installation
------------
Unzip the zip file at any convenient location.  Since the
root directory that is created / updated is "cpp", it is 
recommended that you unzip the file while positioned at 
the EasyLicenser directory for the installation being upgraded
to EasyLicenser 2.5.00.

If using the Java JDK "jar" utility, the command is:
   jar xvf ezlmcpp25-00-042707.zip

The corresponding command using "unzip" is:
   unzip ezlmcpp25-00-042707.zip

Important notes:

1. The safest way to unzip the file on Linux and Unix
   platforms is to use the Java JDK's "jar" utility, 
   as this preserves the execution permission on the 
   directory hierarchy.  In particular, do not use 
   "unzip" on Solaris as it wreaks havoc on directory
   permissions.

2. On Linux and Unix platforms, after unzipping the file, 
   fix the execution permissions on shell scripts and
   binary code by running "fixunixscripts.sh" as follows:

   #first position to the cpp directory
   cd cpp
   # fix scripts and binaries in the directory hierarchy
   sh -f fixunixscripts.sh


Changes Since Version 2.0.02
----------------------------

1. Functionality improvements

   1. Extended high-level API:
      The high-level extended API enables deferred node locking
      and deferred time-limited licensing functionality.
      The API also automates the process of securely 
      managing license state including metered license consumption.
      For further details, please see the accompanying
      README-CPP-2.5.00-MMDDYY-EXTAPI.TXT.

2. Bug fixes

   1. A license key that was generated with the "user" license
      model and "host" license type was not always processed
      correctly - some of the keys were rejected as invalid.

3. API improvements

   1. New API calls:
      1. "get version info":
         Retrieves runtime library version information.
      2. "get status message string":
         Retrieves a human-readable message text corresponding
         to an error condition, from the license context.
    2. Additional semantics to existing API's:
       1. Hidden-file name specification option:
          The hidden-file directory parameter for the
          hidden file related API calls is overloaded to 
          optionally specify a file rather than a directory.  
          If the parameter has a value ending in ".ehf", it is 
          taken to mean a fully-qualified file name.
       2. API mulithread-safety:
          All API calls are multithread-safe.  Any 
          necessary serialization is managed internally by
          the client library itself.  Serialization is
          performed internally for file IO operations.


4. Core and extended platform additions and deletions:

   1. 32-bit Solaris 10 support (compatible with Solaris 7+)
      is added for SPARC and Intel as part of the core 
      platform support.
   2. HPUX-PARISC support is discontinued.

5. Additional utilities:

   1. A "ezlmgetmachineinfo" node-lock information retrieval 
      utility is provided in order to enable end customers to
      provide OS-level node locking information.

Platform / Compiler / Hardware Matrix
-------------------------------------

1. Windows
   Hardware: 32-bit Intel
   Operating System: all 32-bit Windows platforms
   Subdirectory name: win32
   C/C++ compiler: Microsoft Visual C++ 6.0
   Calling convention for public functions: stdcall
   
2. Linux on Intel: gnu
   Hardware: 32-bit Intel
   Operating System: all Linux distributions 
       based on kernel version 2.4.
   Subdirectory name: linux
   C/C++ compiler: gnu gcc 3.3+.
   Compiler and platform used for binary distribution
   build: gnu gcc 3.3.2-1, Red Hat Fedora Core 1
   
3. Solaris on Sparc: gnu
   Hardware: SPARC
   Operating System: Solaris version 7 or above,
	32/64 bit
   Subdirectory name: sun-gnu
   C/C++ compiler: gnu gcc 3.4+ and above.
   Compiler and platform used for binary distribution
   build: gnu gcc 3.4.3, Solaris 10

4. Solaris on Intel: gnu
   Hardware: 32-bit Intel
   Operating System: Solaris version 7 or above,
	32/64 bit
   Subdirectory name: sun-intel-gnu
   C/C++ compiler: gnu gcc 3.4+.
   Compiler and platform used for binary distribution
   build: gnu gcc 3.4.3, Solaris 10


Further Information
-------------------
API reference: 
   Comment header and API comments in 
   ezLicenseInfo.h (core functionality) / 
   ezLicenseExtAPI.h (extended functionality)
Demo source code:
   C_Demo.c:
       Illustrates basic stateless license checking
   cdemostate.c: 
       Illustrates the use of the secure API and
       key cookies for automatically managing state
       including metered usage consumption.
   cdemosecure.cpp:
       Illustrates the use of the secure API,
       digital signature and custom key handler
       mechanisms for the purpose of providing a
       high level of security.
   cdemoextapi.c:
       Illustrates how to use the extended API both
       for managing deferred time-limited /
       deferred node-locked licensing in conjunction
       with an Agilis enabler key, and for automatic
       state management with less coding than is
       required with the secure API.
Extended API semantics:
    See the accompanying README-CPP-2.5.00-MMDDYY.TXT
    for a guide to using the extended API and its
    underlying concepts.

                   -x-
Revision History
----------------
04/27/07   Update for 2.5.00
08/18/06   Update for 2.0.10
01/21/04   Update for 2.0.02
01/07/04   Creation
 