************************************************************************
                   HIP 2.1 - source code information
            Copyright (C)  2001 Davi Tassinari de Figueiredo
************************************************************************

                    -------------------------------
                      Files in HIP source package
                    -------------------------------

  - *.e; *.ex; *.ew; *.exw - Source files for HIP
  - extras\*.* - Additional files (see 'Additional files', below)
  - hip.htm; hip.txt - General HIP documentation
  - hip-src.txt - HIP source code information (this file)
  - COPYING - The GNU General Public License 


                               ---------
                                 Notes
                               ---------

This package does not include the reading/writing routines for GIF
files, because of potential patent problems (see 'Legal Warning' in the
main HIP documentation). The gif.e file included in this package does
not contain any code; it exists only so that HIP will run normally. The
gif.e containing the necessary code is in a separate package, available
from the HIP page.

This package includes only the message file in English (m_en.e); it does
not include any translated message files. Messages in other languages
are available from the HIP page.

HIP 2.1 has not been tested under Linux. HIP 2.0 worked in Linux and
I believe there has not been any modification that could make it crash.
As soon as I install Linux in the computer I'm currently using, I'll
try it and fix anything that may be broken.


                      ---------------------------
                        Source code information
                      ---------------------------

Algorithm overview
------------------

I intended to write an overview of the program flow and algorithms used,
to make understanding how it works easier, but I am lazy. Tell me if you
want/need it.


Source files
------------

Here is a very brief description of each source file used in HIP. It was
written in a hurry for HIP 2.0 and not checked completely for HIP 2.1, so
it may be innacurate.

*** General-purpose

errors.e    - Error constants and messages, bug handling
fileutil.e  - Misc file utility routines
constant.e  - Constants used in several parts of HIP


*** Encryption

truerand.e  - Random number generator; collects entropy from other files
sha1.e      - Secure Hash Algorithm
encrypt.e   - Key initialization and algorithm identification


Files for working with the encryption algorithms:

blowfish.e  - The Blowfish encryption algorithm
rijndael.e  - The Rijndael encryption algorithm
enc_algs.e  - Wrapper for the encryption algorithms above
stream.e    - Data stream encryption/decryption in CFB mode


*** Hiding/retrieving

scatter.e   - Hiding/retrieving the data in the appropriate picture bytes
rand.e      - Pseudo-random number generator used by scatter.e


*** Hidden file header

main.e      - Writing/reading the header, initializing hiding/retrieving
crc32.e     - Checksum algorithm


*** Bitmaps

pal.e       - Palette matching and sorting, computing HIP data for images
pictures.e  - Writing/reading the hidden data in bitmap images

File formats:
formats.e   - Wrapper for working with several graphic formats
bmp.e       - Writing/reading BMP files
gif.e       - Writing/reading GIF files (or empty file if no GIF support)


*** User Interface

msg.e       - Handles non-ASCII standard characters in messages
m_XX.e      - Constants for all the messages and text in HIP, translated into
              the appropriate language

sle.e       - Single-line edit routine used by command-line version
hip.ex      - The main program for the command-line version of HIP

winhip.exw  - The main program for the Windows version of HIP
xpms.ew     - Pictures for the buttons in the Windows program

win32lib.ew - Library for Windows programming - version 0.55.1, with
              some subtle modifications (search for the text "davitf")
tk_maths.e  - used by win32lib.ew
tk_mem.e    - used by win32lib.ew
tk_misc.e   - used by win32lib.ew
w32keys.e   - used by win32lib.ew


                          --------------------
                            Additional files
                          --------------------

The extras directory contains files which are not necessary for HIP to
run or compile, but may be useful if you are playing with the source.

Several HIP source files contain machine code routines for better speed;
the sources for these routines are in this directory.

This directory also contains replacement source files that perform the
same tasks as those files, but do not contain machine code routines.
They are slower, but should be easier to understand, modify and port.


Files in the extras directory:

arcfinit.asm, arcfour.asm, remaind.asm
	     - ASM sources for the routines in rand.e
bf_enc.asm, bf_dec.asm, bf_key.asm
	     - ASM sources for the routines in blowfish.e
crc_calc.asm, crctable.asm
	     - ASM sources for the routines in crc32.e
sha1.asm     - ASM sources for the routine in sha1.e

bf_old.e     - Replacement for blowfish.e
crc32old.e   - Replacement for crc32.e
rand_old.e   - Replacement for rand.e
sha1_old.e   - Replacement for sha1.e

winhip.ico   - Icon for the HIP Windows executable