The Digital Keys Library

The Digital Keys Library Copyright © 2000 RITLABS S.R.L.
Version 1.0

Table of Contents

Intro

The Digital Keys Library is a Win32 DLL written in Delphi with a set of high-level functions to encrypt text and / or add a digital signature to it (also decrypt text and / or verify the digital signature) using RSA (up to 4096 bits(!)), IDEA & MD5 algorithms. Data packet and key (keyrings) format is compatible with PGP (RFC-1991). The library also supports Schlumberger Smart-Cards with Dekart Company formatting.

Written by:

Licence

The Digital Keys Library is copyright (C) 2000 RITLABS S.R.L. ("RITLABS"). All rights reserved.

The licence describes the conditions under which you may use version 1.0 of The Digital Keys Library ("the library"). If you are unable or unwilling to accept these conditions in full, then, notwithstanding the conditions in the remainder of this licence, you may not use the library at all.

You are granted a non-exclusive licence to use the library for commercial or non-commercial use. The library may not be rented, leased or transferred.

Any use of the library which is illegal under international or local law is forbidden by this licence. Any such action is the sole responsibility of the person committing the action.

The library is distributed "AS IS" and you assume full responsibility for determining the suitability of the library and for results obtained.

RITLABS makes no warranty that all errors have been or can be eliminated from the library and, with respect thereto, RITLABS shall not be responsible for losses, damages, costs, or expenses of any kind resulting from using or misusing the library including without limitation, any liability for business expenses, machine downtime, damages experienced by you or any third person as a result of any deficiency, defect, bug, error or malfunction. RITLABS shall not be liable for any indirect, special, incidental, or consequential damages relating to or arising out of the subject matter of this Agreement or actions taken thereunder

NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE THE LIBRARY AT YOUR OWN RISK. RITLABS DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. NOBODY WILL BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.

You may not distribute, copy, emulate, clone, rent, lease, sell, modify, decompile, disassemble, otherwise reverse engineer, or transfer the library, or any subset of the library.

All rights not expressly granted here are reserved by RITLABS.

RITLABS reserves the right to make exceptions to any of these conditions, or alter these conditions, at any time. However, you may always use these conditions instead of any altered version if you prefer (note that this licence explicitly applies only to one version of the library; therefore, if RITLABS make new conditions in connection with a future version, you do not then have the right to apply these conditions to that version instead).

Installing or using the library signifies acceptance of these terms and conditions of the licence.

If you do not agree with the terms of this licence you must remove the library from your storage devices and cease to use the library.

Files

The Digital Keys Library distribution package contains the following files:

API.HLPHelp on Digital Keys Library API.
API.CNTTable of contents of Digital Keys Library API help.
API.CHMHelp on Digital Keys Library API, in HTML format.
DKLIB32.DLLThe Digital Keys Library DLL.
DKLIBAPI.PASInterface unit for the Digital Keys Library.
DKLIBDYN.PASInterface unit to load the Digital Keys Library DLL dynamically.
LIBTEST.DPRSample application using the Digital Keys Library.

List of Functions

The Digital Keys Library uses the following set of high-level entry points:

DK_LoadKeyrings Initialises the Digital Keys Library DLL for use by a calling process and loads the keyrings.
DK_Encode Encrypts text and / or adds a digital signature to it.
DK_Decode Decrypts text and / or verifies the digital signature.
DK_Free Terminates use of the library DLL.
DK_GetLastError Gets the error status for the most recent operation failure.

For a more detailed description of these functions, refer to the Digital Keys Library API which comes in two formats: Win32 Help (API.HLP/API.CNT) and HTML Help (API.CHM). More information on HTML Help is available at http://msdn.microsoft.com/library/tools/htmlhelp/

Algorigthms used

RSA

RSA is a public-key cryptosystem that offers both encryption and digital signatures (authentication). Ron Rivest, Adi Shamir, and Leonard Adleman developed RSA in 1977;

RSA is an abbreviation composed of the first letters of the inventors' surnames.

The RSA Algorithm is detailed in the RSA Patent, which was issued to Drs. Rivest, Shamir and Adelman, who exclusively licensed the patent nine days later to RSA Data Security, Inc., The patent expires on September 20, 2000.

The Digital Keys Library supports RSA keys up to 4096 bits.

This implementation was written by Eric Young and further developed by the OpenSSL group, see the following credits:

The Digital Keys Library includes cryptographic software (the RSA part of SSLeay) written by Eric Young (eay@cryptsoft.com).

The Digital Keys Library includes software (the Win32 adaptation of SSLeay) written by Tim Hudson (tjh@cryptsoft.com).

The Digital Keys Library includes software (enhancements to the RSA part of SSLeay) developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)

IDEA

IDEA (International Data Encryption Algorithm), formerly known as IPES (Improved Proposed Encryption Standard). Algorithm developed by Xuejia Lai and James L. Massey, of ETH Zurich. This implementation was modified and derived from original C code developed by Xuejia Lai.

Extensively optimized and restructured by Colin Plumb.

The IDEA(tm) block cipher is covered by patents held by ETH and a Swiss company called Ascom-Tech AG. The Swiss patent number is PCT/CH91/00117, the European patent number is EP 0 482 154 B1, and the U.S. patent number is US005214703. IDEA(tm) is a trademark of Ascom-Tech AG. There is no license fee required for noncommercial use. Commercial users may obtain licensing details from Dieter Profos, Ascom Tech AG, Solothurn Lab, Postfach 151, 4502 Solothurn, Switzerland, Tel +41 65 242885, Fax +41 65 235761.

The IDEA block cipher uses a 64-bit block size, and a 128-bit key size.

Further information on the IDEA cipher can be found in the book by Xuejia Lai, "On the Design and Security of Block Ciphers", ETH Series on Information Processing (ed. J.L. Massey) Vol 1, Hartung-Gorre Verlag, Konstanz, Switzerland, 1992. ISBN 3-89191-573-X.

MD5

MD5 stands for RSA Data Security, Inc. MD5 Message-Digest Algorithm.

This implementation uses optimized assembler routine written by Peter Sawatzki (http://www.sawatzki.de).

Source Code

The source code of DKLIB32.DLL is not a part of The Digital Keys library, but you can purchase it for 139 USD. Thus you will not only be donating to the author but will also support further development. You will also be able to use The Digital Keys library functions within your own Delphi applications without using DKLIB32.DLL, as we did for The Bat!.

You will also receive the source code for The Digital Keys Manager - an application for manipulating PGP keys.

To purchase The Digital Keys library source code, just include your check or money order made payable to CIFNet, Inc. and mail it to: 2545 W. Peterson Ave. Suite 209, Chicago, IL 60659.

The following tools are used to compile DKLIB32.DLL:

  1. Delphi (any version from 2 to 5) - for the library itself.
  2. BCC32i; Borland C++ 5.0 Win32 optimizing compiler, which comes with Borland C 5.0 - for the RSA and IDEA algorithms. It can be also be compiled with BCC32, which comes with CBuilder, but you will need to make some modifications and write support for the intrinsic functions in that case.
  3. TASM32; Turbo Assembler Version 5.0 - for MD5 and output produced by BCC32i.
If you have no BCC32i or TASM32, you can use .OBJ-files which come with the source code.

Download

The Digital Keys Library v1.0


Copyright © 2000 RITLABS S.R.L. All rights reserved.
Edited by Marck D. Pearlstone.