
BESTCRYPT for Linux - PRODUCT LICENSE INFORMATION

NOTICE TO USERS: CAREFULLY READ THE FOLLOWING LEGAL AGREEMENT.
USE OF THE BESTCRYPT SOFTWARE PROVIDED WITH THIS AGREEMENT (THE "SOFTWARE") CONSTITUTES
YOUR ACCEPTANCE OF THESE TERMS.  IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT,
DO NOT INSTALL AND/OR USE THIS SOFTWARE.  USER'S USE OF THIS SOFTWARE IS CONDITIONED
UPON COMPLIANCE BY USER WITH THE TERMS OF THIS AGREEMENT.

1. LICENSE GRANT.  Jetico, Inc. grants you a license to use one copy of the version of
this SOFTWARE on any one system for as many licenses as you purchase.
"You" means the company, entity or individual whose funds are used to pay the license fee.
"Use" means storing, loading, installing, executing or displaying the SOFTWARE.
You may not modify the SOFTWARE or disable any licensing or control features of
the SOFTWARE except as an intended part of the SOFTWARE's programming features.
When you first obtain a copy of the SOFTWARE, you are granted an evaluation period of
not more than 30 days, after which time you must pay for the SOFTWARE according
to the terms and prices discussed in the SOFTWARE's documentation, or you must
remove the SOFTWARE from your system.  This license is not transferable to any
other system, or to another organization or individual.  You are expected to use
the SOFTWARE on your system and to thoroughly evaluate its usefulness and functionality
before making a purchase.  This "try before you buy" approach is the ultimate guarantee
that the SOFTWARE will perform to your satisfaction; therefore, you understand and agree
that there is no refund policy for any purchase of the SOFTWARE.

2. OWNERSHIP.  The SOFTWARE is owned and copyrighted by Jetico, Inc.  Your license
confers no title or ownership in the SOFTWARE and should not be construed as a sale of
any right in the SOFTWARE .

3. COPYRIGHT.  The SOFTWARE is protected by copyright law of Finland and international
treaty provisions. You acknowledge that no title to the intellectual property in
the SOFTWARE is transferred to you.  You further acknowledge that title and full
ownership rights to the SOFTWARE will remain the exclusive property of Jetico, Inc
and you will not acquire any rights to the SOFTWARE except as expressly set forth in this license.
You agree that any copies of the SOFTWARE will contain the same proprietary notices which
appear on and in the SOFTWARE.

4. REVERSE ENGINEERING. You agree that you will not attempt to reverse compile, modify,
translate, or disassemble the SOFTWARE in whole or in part.

5. NO OTHER WARRANTIES.  JETICO, INC DOES NOT WARRANT THAT THE SOFTWARE IS ERROR FREE.
JETICO, INC DISCLAIMS ALL OTHER WARRANTIES WITH RESPECT TO THE SOFTWARE, EITHER EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  SOME JURISDICTIONS
DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATIONS ON HOW LONG AN IMPLIED
WARRANTY MAY LAST, OR THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES,
SO THE ABOVE LIMITATIONS OR EXCLUSIONS MAY NOT APPLY TO YOU.  THIS WARRANTY GIVES YOU
SPECIFIC LEGAL RIGHTS AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM JURISDICTION TO JURISDICTION.

6. SEVERABILITY.  In the event of invalidity of any provision of this license,
the parties agree that such invalidity shall not affect the validity of the remaining
portions of this license.

7. NO LIABILITY FOR CONSEQUENTIAL DAMAGES.  IN NO EVENT SHALL JETICO, INC OR ITS SUPPLIERS
BE LIABLE TO YOU FOR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY
KIND ARISING OUT OF THE DELIVERY, PERFORMANCE OR USE OF THE SOFTWARE, EVEN IF JETICO, INC
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL JETICO, INC' LIABILITY
FOR ANY CLAIM, WHETHER IN CONTRACT, TORT OR ANY OTHER THEORY OF LIABILITY, EXCEED THE LICENSE
FEE PAID BY YOU, IF ANY.

8. GOVERNING LAW.  This license will be governed by the laws of Finland as they are applied
to agreements between Finland residents entered into and to be performed entirely within Finland.
The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed.

9. ENTIRE AGREEMENT.  This is the entire agreement between you and Jetico, Inc which
supersedes any prior agreement or understanding, whether written or oral, relating to
the subject matter of this license.

©Jetico, Inc. 1995 - 2002.
