ITK Programmer's Guide


Table of contents | Intro | General | TCP Low Level | TCP High Level | UDP | DNS | PPP
Encoding/Decoding | Internet Config | Goodies | Cryptography & SSL | Appendix


What's new in ITK v2.5 ?

ITKv2.5 provides more than 15 new routines and some enhancements to existing routines. This document tries to point directly to the new features you'll find in ITK v2.5 compared to ITKv2.


SSL Support :

ITKv2.5 supports SSLv2, SSLv3 and TLSv1(the successor of SSLv3) in "export" (40 bits) and "domestic" (128bits) and "full" (168bits) ciphers. SSL support is only available in the "Pro" version of ITK and not available for 68K Macs .

To act as an SSL server you need to have an ITK Pro development license as well as an additional SSL server deployment license for each SSL server deployed.

New routines:

There a just 3 new routines added to support SSL, most existing ITK routines will run transparently on classical TCP streams or SSL streams which means that existing ITK based code will need very little changes to run in SSL.

ITK_SSLSetCert is used to define your server certificate and private key.

ITK_SSLStrmInfo is used to obtain some information on an SSL stream (like the version of SSL used, the cipher used, the ciphering level, etc).

ITK_SSLGetError can be used to obtain informations on errors that are occuring at the SSL level.

Existing routines that have been modified for SSL support:

ITK_TCPListen and ITK_TCPOpen are switching automatically to SSL if portnumber is 443. New option flags have also been added to allow to switch to SSL on other port numbers.

ITK_TCPStatus has been modified to allow to return the amount of data transmitted at both the SSL level or at the TCP level.


More cryptography routines :

ITK_EncryptText , ITK_EncryptBlob , ITK_DecryptText and ITK_DecryptBlob are encryption/decryption routines that allows to apply ciphers like DES, TripleDES, CAST-128 (defined in RFC#2144), TwoFish-128 and Unix crypt on text or blobs. These routines are only available in the "Pro" version of ITK .

New digest formats have also been added in ITK_DigestInit like SHA-1 or RIPEMD-160 (which is use by QuickDNS load-balancing) as well as CRC32 and ADLER32 checksum calculations.


More blob related routines :

ITK_BlobSave and ITK_BlobRead are enhanced version of 4D's BLOB TO DOCUMENT and DOCUMENT TO BLOB commands.

ITK_Record2Blob and ITK_Blob2Record allow to convert a full record into a blob and the reverse. This is very usefull when using ITK for database synchronization.

ITK_BlobSearch and ITK_BlobReplace are all purpose search and replace routines that can be used on blobs.


New compression routines :

ITK_Mac2gzip and ITKgzip2Mac allow to compress and decompress files using the gzip compressed file format defined in RFC#1952. This compression format can be very usefull in HTTP (both v1.0 and 1.1) to allow compressed HTML files transparent transfer.

gzip compression can also be used directly on blobs using ITK_Blobgzip and ITK_Blobgunzip .