home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / hpack79o.zip / hpack.doc next >
Text File  |  1993-09-01  |  113KB  |  2,273 lines

  1.  
  2.                         -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3.   Ver:0.79a0            HPACK - Multi-System Archiver               1 May 1993
  4.                         -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  5.  
  6.  
  7.   The HPACK Multi-System Archiver is an archiver that was written to allow the
  8.   transfer  of archived data to different systems.  In the past archivers have
  9.   traditionally been available for single systems only, for example  PKZIP(tm)
  10.   and  LHARC for the IBM PC, Larc for the Amiga, StuffIt(tm) and Compactor for
  11.   the Macintosh, and tar and compress for UNIX systems (while these  archivers
  12.   are  available  on  other  systems,  their  use  is  not widespread).  It is
  13.   intended to make HPACK a more universal archiver by  offering  versions  for
  14.   the following environments:
  15.  
  16.     * Apple IIgs (planned)
  17.     * Archimedes
  18.     * Atari ST
  19.     * Commodore Amiga
  20.     * Microsoft Windows
  21.     * Macintosh
  22.     * MSDOS
  23.     * OS/2 (16 and 32-bit versions)
  24.     * OS/2 Presentation Manager (currently in development)
  25.     * Primos (planned)
  26.     * UNIX
  27.     * VMS (currently in development)
  28.     * Any other system which people offer to port it to
  29.  
  30.   Currently  Bavarian,  Dutch,  English, German, Italian, Polish, Spanish, and
  31.   Swiss German versions of HPACK using the ASCII, IBM PC,  IBM  Codepage  850,
  32.   IBM  Codepage  869,  ISO  8859-1 (Latin 1), ISO 8859-2 (Latin 2), ISO 8859-3
  33.   (Latin 3), ISO 8859-4 (Latin 4), Macintosh, Mazovia, and NeXTSTEP  character
  34.   sets  exist.  Anyone wishing to take advantage of these features should read
  35.   the section "HPACK Internationalization" below.
  36.  
  37.   Note: This documentation is intended mainly as an alternative to the  proper
  38.   documentation  which  is  in  Postscript  format.   If  possible  the proper
  39.   documentation should be used.
  40.  
  41.  
  42. Using HPACK
  43.  
  44.   HPACK is run with the following command:
  45.  
  46.     HPACK command [options] archive [filenames.....][@scriptfiles.....]
  47.  
  48.   Allowed commands are:
  49.  
  50.     [A] - Add files to an archive.
  51.     [X] - Extract files from an archive.
  52.     [V] - Display a directory of files inside an
  53.     [P] - View files within an archive.
  54.     [T] - Test the integrity of an archive.
  55.     [D] - Delete files from an archive.
  56.     [F] - Freshen files to an archive.
  57.     [R] - Replace files in an archive.
  58.     [U] - Update files to an archive.
  59.  
  60.   Allowed options are:
  61.  
  62.     -0 - Store files without attempting any compression.
  63.     -a - Store file attributes.
  64.     -b<path>
  65.        - Specify a base pathname for all files.
  66.     -c<options>
  67.        - Encryption options (conventional and public-key encryption).
  68.     -d<options>
  69.        - Directory options (Mkdir, Rmdir, Mvdir, path options etc).
  70.     -e - Add/use error recovery information.
  71.     -f - Force file move into/out of an archive.
  72.     -i - Interactive mode (prompt for all actions).
  73.     -k - Overwrite existing archive.
  74.     -l<options>
  75.        - Security options (data authentication)
  76.     -m - Create a multipart archive.
  77.     -o<options>
  78.        - Overwrite on extraction options (All, None, Prompt, Smart).
  79.     -r - Recurse through subdirectories.
  80.     -s - Run in stealth mode.
  81.     -t - Touch files on extraction.
  82.     -u - Unified compression mode.
  83.     -v<options>
  84.        - View files options (Files, Directories, All).
  85.     -w - Treat files as archive comments.
  86.     -x<options>
  87.        - Text file translate options (see below).
  88.  
  89.     +<extended options>
  90.        - Extended options (usually system-specific, see below).
  91.  
  92.   Commands,  options,  extended  options,  and  archive  and file names may be
  93.   given in upper or lower case (they are given in lowercase  in  the  examples
  94.   which follow merely for consistency).  Options may be lumped together or may
  95.   be  given  seperately preceded by the '-' delimiter.  The option '--' may be
  96.   used to indicate that no more options  are  present  on  the  command  line,
  97.   following the standard Unix convention.   Extended  options  must  be  given
  98.   seperately preceded by the '+' delimiter.
  99.  
  100.   The default archive  extension  is  '.HPK'.   HPACK  will  always  add  this
  101.   extension  (provided  the  underlying  filesystem supports it), changing any
  102.   other given extension if necessary.  Note that some quantum physics theories
  103.   suggest  that  when the user is not directly observing the HPACK archive, it
  104.   may cease to exist or will exist only in a vague and indeterminate state; in
  105.   this case the existence of the '.HPK' extension cannot be guaranteed.
  106.  
  107.   The filenames field may consist of zero or more filenames, defaulting to all
  108.   files  if  no  filenames  are given (in other words archive all files in the
  109.   current directory, or dearchive/view all files in the archive).  HPACK  uses
  110.   UNIX-style  wildcards  (which  are  described  in  more  detail below in the
  111.   section "HPACK Wildcards"), as well as UNIX-style pathnames in place of  the
  112.   usual ones used by the systems' command interpreter, so that for example the
  113.   path:
  114.  
  115.     /TEMP/WORK/FILES
  116.  
  117.   is used instead of the MSDOS equivalent:
  118.  
  119.     \TEMP\WORK\FILES
  120.  
  121.   or the VMS equivalent:
  122.  
  123.     [TEMP.WORK]FILES
  124.  
  125.   or the Archimedes equivalent:
  126.  
  127.     $.temp.work.files
  128.  
  129.   If any additional components are needed, such as drives, network  nodes,  or
  130.   devices,  these  can  be  specified  in the manner usual to the host command
  131.   interpreter.  For example if the path in the above example were on drive  A:
  132.   under MSDOS the pathname would be:
  133.  
  134.     A:/TEMP/WORK/FILES
  135.  
  136.   If the path in the above example were on the 'HOME' node, on device  'DISK1'
  137.   under VMS, the pathname would be:
  138.  
  139.     HOME::DISK1:/TEMP/WORK/FILES
  140.  
  141.   The scriptfiles are names of files preceded with  an  '@'  character.   When
  142.   HPACK  encounters  one  of  these  it  will  treat  the  filename  as a file
  143.   containing a list of files to process.  Script files  and  normal  filenames
  144.   may  be  freely  mixed  on  the command line.  See the section "HPACK Script
  145.   Files" below for more information.
  146.  
  147.  
  148. HPACK Wildcards
  149.  
  150.   When HPACK scans any filename that has been given to it, it will  check  for
  151.   the presence in the filename of any of the special characters:
  152.  
  153.     * ? [ ] \
  154.  
  155.   If one of these is detected, then the string of  characters  making  up  the
  156.   filename  will be treated as being a pattern for a filename, rather than the
  157.   name of a specific  file.   These  special  characters  have  the  following
  158.   meanings when used in a filename string:
  159.  
  160.   *       Matches zero or more characters
  161.  
  162.   ?       Matches any one character
  163.  
  164.   [...]   Matches any of the enclosed range of characters '...' in  turn.   If
  165.           two  characters  appearing  in the pattern in alphabetical order are
  166.           separated by a dash '-', then any character in the alphabetic  range
  167.           between  these  two  characters  will  be  matched.   This is a more
  168.           selective version of the '?' form.
  169.  
  170.   [^...]  As above, but this time matches  anything  *not*  in   the  enclosed
  171.           range of characters '...'.
  172.  
  173.   \       Treat the next character as a normal character rather  than  one  of
  174.           the  special  characters.   This  can  be used to override the usual
  175.           meaning of the '*', '?', '[]', and '\' characters.   Note  that  the
  176.           Atari  ST,  MSDOS,  and OS/2 version of HPACK use '#' instead of '\'
  177.           since the command interpreter uses '\' in its pathnames.
  178.  
  179.   The case-sensitivity when handling filenames depends on the operating system
  180.   HPACK  is  being  run  under.   On  the  Atari  ST  and under MSDOS and VMS,
  181.   filenames are converted to uppercase, but are  not  case-sensitive;  on  the
  182.   Amiga,  Archimedes, Macintosh, and under OS/2, filenames are left as is, but
  183.   are also not case sensitive  (so  that  "FileName"  will  match  "Filename",
  184.   "FILENAME",  and  "filename"); and under Unix, filenames are left as is, and
  185.   are case sensitive,  so  that  "makefile"  and  "Makefile"  are  treated  as
  186.   seperate names.
  187.  
  188.   These wildcards can be combined to create quite powerful  expressions.   For
  189.   example,  to match any file not beginning with an 'a', 'b', 'c', or 'f', and
  190.   containing at least two characters, the required expression would be:
  191.  
  192.     [^a-cf]?*
  193.  
  194.   where the [^a-cf] would match anything but 'a', 'b', 'c', or  'f';  the  '?'
  195.   would  match  the  second  character  required,  and the '*' would match any
  196.   remaining characters.
  197.  
  198.   For example, if we have an archive whose contents are:
  199.  
  200.     file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  201.     file6.txt  file7.txt  file8.txt  file9.txt  Index.txt
  202.  
  203.   we could perform the following file matches on it:
  204.  
  205.   Expression:     Matches files:
  206.  
  207.   *               file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  208.                   file6.txt  file7.txt  file8.txt  file9.txt  Index.txt
  209.   F*              file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  210.                   file6.txt  file7.txt  file8.txt  file9.txt
  211.   *4*             file4.txt
  212.   FILE?.TXT       file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  213.                   file6.txt  file7.txt  file8.txt  file9.txt
  214.   FILE[1-4].TXT   file1.txt  file2.txt  file3.txt  file4.txt
  215.   FILE[^1-4].TXT  file5.txt  file6.txt  file7.txt  file8.txt  file9.txt
  216.   FILE[1-46].TXT  file1.txt  file2.txt  file3.txt  file4.txt  file6.txt
  217.   FILE[^13-5].TXT file2.txt  file6.txt  file7.txt  file8.txt  file9.txt
  218.  
  219.   Finally,  note  that these wildcards may not perform quite like the standard
  220.   wildcards used by the  system's  command  interpreter.   For  example  under
  221.   GemDOS,  MSDOS, and OS/2, to specify all files in a directory or archive, it
  222.   is not necessary to use the usual sequence of "*.*".  Instead simply  typing
  223.   "*"  will  match all the files in the archive (the DOS-like wildcards are in
  224.   fact a bit of a hack - for example "*abc.*" will (incorrectly) match "*.*").
  225.   The extended wildcards act as true wildcards,  so  that  "FILE.*"  will  not
  226.   match "FILE" as it would under DOS, since there is a spurious "." in the DOS
  227.   wildcard  matching.   These extended wildcards can be useful when extracting
  228.   files which cannot normally be  handled  by  the  command  interpreter  from
  229.   archives,  for example to extract the file "Filename with spaces in it" from
  230.   the archive ARCHIVE.HPK, you would type:
  231.  
  232.     HPACK X ARCHIVE FILENAME?WITH?SPACES?IN?IT
  233.  
  234.   where the '?' wildcard will match the spaces.  Alternatively  you  can  just
  235.   type:
  236.  
  237.     HPACK X ARCHIVE FILENAME*
  238.  
  239.   which will usually do the same thing with a lot less typing involved.
  240.  
  241.   Another point is that these wildcards  cannot  be  used  to  represent  full
  242.   regular  expressions (the idea behind HPACK was to create an archiver, not a
  243.   regular expression parser), so that, for example, '*?' will not work  as  an
  244.   expression, and that they can only be used inside pathnames when the path is
  245.   inside the archive (since the extended wildcards are built  on  top  of  the
  246.   usual  operating  system ones (if they exist) the resulting system would run
  247.   very slowly if they had to be simulated on an external filesystem).
  248.  
  249.   Using wildcards for pathnames inside  archives  is  perfectly  legal.   When
  250.   matching  wildcards  to  pathnames, HPACK follows the standard convention of
  251.   matching the directory contents if the directory name is given, or  matching
  252.   the  directory  itself  when  a  wildcard matching it is given.  Consider an
  253.   archive with a subdirectory DIR, with both the archive  root  directory  and
  254.   the  subdirectory  containing  files.   Then  the following wildcard matches
  255.   could occur:
  256.  
  257.   '*'     Match all files and directories in the root directory
  258.  
  259.   'D?R'   Match  the  directory  DIR  (and  possibly  other files) in the root
  260.           directory.
  261.  
  262.   'DIR'   Match the contents of directory DIR (equivalent to 'DIR/*')
  263.  
  264.   '*/*'   Match all files and directories (equivalent to using  '*'  with  the
  265.           [-r]ecurse option).
  266.  
  267.   Unlike most filesystems, HPACK has no notion of a 'current directory' within
  268.   an  archive,  so  all  pathnames  must be given relative to the archive root
  269.   directory.
  270.  
  271.   Finally,  Unix  users  may  have  to  quote  the wildcard characters used to
  272.   prevent them being expanded by the  shell  if  it  is  required  that  HPACK
  273.   handle  wildcard  expansion.   One  case  in which this is necessary is when
  274.   recursively adding files in subdirectories which match a certain filespec to
  275.   an archive.  The command:
  276.  
  277.     HPACK A -R TEST *.H
  278.  
  279.   will cause the shell to expand the *.H filespec to match all  the  files  in
  280.   the  current  directory,  and  not  match  any  files in subdirectories.  In
  281.   contrast:
  282.  
  283.     HPACK A -R TEST '*.H'
  284.  
  285.   will cause HPACK to perform the wildcard expansion, and will  correctly  add
  286.   files in subdirectories.  Some shells provide other ways to turn  off  their
  287.   wildcard expansion, for instance csh users can do the following:
  288.  
  289.     set noglob
  290.     HPACK A -R TEST *.H
  291.     unset noglob
  292.  
  293.   and ksh users can use:
  294.  
  295.     set -o noglob
  296.     HPACK A -R TEST *.H
  297.     set +o noglob
  298.  
  299.  
  300. HPACK Commands
  301.  
  302.   [A]  Add files to an archive.  The archive  given  in  the  command-line  is
  303.        opened,  or  created  if  it  doesn't  already  exist, and is given the
  304.        extension '.HPK' if this is not explicitly specified.  Then  all  files
  305.        given in the list of filenames are added to to it.
  306.  
  307.        Example: To add all files in  the  current  directory  to  the  archive
  308.        ARCHIVE.HPK in the current directory:
  309.  
  310.          HPACK A ARCHIVE
  311.  
  312.   [X]  Extract files from an  archive.   All  files  are  extracted  from  the
  313.        archive  given  in  the  command line to the current directory.  If the
  314.        file already exists and no  overwrite  options  are  given  (these  are
  315.        explained  in  the section "HPACK Options" below), you will be asked if
  316.        you wish to overwrite it:
  317.  
  318.          File already exists - overwrite [y/n/a]
  319.  
  320.        'Y' will replace the file with the file from the archive, 'N' will skip
  321.        the  extraction  of this file, and 'A' will process all files from this
  322.        point as if a 'Y' answer was given for each file.  In  some  cases  the
  323.        name  of the file extracted will need to be translated to allow for the
  324.        naming conventions of different operating systems.  In these cases  the
  325.        original  name  will  be  printed,  followed  by  the  name  it will be
  326.        extracted under.
  327.  
  328.        On Apple systems data is divided into two sections in a file,  a  "data
  329.        fork"  and  a  "resource fork".  Under non-Apple operating systems only
  330.        the data fork will be extracted from  an  archive:  the  resource  fork
  331.        (which only Apple systems can make any use of) will be skipped.
  332.  
  333.        Example: To extract all files in ARCHIVE.HPK not beginning with an  'A'
  334.        to the current directory:
  335.  
  336.          HPACK X ARCHIVE [^A]*
  337.  
  338.   [V]  Display a directory of files inside an archive.  If no view options are
  339.        given  (these  are  explained  in the section "HPACK Options" below), a
  340.        listing in the following format is produced:
  341.  
  342.        HPACK - The multi-system archiver Version 0.79a0 (shareware version)
  343.        For Amiga, Archimedes, Atari ST, Macintosh, MSDOS, OS/2, and UNIX
  344.        Copyright (c) Peter Gutmann 1989 - 1993.  Release date: 1 Feb 1993
  345.  
  346.        Archive is 'ARCHIVE.HPK'
  347.  
  348.        System Length    Size   Ratio   Date     Time    Name
  349.        ------ ------- -------  ----- -------- --------  ------------------------
  350.         MSDOS   18537    6217   66%  04/05/90 11:32:48  README.TXT
  351.         Atari    8301    3169   74%  27/12/90 21:02:39  LZSS.EXE
  352.         UNIX    30061    9127   70%  24/11/89 16:52:57  compr.method.txt
  353.         OS/2     8481    3282   61%  22/12/90 08:58:52  Comp.test
  354.          Mac        0       0    0%  01/07/91 18:20:20  Fast LZ Decoder using B..
  355.        ------ ------- -------  -----                    -------------------------
  356.                 65380   21795   67%                     Total of 5 files
  357.  
  358.        Done
  359.  
  360.        The archive used is displayed, followed by a  list  of  all  the  files
  361.        within the archive.  The fields for each file inside the archive are as
  362.        follows:
  363.  
  364.        System:  The system the file was archived under.
  365.  
  366.        Length:  The length of the file when unarchived.
  367.  
  368.        Size:    The size of the compressed file within the archive.
  369.  
  370.        Ratio:   The ratio of the compressed file to the uncompressed file.
  371.  
  372.        Date:    The creation date of the file within the archive.
  373.  
  374.        Time:    The creation time of the file within the archive.
  375.  
  376.        Name:    The name of the file within the archive.  If the name  is  too
  377.                 long  to fit on the screen then a '..' is appended to indicate
  378.                 this.  In addition files may have a single character prepended
  379.                 to  them:  an asterisk '*' before the name indicates that this
  380.                 file has been encrypted, a dash '-' indicates that it includes
  381.                 authentication  information,  and a hash '#' indicates that it
  382.                 is both encrypted and includes authentication information.
  383.  
  384.                 Note that the name within the archive may not be the  same  as
  385.                 the name given to the unarchived file since translation may be
  386.                 necessary to allow for the  naming  conventions  of  different
  387.                 operating systems.
  388.  
  389.                 Note also that in the example above the  file  originating  on
  390.                 the  Macintosh  has  a  length  of  zero bytes.  This does not
  391.                 necessarily mean the total data  size  is  zero  bytes,  since
  392.                 files originating on Apple systems have a second block of data
  393.                 called a resource fork which contains code and  other  program
  394.                 resources.   These  resources are only useful on Apple systems
  395.                 and are not shown as part of the  total  file  size  on  other
  396.                 systems.
  397.  
  398.        Finally the total length of all files within the archive,  uncompressed
  399.        and  compressed, the overall compression ratio for the archive, and the
  400.        number of files within the archive, is given.   If  any  filespecs  are
  401.        given,  only files which match those filespecs will be displayed.  This
  402.        is useful when you only want to extract certain files and would like to
  403.        see how much space they will use.
  404.  
  405.        If more than one archive is viewed, a  grand  total  of  the  size  and
  406.        number  of  files  in  all the archives viewed is printed.  The type of
  407.        information printed may be controlled by using the view options  (which
  408.        are explained in the section "HPACK Options" below).  The default is to
  409.        print all files and directories in the root directory  of  an  archive.
  410.        If  the  root  directory  contains no files or directories matching the
  411.        given filenames and/or wildcards, the error message "No matching  files
  412.        in  archive"  will  be printed.  To recursively display the contents of
  413.        all subdirectories, either the [-r]ecurse subdirectories option or  the
  414.        wildcard string '*/*' should be used.
  415.  
  416.        Example: To view the contents of any archives in the current directory
  417.  
  418.          HPACK V *
  419.  
  420.   [P]  View files within an archive.  This option will output the contents  of
  421.        one  or  more  files  within an archive, with a prompt for more between
  422.        files.  The output can  be  redirected  in  the  standard  manner,  for
  423.        example:
  424.  
  425.          HPACK P DATA CONTENTS.DOC | LPR
  426.  
  427.        will send the file CONTENTS.DOC from within the archive DATA.HPK to the
  428.        printer, and:
  429.  
  430.          HPACK P DATA DESCRIPTION.DOC | MORE
  431.  
  432.        will display the file DESCRIPTION.DOC with page breaks on your  screen.
  433.        Note  that  trying  to  display  non-text  files  in this manner can be
  434.        interesting, if not terribly productive.
  435.  
  436.        Example: To  display  the  file  README.TXT  from  within  the  archive
  437.        ARCHIVE.HPK:
  438.  
  439.          HPACK P ARCHIVE README.TXT
  440.  
  441.   [T]  Test the integrity  of  an  archive.   HPACK  will  display  the  usual
  442.        messages about extracting data as it unpacks and tests the data, and if
  443.        it thinks the data has been  corrupted  it  will  issue  the  following
  444.        warning message:
  445.  
  446.          Warning: File may be corrupted
  447.  
  448.        Otherwise HPACK will display:
  449.  
  450.          File tested OK
  451.  
  452.        If, when all files have been tested, there were corrupted files,  HPACK
  453.        will print the total number of corrupted files:
  454.  
  455.          Warning: n files were corrupt
  456.  
  457.        where n is the number of corrupted files.
  458.  
  459.        Note that this test is also performed  automatically  on  extracting  a
  460.        file from an archive.
  461.  
  462.        Example: To test the integrity of all MSDOS  executable  files  in  the
  463.        archive ARCHIVE.HPK:
  464.  
  465.          HPACK T ARCHIVE *.COM *.EXE
  466.  
  467.   [D]  Delete files from an archive.  All files given in the command-line  are
  468.        deleted from the given archive.
  469.  
  470.        I all files are deleted from an archive  (leaving  an  empty  archive),
  471.        HPACK will delete the archive as well.
  472.  
  473.        Example: To delete all Pascal program files (a commendable  move)  from
  474.        the archive ARCHIVE.HPK:
  475.  
  476.          HPACK D ARCHIVE *PAS
  477.  
  478.   [F]  Freshen files in an archive.  The dates of all specified files  in  the
  479.        archive  are compared with the dates of the same files on disk.  If the
  480.        version on disk is more recent than  the  stored  version,  the  stored
  481.        version  is  replaced  by  the  version  on  disk.  If all files in the
  482.        archive are uptodate, HPACK will display the message:
  483.  
  484.          Archive is uptodate
  485.  
  486.        and exit.
  487.  
  488.        Example: To freshen all files in the archive ARCHIVE.HPK:
  489.  
  490.          HPACK F ARCHIVE.HPK
  491.  
  492.   [R]  Replace files in an archive.   All  given  files  in  the  archive  are
  493.        replaced by their counterparts on disk.
  494.  
  495.        Example: To replace all the files which begin with the letters  A-G  in
  496.        the archive ARCHIVE.HPK with their couterparts on disk:
  497.  
  498.          HPACK R ARCHIVE [A-G]*
  499.  
  500.   [U]  Update files to an archive.  All specified files  not  already  in  the
  501.        archive  are added to the archive, and all files already in the archive
  502.        are replaced if the version on disk is more  recent  than  the  version
  503.        already in the archive.
  504.  
  505.        Example: To update the archive ARCHIVE.HPK  with  all  files  from  the
  506.        directory B:/DATA/JUNK:
  507.  
  508.          HPACK U ARCHIVE B:/DATA/JUNK
  509.  
  510.        Note that the last four options need to create temporary work files  on
  511.        disk.   Thus  it  is necessary to have at least twice as much free disk
  512.        space to work with as the total  length  of  the  archive.   All  other
  513.        options  use  only the archive file, so it is possible to use them with
  514.        minimal free disk space.
  515.  
  516.  
  517. HPACK Options:
  518.  
  519.   -0  Store files without attempting any compression.  This option can be used
  520.       to  quickly add incompressible files to an archive or when breaking up a
  521.       large file to move to another system via a multidisk archive when  space
  522.       isn't at a premium.
  523.  
  524.   -a  Store file attributes.  Many operating systems  support  two  levels  of
  525.       files,  those  classed  as  'normal',  and  those  classed  as 'hidden',
  526.       'invisible', 'system files', and  so  on  (for  example  the  Macintosh,
  527.       MSDOS,  and  the  Atari ST all have these file types).  By default HPACK
  528.       will  only  add  normal  files  to  an  archive.   However   using   the
  529.       [-a]ttributes  flag allows archiving of files with special attributes as
  530.       well as full restoration  of  attributes  when archives  are  extracted.
  531.       The [-a]ttributes flag is also necessary under some operating systems to
  532.       store extra information pertaining to a file, for example access control
  533.       information, file/directory type information, icons, and so on.
  534.  
  535.       HPACK will attempt to translate the attributes of files  from  different
  536.       systems  into equivalent file attributes for the local system.  This has
  537.       varying degrees of effectiveness: Many of  the  Apple  IIgs,  Atari  ST,
  538.       Macintosh,  MSDOS,  and  OS/2  attributes  are  equivalent  so  a direct
  539.       translation is possible, and the Amiga, the Apple IIgs, the  Archimedes,
  540.       Unix, and VMS also have some of the read/write attributes in common, and
  541.       have  a  rough  equivalent  of  a  read-only  file  attribute  in  these
  542.       attributes.
  543.  
  544.       If directories are stored within the  archive,  HPACK  will  also  store
  545.       directory  attributes,  and  set  the directory attributes to the stored
  546.       values when creating the directories on extraction.
  547.  
  548.       Example: To extract all files in  the  root  directory  of  the  archive
  549.       ARCHIVE.HPK, restoring all possible attribute information:
  550.  
  551.         HPACK X -A ARCHIVE
  552.  
  553.   -b  Specify a base pathname for all files.  This option is followed  by  the
  554.       pathname  which  HPACK will use as a base path for all files to be added
  555.       to or extracted from an archive.  This option is  very  convenient  when
  556.       adding  a  number  of  files in the same directory to an archive or when
  557.       extracting an archive to a directory  which  is  not  the  same  as  the
  558.       current  directory.   It  is  also  useful  for  handling archives which
  559.       contain subdirectories.  To add files to a  subdirectory  within  HPACK,
  560.       the  base pathname is used to specify the path to the subdirectory, with
  561.       the actual file pathname given being the path inside HPACK in which  the
  562.       file  will  be stored.  In this case the argument given with the [-b]ase
  563.       path option is the part of the pathname outside  the  archive,  and  the
  564.       file pathname is the part of the pathname inside the archive.
  565.  
  566.       Example: To  extract  all  files  in  the  archive  ARCHIVE.HPK  to  the
  567.       directory D:/OUTPUT/DATA:
  568.  
  569.         HPACK X -BD:/OUTPUT/DATA ARCHIVE
  570.  
  571.       Example: To add the files FILE1, FILE2, TEXT, and  PROGRAM.EXE,  all  in
  572.       the directory D:/JUNK/DATA, to the archive ARCHIVE.HPK:
  573.  
  574.         HPACK A -BD:/JUNK/DATA ARCHIVE FILE[1-2] TEXT PROGRAM.EXE
  575.  
  576.       Example:  To  add  the  files  in  C:/JUNK/DATA/FILES  to  the   archive
  577.       ARCHIVE.HPK inside the archive directory DATA/FILES:
  578.  
  579.         HPACK A -BC:/JUNK ARCHIVE DATA/FILES/*
  580.  
  581.   -c  Encryption   options   (conventional   and    public-key    encryption).
  582.       Encrypt/decrypt   archive   data   using  a  selection  of  public-  and
  583.       conventional-key  encryption  algorithms.   Using   this   option   with
  584.       conventional-key  encryption  will  prompt  for  a passphrase before any
  585.       files are added, followed by a request  to  retype  the  passphrase  for
  586.       security  if the data is being encrypted.  This passphrase, which is not
  587.       echoed to the screen, should be a minimum of  eight  and  a  maximum  of
  588.       eighty  characters  long,  and  may contain any combination of upper and
  589.       lowercase letters, numbers, spaces,  punctuation  symbols,  and  control
  590.       characters.   If  public-key  encryption  is  used,  the  userID  of the
  591.       recipient of the data is specified as part of  the  encryption  command.
  592.       Although  HPACK itself will support non-ASCII text strings, the userID's
  593.       for public keys must be in ASCII format  for  compatibility  with  other
  594.       programs.  Be warned that forgetting or losing a conventional or public-
  595.       key encryption key will present you with a fairly  substantial  exercise
  596.       in cryptography.
  597.  
  598.       By default HPACK will encrypt entire  archives  (rather  than  just  the
  599.       files  in them), meaning that not even the archive directory can be read
  600.       by someone who does not have the decryption password.
  601.  
  602.       The encryption options are divided into  two  classes,  those  employing
  603.       conventional-key encryption and those employing public-key encryption:
  604.  
  605.       -c   Use conventional-key encryption to encrypt the entire archive,  the
  606.            same as [-c]rypt [a]ll.
  607.       -ci  Encrypt individual files  using conventional-key  encryption.   The
  608.            use  of this option is not generally recommended as it is not quite
  609.            as secure as the standard [-c]rypt [a]ll  option.   It  is  however
  610.            useful  when  only a few files need to be encrypted, the rest being
  611.            subject to constant change which makes encrypting them impractical.
  612.       -ca  Encrypt entire archive.  This  will  encrypt  not  only  the  files
  613.            themselves   but   all   additional   data   associated  with  them
  614.            (attributes, icons, and so on), as well as  the  archive  directory
  615.            information.   The only remaining accessible data is a small amount
  616.            of archive identification information  needed  to  allow  HPACK  to
  617.            process the archive.
  618.       -cs  Prompt for second password to access archive data.  This allows the
  619.            archive  directory  to be encrypted with one password, and files to
  620.            be encrypted with another password.  This option is useful if it is
  621.            desirable  to give a group of users access to the archive directory
  622.            but not to the files themselves, since the contents of the  archive
  623.            can  be  made  available  with  the  first  password,  but a second
  624.            password is required to access the files themselves.
  625.       -cpi<userID>
  626.            Encrypt individual files using the public  key  which  matches  the
  627.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  628.            option.  This option is not recommended if more than a small number
  629.            of files are present in an archive due to the amount of time needed
  630.            to perform each public-key decryption calculation.
  631.       -cpa<userID>
  632.            Encrypt the entire archive using the public key which  matches  the
  633.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  634.            [a]ll option.
  635.       -cps<userID>
  636.            Encrypt the archive with a secondary public key which  matches  the
  637.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  638.            [s]econdary option.
  639.  
  640.       When processing an encrypted archive, all that is necessary is  to  tell
  641.       HPACK to handle encrypted data by specifying the [-c]rypt option.  HPACK
  642.       will determine the encryption type and prompt for passwords as necessary
  643.       as it processes the archive.  If the archive is public-key encrypted and
  644.       the recipients secret key is protected by encryption, HPACK will prompt:
  645.  
  646.         Please enter password for secret key (8..80 characters)
  647.  
  648.       If an incorrect password is given, HPACK will warn:
  649.  
  650.         Password is incorrect.
  651.  
  652.       and allow the password to be reentered.  Up to  three  attempts  at  the
  653.       password are allowed before HPACK gives up.
  654.  
  655.       When searching for the key corresponding to a given userID,  HPACK  will
  656.       perform a case-insensitive match of the given userID against any part of
  657.       the keys userID.  This means that only a partial userID need be given on
  658.       the command line, and HPACK will use the first key for which the partial
  659.       userID matches.  This makes  specifying  the  userID  easier  since  the
  660.       entire  ID  need  not  be  given, but also means care should be taken if
  661.       there are several similar userID's (all of which  may  match  a  certain
  662.       userID fragment) in a collection of keys.  In all cases  these  userID's
  663.       act exactly like they do in PGP.
  664.  
  665.       If there is a chance that the userID is ambiguous, the key can  also  be
  666.       specified  by its keyID using the standard C programming language format
  667.       for hexadecimal values namely a  prefix  of  '0x'  and  then  the  value
  668.       itself.   The  keyID  is the 6-digit hexadecimal value displayed for the
  669.       key.  As with userID's, HPACK  will  perform  a  case-insensitive  match
  670.       against any part of the full keyID.
  671.  
  672.       HPACK will also allow the public-key encryption  of  data  for  multiple
  673.       recipients,  meaning  that  a single encrypted archive can be sent to an
  674.       arbitrarily large number of recipients.   This  allows  archives  to  be
  675.       distributed to working groups or via mailing lists without necessitating
  676.       a seperate encrypted archive for each recipient.  Note that there  is  a
  677.       slightly  increased  risk  involved  in  this process since the chain of
  678.       intended recipients is only as strong as its weakest link - only one  of
  679.       the  private  keys  needs to be compromised to render the encrypted data
  680.       insecure.
  681.  
  682.       The  use of encryption for multiple recipients is specified by enclosing
  683.       a comma-seperated list of recipient userID's or keyID's inside a  key-or
  684.       construct:
  685.  
  686.         or(user1,user2,...userN)
  687.  
  688.       On decryption, the data can be decrypted by user1 or user2 or ... userN.
  689.       Future  versions  of HPACK will also allow key-and (where all of a given
  690.       list of keys must be used to  decrypt  data)  and  key-quorum  (where  a
  691.       certain  proportion  of  a  given number of keys must be used to decrypt
  692.       data).
  693.  
  694.       In addition there are moves afoot to add a  mailing-list  capability  to
  695.       the  public  keyring format which will be fully supported by HPACK if it
  696.       eventuates.
  697.  
  698.       Example: To encrypt the entire archive ARCHIVE.HPK, leaving only a small
  699.       amount of identification information readable:
  700.  
  701.         HPACK A -C ARCHIVE
  702.  
  703.       Example: To encrypt all files to be added to the archive ARCHIVE.HPK:
  704.  
  705.         HPACK A -CI ARCHIVE
  706.  
  707.       Example: To encrypt the entire  archive  ARCHIVE.HPK  with  the  archive
  708.       directory  readable  by  "TheMunsters"  but the archive data itself only
  709.       readable by "UncleFester":
  710.  
  711.         HPACK A -CPATheMunsters -CPSUncleFester ARCHIVE
  712.  
  713.       Example: To encrypt the file BASEBALL.BAT  in  the  archive  ARCHIVE.HPK
  714.       with  the  key  corresponding  to  the  hexadecimal keyID A72F3B, taking
  715.       advantage of the fact that HPACK will match any fragment of the ID:
  716.  
  717.         HPACK A -CPI0x2F3 ARCHIVE BASEBALL.BAT
  718.  
  719.       Example:  To  encrypt  the entire archive ARCHIVE.HPK making it readable
  720.       by either "Boris", "Igor", or "Ivan":
  721.  
  722.         HPACK A -CPAor(Boris,Igor,Ivan) ARCHIVE
  723.  
  724.       Note that the public-key  decryption  process  can  take  a  long  time,
  725.       especially  when  it  must be performed multiple times (for example when
  726.       the [-c]rypt [p]ublic-key [i]ndividual files  option  is  used).   HPACK
  727.       will display the message:
  728.  
  729.         One moment...
  730.  
  731.       whenever it performs the calculations involved in public-key decryption.
  732.       This  process  can  often take significantly longer than one moment - on
  733.       slower machines HPACK may appear to have ground to a halt as it performs
  734.       the public-key decryption operation.  Unless there is a special need for
  735.       it, the use of conventional-key encryption is recommended.
  736.  
  737.       One advantage of public-key encryption is that  the  key  management  is
  738.       automatic  -  there  is  no  need  to  enter  passwords  to  perform the
  739.       encryption and decryption operations.  When passwords  must  be  entered
  740.       manually  for  conventional-key  encryption,  there  is a chance that an
  741.       incorrect password will be entered by  mistake.   If  this  happens  for
  742.       archive directories, HPACK will warn:
  743.  
  744.         Warning: Archive directory corrupted, probably due to
  745.                  incorrect password. Continue (y/n)
  746.  
  747.       Since the password was incorrect, the archive directory information  has
  748.       been  decrypted incorrectly.  The 'No' option should be selected and the
  749.       password reentered.
  750.  
  751.       If this happens for archived files, the  files  will  not  be  extracted
  752.       properly:
  753.  
  754.         Warning: File may be corrupted
  755.  
  756.       Again, the password should be reentered when HPACK is re-run.
  757.  
  758.   -d  Directory options.  This  hideously  complicated  command  has  a  large
  759.       number  of  suboptions.   Normally  HPACK  will store any directories it
  760.       finds files in inside an archive, in  effect  allowing  you  to  archive
  761.       entire  directory  trees.   This  directory  options  allow more precise
  762.       control over the storing of directories inside the archive.
  763.  
  764.       HPACK will add directories traversed only if there are  files  contained
  765.       in  them.   To  add  all  directories regardless of whether they contain
  766.       files or not, use the [-d]irectories [a]ll option (see below).
  767.  
  768.       The extended directory options are are as follows:
  769.       <Note: Some of these aren't implemented yet: Feedback  on  whether  this
  770.       way of doing things is a good idea or not would be appreciated>.
  771.  
  772.       -da  Store/extract all directories scanned,  even  if  they  contain  no
  773.            files.  This option is useful for storing entire filesystems inside
  774.            archives and restoring entire directory trees from archives.
  775.       -dc  Create only immediate containing directory for a  group  of  files,
  776.            not  the  entire  directory  path.   This  is mainly for use by GUI
  777.            versions of HPACK to allow extraction  of  individual  directories,
  778.            folders,  or  drawers  (depending on what the host operating system
  779.            calls them) of files.
  780.       -df  Flatten  directories.  This  option  can be used to disable HPACK's
  781.            storing of directories, so that all files added  or  extracted  are
  782.            placed  in  the  same directory, in effect flattening the directory
  783.            structure.
  784.       -dm  Mkdir: Create the given directories.
  785.            <Not yet implemented - if necessary this  can  be  faked  by  using
  786.            'hpack  a -da <path> <non-matching filespec>' where path is the new
  787.            directory to add and the non-matching filespec  ensures  that  only
  788.            the new directory, but none of the files in it, are added>
  789.       -dn  Do not create the  directory  inside  the  archive  if  it  doesn't
  790.            already  exist.   If  an  attempt  is  made  to  add  a  file  to a
  791.            nonexistent directory, HPACK will exit with the error message:
  792.  
  793.              Path not found
  794.  
  795.       -dr  Rmdir: Delete the given directories.
  796.            <Not yet implemented>
  797.       -dv  Mvdir: Move the given directory into the second given directory.
  798.            Warning: Through injudicious use of this command it is possible  to
  799.            create   circular  directory  references,  or  to  cut  off  entire
  800.            directory  trees.   Do   not   try   to   move   directories   into
  801.            subdirectories of themselves! (Or should HPACK check for this??)
  802.            <Not yet implemented>
  803.  
  804.       Example:  To  delete  the  directory  DATA/JUNK   inside   the   archive
  805.       ARCHIVE.HPK:
  806.  
  807.         HPACK A -DR ARCHIVE DATA/JUNK
  808.  
  809.       Note the use of the [A]dd command as a dummy command: In this  case  the
  810.       main command is ignored and only the directory option is used (ICK!).
  811.  
  812.       Example: To move all files and directories in and below DATA/JUNK in the
  813.       archive ARCHIVE.HPK into the directory STUFF:
  814.  
  815.         HPACK A -DV ARCHIVE DATA/JUNK STUFF
  816.  
  817.       Example: To add all files and directories (even empty ones) in and below
  818.       the current directory to the archive ARCHIVE.HPK:
  819.  
  820.         HPACK A -RPDA ARCHIVE
  821.  
  822.   -e  Add/use error recovery information.  This option allows  the  adding  of
  823.       error  recovery  information  to the archive when adding files, or makes
  824.       use of error recovery information present in  an  archive.   HPACK  will
  825.       write  extra information with the file data which may be used to recover
  826.       the data if the main  archive  directory  is  seriously  damaged.   This
  827.       recovery  information  will  increase the amount of data stored for each
  828.       file by about 20-25 bytes.  Note that although HPACK will add this extra
  829.       information, the current version will not make use of it.
  830.  
  831.       Example: To add all text files  in  the  directory  A:/DATA  to  archive
  832.       ARCHIVE.HPK, adding error recovery information for each file:
  833.  
  834.         HPACK -E ARCHIVE A:/DATA/*.TXT
  835.  
  836.       Example: To extract the same files from the archive, making use  of  the
  837.       error recovery information:
  838.  
  839.         HPACK X -E ARCHIVE *.TXT
  840.  
  841.   -i  Interactive mode - prompt for all actions.  This option  works  for  all
  842.       commands  except [V]iew files (for which it would be pointless).  Before
  843.       the file is processed, HPACK will ask whether you wish to  process  this
  844.       file;  answering  'Y'  will handle the file, 'N' will skip the file, and
  845.       'A' will process all files from this  point  (in  other  words  it  will
  846.       assume a 'Y' answer for each file from this point).
  847.  
  848.       Example: To add all files  in  the  current  directory  to  the  archive
  849.       ARCHIVE.HPK, prompting for each file before adding it:
  850.  
  851.         HPACK A -I ARCHIVE *
  852.  
  853.   -f  Force file move into/out of an archive.  This option can  be  used  with
  854.       the [A]dd, [F]reshen, [R]eplace, [U]pdate, and [X]tract commands to move
  855.       the files instead of merely copying the data into or out of an  archive.
  856.       Note  that  when the move option is used in conjunction with encryption,
  857.       HPACK will go to extreme lengths to destroy any traces of the file which
  858.       is  being moved.  Caution is recommended when using move with encryption
  859.       as forgetting the password or using the wrong public key  will  lead  to
  860.       the permanent loss of the encrypted data.
  861.  
  862.       If all files are moved out of an archive  (leaving  an  empty  archive),
  863.       HPACK will delete the archive as well.
  864.  
  865.       Example: To move all text files from the archive  ARCHIVE.HPK  into  the
  866.       current directory:
  867.  
  868.         HPACK X -F ARCHIVE *.TXT
  869.  
  870.   -k  Overwrite existing archive.  This only works  with  the  [A]dd  command.
  871.       Normally,  using  the [A]dd command will add any new files to the end of
  872.       an existing archive.  Using  the  [-k]ill  switch  will  erase  the  old
  873.       archive and create a new one.
  874.  
  875.       Example: To create the archive ARCHIVE.HPK on drive A:,  overwriting  it
  876.       if it already exists, and add all files in the current directory to it:
  877.  
  878.         HPACK A -K A:ARCHIVE
  879.  
  880.   -l  Security  options  (data  authentication).   This  option   allows   the
  881.       encapsulation  of  either  entire  archives or individual files inside a
  882.       secure envelope which it is computationally infeasible to  break.   This
  883.       option  allows  anyone  to  later  determine that the data has been both
  884.       untampered with, and genuinely came from the  source  (corresponding  to
  885.       the userID) from which it claims to have originated.
  886.  
  887.       When searching for the key corresponding to a given userID,  HPACK  will
  888.       perform a case-insensitive match of the given userID against any part of
  889.       the keys userID.  This means that only a partial userID need be given on
  890.       the command line, and HPACK will use the first key for which the partial
  891.       userID matches.  This makes  specifying  the  userID  easier  since  the
  892.       entire  ID  need  not  be  given, but also means care should be taken if
  893.       there are several similar userID's (all of which  may  match  a  certain
  894.       userID fragment) in a collection of keys.  In all cases  these  userID's
  895.       act exactly like they do in PGP.
  896.  
  897.       If there is a chance that the userID is ambiguous, the key can  also  be
  898.       specified  by its keyID using the standard C programming language format
  899.       for hexadecimal values namely a  prefix  of  '0x'  and  then  the  value
  900.       itself.   The  keyID  is the 6-digit hexadecimal value displayed for the
  901.       key.  As with userID's, HPACK  will  perform  a  case-insensitive  match
  902.       against any part of the full keyID.
  903.  
  904.       If the secret key is protected by encryption, HPACK will prompt:
  905.  
  906.         Please enter password for secret key (8..80 characters)
  907.  
  908.       If an incorrect password is given, HPACK will warn:
  909.  
  910.         Password is incorrect.
  911.  
  912.       and allow the password to be reentered.  Up to  three  attempts  at  the
  913.       password are allowed before HPACK gives up.
  914.  
  915.       The security options are as follows:
  916.  
  917.       -l<userID>
  918.            Secure the entire archive with security information  from  a  given
  919.            userID.
  920.       -li<userID>
  921.            Secure individual files rather than the archive as  a  whole,  with
  922.            security information for a given userID.  The use of this option is
  923.            not generally recommended since  the  generation  of  the  security
  924.            information  for  each  file  can  consume a considerable amount of
  925.            time, and since only the files themselves are secured it leaves the
  926.            file attributes and directory information open to modification.  It
  927.            is however useful when only a few files need  to  be  secured,  the
  928.            rest  being  subject  to  constant change which makes securing them
  929.            impractical.
  930.  
  931.       Example: To create the archive ARCHIVE.HPK, add all files in the current
  932.       directory to it, and secure it on behalf of your cat:
  933.  
  934.         HPACK A -LTHECAT ARCHIVE
  935.  
  936.   -m  Create a multipart archive.  Normally when HPACK runs out of disk  space
  937.       it will exit with an error message.  When this option is used HPACK will
  938.       instead prompt for another disk and continue  the  archive  on  the  new
  939.       disk.  In this manner it is possible to spread an archive which would be
  940.       too large for a single disk over several disks.   Due  to  their  rather
  941.       special   nature,  multipart  archives  do  not  support  the  [D]elete,
  942.       [F]reshen, [R]eplace, or [U]pdate commands (since, for example, deleting
  943.       a file from the middle of an archive which stretches over 15 disks would
  944.       be quite time-consuming).  All other operations are supported however.
  945.  
  946.       Example: To fully back up hard drive C: onto drive A:
  947.  
  948.         HPACK A -KMARDA A:ARCHIVE C:/*
  949.  
  950.       This will create the archive ARCHIVE.HPK on one or more disks  in  drive
  951.       A:   containing  the complete contents of the drive C: (the options used
  952.       are [-k]ill existing  archive,  [-m]ultipart  archive,  store  file  and
  953.       directory [-a]ttributes,  [-r]ecurse  through  all  subdirectories,  for
  954.       [-d]irectories  store  [a]ll  of them, even empty ones).  Once each disk
  955.       has been completely filled, HPACK will prompt:
  956.  
  957.         Please insert the next disk and press a key
  958.  
  959.       followed by the message:
  960.  
  961.         Continuing...
  962.  
  963.       as it continues the archive on the next disk inserted.  Note the use  of
  964.       the [-k]ill existing archive option to overwrite any existing archive of
  965.       the same name which may already exist on the disk - if  HPACK  finds  an
  966.       archive  of the given name already on the disk and the [-k]ill option is
  967.       not specified, it will not, by default, overwrite it but will exit  with
  968.       an error message.
  969.  
  970.       Multipart archives have a minimum size of around 500 bytes (roughly  the
  971.       size  of  a disk sector for many disk formats - storing archive parts of
  972.       less than 500-odd bytes would be pointless).  If a section of  a  multi-
  973.       part archive is less than approximately 500 bytes HPACK will skip it and
  974.       move it to the next  (hopefully  less  full)  disk  after  printing  the
  975.       following warning:
  976.  
  977.         Warning: Archive section too short, skipping...
  978.  
  979.       If a multipart archive is small enough to fit onto a single disk,  HPACK
  980.       will store the archive as a standard archive instead of a multipart one.
  981.  
  982.       Example: To view the files in the previously created multipart archive:
  983.  
  984.         HPACK V A:ARCHIVE
  985.  
  986.       HPACK will automatically determine whether the archive  is  a  multipart
  987.       archive  or  not  so  the  [-m]ultipart  command  is only necessary when
  988.       creating the archive.  Since HPACK stores its directory  information  at
  989.       the  end of the archive, only the last disk or disks of the archive must
  990.       be read to obtain the archive directory.  Initially HPACK will prompt:
  991.  
  992.         Please insert the disk containing the last part of this archive and
  993.           press a key.
  994.  
  995.       If the wrong disk is inserted, HPACK will prompt:
  996.  
  997.         This is part <n> of a multipart archive.
  998.         Please insert the disk containing the last part of this archive and
  999.           press a key.
  1000.  
  1001.       where <n> is the part number of this section of the archive.
  1002.  
  1003.       Example: To extract the  single  file  LETTER.TXT  from  the  previously
  1004.       created archive:
  1005.  
  1006.         HPACK X A:ARCHIVE LETTER.TXT
  1007.  
  1008.       HPACK will then prompt for the disk which contains the file LETTER.TXT:
  1009.  
  1010.         Please insert the disk containing part <n> of this
  1011.           a key.
  1012.  
  1013.       where <n> is the part number  of  the  archive  section  which  contains
  1014.       LETTER.TXT.
  1015.  
  1016.       Example: To fully  restore  the  contents  of  a  hard  drive  from  the
  1017.       previously created archive:
  1018.  
  1019.         HPACK X -ARDA A:ARCHIVE
  1020.  
  1021.       HPACK will prompt for the last part of the archive as usual and then for
  1022.       each disk in turn as it extracts the files from the archive.
  1023.  
  1024.   -o  Overwrite on extraction options.  Normally when HPACK tries to extract a
  1025.       file  which already exists, it will prompt for whether the existing file
  1026.       should be overwritten or not.   With  this  switch  it  is  possible  to
  1027.       specify a default action to be taken.  There are four possibilities:
  1028.  
  1029.       -oa  Automatically overwrite [A]ll existing files on extraction.
  1030.       -on  Automatically overwrite [N]one of the existing files on extraction.
  1031.       -os  [S]mart overwrite.  HPACK will change the extension of the file  to
  1032.            be  extracted to "000", and try to extract this file.  If a file of
  1033.            this name already exists, the extension will be  changed  to  "001"
  1034.            and so on until it is possible to extract the file.  This option is
  1035.            very useful for files that have been archived  on  a  system  which
  1036.            allows  filenames  which  are  longer  or  more  complex than those
  1037.            allowed by the local system and which due  to  the  filename  being
  1038.            truncated or translated end up with identical names.  Note that the
  1039.            term "extension" can mean different things to  different  operating
  1040.            systems - HPACK will do its best to use the local equivalent.
  1041.       -op  [P]rompt for new filename.  HPACK will ask for a new  filename  and
  1042.            try to use that name, repeating until a non-conflicting filename is
  1043.            given.
  1044.  
  1045.       Example: To extract all  files  from  the  archive  ARCHIVE.HPK  to  the
  1046.       current directory, skipping any files that already exist:
  1047.  
  1048.         HPACK X -ON ARCHIVE
  1049.  
  1050.   -r  Recurse through  subdirectories.   HPACK  will  step  through  all  sub-
  1051.       directories  of  the  current  directory,  and  add all files with names
  1052.       matching those given on the command line.
  1053.  
  1054.       Example: To add all files in all directories in and  below  the  current
  1055.       directory to the archive ARCHIVE.HPK:
  1056.  
  1057.         HPACK A -R ARCHIVE *
  1058.  
  1059.   -s  Run in stealth mode.  All messages except warnings  and  error  messages
  1060.       are  suppressed.   HPACK  will  automatically turn on stealth mode if it
  1061.       detects it is running in  the  background  on  operating  systems  which
  1062.       support background operation.
  1063.  
  1064.       Example: To add all files in the current directory to  all  archives  in
  1065.       the  current  directory,  without printing the usual progress reports to
  1066.       the screen:
  1067.  
  1068.         HPACK A -S *
  1069.  
  1070.   -t  Touch  files  on  extraction.   Normally  HPACK  will give all files and
  1071.       directories  extracted  the  original  date  they  had  when  they  were
  1072.       archived.  Using the [-t]ouch option will give files and directories the
  1073.       current date.
  1074.  
  1075.       Example:  To extract all files from the archive ARCHIVE.HPK, giving them
  1076.       todays datestamp:
  1077.  
  1078.         HPACK X -T ARCHIVE
  1079.  
  1080.   -u  Unified compression mode.  In this mode HPACK will  attempt  to  achieve
  1081.       increased  compression  by using unified compression across all files to
  1082.       be added.  This is especially  effective  when  many  generally  similar
  1083.       files  or  many  small  files  are  being  added  to  an  archive.   The
  1084.       disadvantage of unified  compression  is  that  the  archive  cannot  be
  1085.       updated  or  changed  later,  and  that when extracting individual files
  1086.       there is a slight  speed  penalty  as  intervening  files  are  skipped.
  1087.       Unified compression is ideal for storing data like Usenet news articles,
  1088.       collections  of  icons,  and  program  source  code,  in   which   cases
  1089.       significant compression gains are usually seen.
  1090.  
  1091.       Example: To add all files  in  /USR/SPOOL/NEWS/COMP/COMPRESSION  to  the
  1092.       archive COMPRESS.HPK using the unified compression mode:
  1093.  
  1094.         HPACK A -U COMPRESS /USR/SPOOL/NEWS/COMP/COMPRESSION/*
  1095.  
  1096.   -v  View options.  Normally when the [V]iew  command  is  used,  HPACK  will
  1097.       print  information on all the directories and files in an archive.  With
  1098.       these options it is possible to  specify  which  parts  of  the  archive
  1099.       directory are to be viewed. There are two possible options:
  1100.  
  1101.       -vf  Display information only on matching files.
  1102.       -vd  Display information only on matching directories.
  1103.  
  1104.       Example:  To  print  all  the  files,  but  not   any   directories   or
  1105.       subdirectories, in the archive ARCHIVE.HPK:
  1106.  
  1107.         HPACK V -VF ARCHIVE.HPK
  1108.  
  1109.   -w  Treat files as  archive  comments.   This  makes  the  [A]dd,  [D]elete,
  1110.       [F]reshen,  [R]eplace,  and  [U]pdate commands work for archive comments
  1111.       instead of normal files.  Archive comments are files which are displayed
  1112.       when the [V]iew archive command is used, and may contain text describing
  1113.       the  contents  of  the  archive,  ANSI  extended  characters,  graphics,
  1114.       digitised  sound,  even  full  motion  video with 16-bit stereo sound if
  1115.       desired.  Most CLI versions of HPACK  will  currently  only  handle  the
  1116.       displaying  of  plain  text,  although  some  will handle ANSI-text type
  1117.       archive comments as well.  Comments can be added, deleted, replaced, and
  1118.       so  on  just  like  normal  files.  Subdirectories can contain their own
  1119.       comments, and each directory can contain  multiple  comment  files.   In
  1120.       addition  comment filenames are not treated as normal archive filenames,
  1121.       so a directory can contain a comment file and a normal archived file  of
  1122.       the same name.  Possible archive comment types are:
  1123.  
  1124.       -w   Plain text comment.  This can be entered in free-form  since  HPACK
  1125.            will  automatically  word  wrap  the  text  to fit the screen size.
  1126.            Plain text comments may  also  contain  formatting  commands  which
  1127.            control  the  way  the  text is displayed.  For more information on
  1128.            formatting the text comments, see the extended  documentation  file
  1129.            HPACKEXT.DOC.
  1130.       -wa  ANSI text comment.  This type of comment can contain  the  extended
  1131.            8-bit character set used by IBM PC's, as well as ANSI escape codes.
  1132.            No reformatting of any type is done on ANSI  comments.   Note  that
  1133.            the plain text comment type is preferred, since many systems cannot
  1134.            display the extended ANSI character set or  interpret  ANSI  escape
  1135.            codes.   Also  note that if an ANSI comment is stored as plain text
  1136.            HPACK will quietly delete all extended characters and  ANSI  escape
  1137.            codes when it displays the comment, to make it conform to the 7-bit
  1138.            ASCII character set.
  1139.       -wg  GIF format graphics comment.  Display of  this  comment  format  is
  1140.            generally  only  suported  on  systems  running graphics-based user
  1141.            interfaces.
  1142.       -wj  JPEG format graphics comment.  Display of this  comment  format  is
  1143.            generally  only  suported  on  systems  running graphics-based user
  1144.            interfaces.
  1145.       -wm  MPEG format graphics comment.  Display of this  comment  format  is
  1146.            generally  only  suported  on  systems  running graphics-based user
  1147.            interfaces.
  1148.  
  1149.       Example: To view all comment-type files in the  archive  ARCHIVE.HPK  as
  1150.       files instead of displaying them as comments:
  1151.  
  1152.         HPACK V -W ARCHIVE.HPK
  1153.  
  1154.   -x  Text file translate options.  Different  systems  store  text  files  in
  1155.       different  formats,  for example on the Amiga, the Archimedes, and under
  1156.       Unix, these are stored in ASCII format with a linefeed  at  the  end  of
  1157.       each  line; on the Atari ST and under MSDOS and OS/2, there are carriage
  1158.       return/linefeed pairs at the end of each line;  and  on  the  Macintosh,
  1159.       there  are carriage returns at the end of each line.  Some systems store
  1160.       text in a non-ASCII format altogether, for example IBM systems which use
  1161.       the  EBCDIC character set, and Prime systems which use their own bizarre
  1162.       text encoding technique.  Using this option it is  possible  to  specify
  1163.       translation  of  different  character systems and end-of-line markers to
  1164.       the one used by the local system.  In most  cases  the  [-x]late  option
  1165.       will  suffice,  however it is possible to override the translation using
  1166.       the following options:
  1167.  
  1168.       -x   Smart translate.  HPACK will attempt  to  translate  all  files  it
  1169.            recognises  as  text  files  from  the  textfile format used on the
  1170.            system the file was archived on to the textfile format used on  the
  1171.            system the file is being extracted on.  In most cases  this  option
  1172.            will be the only one necessary.
  1173.       -xr  Treat carriage  return  (ASCII  13)  as  end-of-line  marker.   The
  1174.            Macintosh stores text this way.
  1175.       -xl  Treat linefeed (ASCII 10)  as  end-of-line  marker.   Text  on  the
  1176.            Amiga, the Archimedes, and UNIX systems is stored in this manner.
  1177.       -xc  Treat carriage return/linefeed pairs  as  end-of-line  marker.  The
  1178.            Atari ST, MSDOS and OS/2 store text files like this.
  1179.       -xxnn
  1180.            Treat the one- or two-character hexadecimal value 'n'  or  'nn'  as
  1181.            the  character  to  use  as the end-of-line delimiter.  For example
  1182.            when moving textfiles from a QNX 2.x/3.x system (which uses the  RS
  1183.            character, ASCII 30 or 1E hexadecimal), the option would be -xx1e.
  1184.       -xe  Translate the character set from EBCDIC  to  ASCII.   Text  on  IBM
  1185.            systems is stored this way.
  1186.       -xp  Translate the character encoding from that used on Prime systems to
  1187.            ASCII.
  1188.       -xa  Translate from ASCII to ASCII.
  1189.  
  1190.       The textfile translation works by  first  translating  entire  character
  1191.       sets  (either  ASCII,  Prime  ASCII  or  EBCDIC)  if necessary, and then
  1192.       translating  the  end-of-line  characters,  depending  on  the   options
  1193.       specified.
  1194.  
  1195.       The end-of-line translation options are only available where they  would
  1196.       make  sense  (for  example the ability to translate linefeed to linefeed
  1197.       isn't particularly useful).  The possible translation options are  shown
  1198.       below,  with  LF being the linefeed character, CR being carriage return,
  1199.       and CRLF being carriage return/linefeed pairs:
  1200.  
  1201.                 To |  Atari ST          Amiga
  1202.                    |    MSDOS         Archimedes        Macintosh
  1203.            From    |    OS/2            Unix
  1204.          ----------+-----------------------------------------------
  1205.           Atari ST |
  1206.            MSDOS   |                    [-xc]              [-xc]
  1207.            OS/2    |     ---         CRLF -> LF         CRLF -> CR
  1208.                    |
  1209.            Amiga   |
  1210.          Archimedes|    [-xl]                              [-xl]
  1211.            Unix    |  LF -> CRLF         ---              LF -> CR
  1212.                    |
  1213.                    |    [-xr]           [-xr]
  1214.          Macintosh |  CR -> CRLF       CR -> LF             ---
  1215.                    |
  1216.  
  1217.       Example: To extract all files with the extension ".TXT" from the archive
  1218.       ARCHIVE.HPK, translating linefeed characters into  whatever  end-of-line
  1219.       character the local system uses:
  1220.  
  1221.         HPACK X -XL ARCHIVE *.TXT
  1222.  
  1223.       Example: To extract all files with the extension ".TXT" from the archive
  1224.       ARCHIVE.HPK,  translating  the  files  from   EBCDIC   to   ASCII,   and
  1225.       translating all carriage return characters to the end-of-line  character
  1226.       used by the local system:
  1227.  
  1228.         HPACK X -XEXR ARCHIVE *.TXT
  1229.  
  1230.  
  1231. HPACK Extended Options
  1232.  
  1233.   The  extended  options  supported  by  HPACK  are  usually  somewhat system-
  1234.   specific and in general will only be present on one  particular  version  of
  1235.   HPACK.   They  either  support  the  storing/extraction  of  system-specific
  1236.   information in archives, or the special handling  of  data  which  has  been
  1237.   archived on another system. The recognised options are:
  1238.  
  1239.   +devcheck
  1240.       MSDOS  version  only.   MSDOS  has a serious problem in that when a file
  1241.       with the same name as a device driver is extracted (for  example  'CON',
  1242.       'COM1',  or  'LPT1')  it  will  force the contents of that file into the
  1243.       device driver.  The damage can be minor for devices  like  'CLOCK$'  (it
  1244.       will  at a minimum mangle the system date and time, perhaps scramble the
  1245.       CMOS ram, or cause the system to hang -  even  the  changing  of  system
  1246.       dates  can  cause problems on a system running a computer bulletin board
  1247.       which relies on correct timestamps), all the way through to very serious
  1248.       for devices  like  'SMARTAAR'  (it  will  corrupt  the  disk  cache  and
  1249.       therefore corrupt the drives being cached).
  1250.  
  1251.       The  [+devcheck]  option  will check each file before extracting it, and
  1252.       if it corresponds to a device driver will print the warning:
  1253.  
  1254.           File corresponds to device driver - skipping
  1255.  
  1256.       and  move on to the next file.  The only way in which HPACK will allow a
  1257.       file of this type to be extracted is by using the [-o]verwrite  [p]rompt
  1258.       option,  in  which  you  will  be prompted for a new filename to extract
  1259.       under.  Even [-o]verwrite [s]mart is unsafe since the peculiar  handling
  1260.       of  device  drivers  by  DOS  makes  the automatic substitution of a new
  1261.       filename very difficult.
  1262.  
  1263.       Filenames which can cause these problems are virtually unheard-of - they
  1264.       would have to be created deliberately by a malicious user, in which case
  1265.       there are few limits on the potential damage they can cause.
  1266.  
  1267.   +invert
  1268.       Archimedes version only.  ADFS doesn't support extensions  to  filenames
  1269.       since  dots are used as directory delimiters, which can lead to problems
  1270.       when moving, for example, source code files ending with the  traditional
  1271.       .c and .h to the Archimedes.  Many programs allow a workaround where the
  1272.       file  foo.c  is  accessed  as  c.foo.   This  option allows this form of
  1273.       inversion of the filename/directory structure so that *.c and *.h  would
  1274.       be extracted as c.* and h.*.  So for example:
  1275.  
  1276.           include/stdio.h
  1277.  
  1278.       would be extracted as:
  1279.  
  1280.           include.h.stdio
  1281.  
  1282.       This   command   usually  invokes  an  intense  sense  of  disbelief  in
  1283.       non-Archimedes owners.
  1284.       Incidentally, non-Archimedes owners may wonder what the Archimedes  uses
  1285.       in place of a '.' in filenames.  It uses a '/', of course.
  1286.  
  1287.   +lower
  1288.       Amiga,  Archimedes,  OS/2,  Macintosh, and Unix versions only. Force all
  1289.       file and directory names to lowercase.   Some  systems  store  file  and
  1290.       directory  names in uppercase only.  Using this option all names will be
  1291.       converted to lowercase before any operations (such  as  [V]iew  archive,
  1292.       [X]tract  from  archive,  and  so  on),  are  performed  on  them.  When
  1293.       processing Atari ST, MSDOS, and some  OS/2  archives,  the  use  of  the
  1294.       [+lower] option is recommended.
  1295.  
  1296.   +noext
  1297.       By  default HPACK will force an extension of '.HPK' (where the operating
  1298.       system allows it) to be added to the archive  name,  with  any  existing
  1299.       extension  being  replaced  by  '.HPK'.   This option allows the default
  1300.       behaviour to be overridden so that no extension  is  added  or  changed.
  1301.       However  this  lack of an extension will force HPACK to work much harder
  1302.       in deciding what is and isn't an HPACK archive, and will disable certain
  1303.       features such as its ability to automatically pick  out  HPACK  archives
  1304.       when  simply  told  to  process all files in a directory. This option is
  1305.       mainly for use with automated mail-processing software such  as  Fidonet
  1306.       mail  unpackers  which  depend  on  the extension for information on the
  1307.       packet contents.
  1308.  
  1309.   +noumask
  1310.       Unix version only.   Normally  the  setting  of  the  umask  environment
  1311.       variable  affects  the attribute bits of any files and directories HPACK
  1312.       creates.   This  option  overrides  the  umask  setting  and  uses   the
  1313.       attributes stored within the archive.  Since these attributes can be set
  1314.       to  allow  outsiders  read/write  access  to files and directories which
  1315.       would normally be off-limits to them, this option should  be  used  with
  1316.       care.
  1317.  
  1318.   +rsx
  1319.       VMS version only.  Normally VMS files can have 39 characters of filename
  1320.       and   39   characters   of   extension,  or  type.   This  can  lead  to
  1321.       strange-looking filenames when they are truncated from operating systems
  1322.       which allow longer or more flexible names. Using this  option  truncates
  1323.       filenames  to  an  RSX-11  compatible  format,  which  results  in  more
  1324.       traditional-looking names  with  9  characters  of  filename  and  three
  1325.       characters  of  file  type,  and  directory  names  with 9 characters of
  1326.       filename.
  1327.  
  1328.   +select <select-statement>
  1329.       Apply an SQL SELECT command.  This option is explained in more detail in
  1330.       the  section  "HPACK  SQL  Commands"   in   the  extended  documentation
  1331.       HPACKEXT.DOC.
  1332.  
  1333.   +type<type-association>
  1334.       Archimedes, Apple IIgs, and Macintosh  versions  only.   Some  operating
  1335.       systems  store  file  type  information  for each file. HPACK will, when
  1336.       extracting files, try to determine the type information  for  each  file
  1337.       and  set it correctly.  However in some cases no type information can be
  1338.       determined, or the determined information may be incorrect.  This option
  1339.       can be used to set type information for a file, or to  override  HPACK's
  1340.       internal type-determining rules.
  1341.  
  1342.       Type  information  is  given  as  a type-association, associating a file
  1343.       extension with whatever type information the OS requires, and  is  given
  1344.       in the form:
  1345.  
  1346.           .<extension>=<type info>{,<type info>}
  1347.  
  1348.       For  example to associate the Macintosh ThinkC source file type with the
  1349.       extension ".c", the type argument would be "TEXT,KAHL", corresponding to
  1350.       the ThinkC file type and creator type.
  1351.  
  1352.       Example: To associate the ".c"  extension  on  the  Macintosh  with  the
  1353.       ThinkC source file type:
  1354.  
  1355.           +type.c=TEXT,KAHL
  1356.  
  1357.       Example:  To  associate  the ".gif" extension on the Archimedes with the
  1358.       GIF file type:
  1359.  
  1360.           +type.gif=693
  1361.  
  1362.       The types given above are actually already part of HPACK's default  rule
  1363.       set  for  type  associations,  but can be overridden with the use of the
  1364.       [+type] option if desired.
  1365.  
  1366.  
  1367. HPACK Archive Integrity
  1368.  
  1369.   HPACK checks the integrity of files stored within an archive by  encoding  a
  1370.   continuous  checksum  as part of each file when it is archived, and decoding
  1371.   it as the file is extracted.  As soon as an error is encountered, HPACK will
  1372.   skip  over  the  rest  of the file and move on to the next one.  If the file
  1373.   checksums differ then it may be reasonably assumed that there is an error in
  1374.   the  extracted  data.   This  is  important:  The  entire physical universe,
  1375.   including HPACK itself, may one day collapse back into an  infinitely  small
  1376.   space. Should another universe  subsequently  re-emerge,  the  integrity  of
  1377.   HPACK archives in that universe cannot be guaranteed.
  1378.  
  1379.   HPACK also checksums the archive directory.  If an error  is  found  in  the
  1380.   directory information, the message:
  1381.  
  1382.     Warning: Archive directory corrupted. Continue (y/n)
  1383.  
  1384.   will be displayed.  Hitting 'N' at this point will  abort  any  attempts  to
  1385.   process  the archive, hitting 'Y' will process the (damaged) archive.  HPACK
  1386.   will attempt some error  recovery  in  this  case  (for  example  files  and
  1387.   directories  which  seem  to be in impossible directories will be moved into
  1388.   the root directory), and some files may be able to be recovered.   If  error
  1389.   recovery  information  (specified  with  the  [-e]rror  recovery option (see
  1390.   "HPACK Options" above)) is present,  chances  of  recovering  data  from  an
  1391.   archive with a corrupted directory are greatly enhanced.
  1392.  
  1393.  
  1394. HPACK Archive/Data Authentication:
  1395.  
  1396.   Data authentication facilities in an archiver should provide  the  following
  1397.   features:
  1398.  
  1399.   1.  Sender authenticity.  The data could only  have  come  from  the  source
  1400.       which it is supposed to have come from.
  1401.  
  1402.   2.  Data integrity measures.  Any attempt to tamper with the data should  be
  1403.       recognised and reported by the authentication system.
  1404.  
  1405.   3.  Non-repudiation of origin.  The originator  of  the  data  cannot  later
  1406.       disclaim responsibility for it.
  1407.  
  1408.   HPACK includes provisions for  authenticating  archived  data  by  adding  a
  1409.   unique  digital  signature  to  either  entire  archives or individual files
  1410.   within an archive.  This works exactly like a normal signature on a piece of
  1411.   paper,  proving  that  the  sender  was  the  true originator of the file or
  1412.   archive.  Forgery of a digital signature of  this  sort  is  computationally
  1413.   infeasible,  and  once  the  data  has  been  signed the sender cannot later
  1414.   disavow his or her signature.  In addition a cryptographic checksum  of  the
  1415.   data  or  archive  is  made  and  included as part of the signature to allow
  1416.   detection of  any  attempts  to  tamper  with  the  data.   Like  forging  a
  1417.   signature, defeating the checksum is computationally infeasible.
  1418.  
  1419.   When the data in an  archive  with  authentication  information  present  is
  1420.   extracted  or  tested,  an  authentication check is performed for the entire
  1421.   archive before it is  processed.   Similarly,  an  authentication  check  is
  1422.   performed  on  files  before  they  are extracted if there is authentication
  1423.   information present.
  1424.  
  1425.   In order for the authenticity information  generation  and  checking  to  be
  1426.   possible,  two  key  files  are  required.   To  secure  archives, the files
  1427.   SECRING.PGP or RIPEMPRV, which contain the secret key of the person securing
  1428.   the archive, are required.  To check secured archives, the files PUBRING.PGP
  1429.   or RPUBKEYS, which contain the public key of the person or organization  who
  1430.   signed  the  file or archive, are needed.  These key files are generated and
  1431.   managed by either version 2.0 or higher of Philip Zimmermanns excellent  PGP
  1432.   encryption  package  (for  the PGP keys), or various implementations of PEM,
  1433.   among them Mark Riordans equally good  RIPEM  encryption  package.   If  you
  1434.   don't have a copy of PGP or RIPEM, it is recommended you obtain one.  PGP is
  1435.   freely  available  on many archive sites, computer bulletin boards and other
  1436.   systems.  RIPEM may only be available within the United States.  PGP is also
  1437.   required to handle any key management, and for authentication  of  the  keys
  1438.   themselves.   RIPEM  currently  doesn't  support  much key management or key
  1439.   authentication.  The PGP documentation and portions of  the  extended  HPACK
  1440.   documentation  HPACKEXT.DOC  are  recommended reading for those wanting more
  1441.   information on the background of PGP and the security techniques used by PGP
  1442.   and HPACK.
  1443.  
  1444.   If PEM (Privacy-Enhanced Mail) ever becomes a reality,  HPACK  will  support
  1445.   PEM/PKCS  format  keys  as  well  as  PGP  ones.  This will allow data to be
  1446.   encrypted and decrypted inside the US with PEM keys and outside the US  with
  1447.   PGP  keys,  allowing,  for  the  first time, the easy transfer of public-key
  1448.   encrypted data to and from the US.
  1449.  
  1450.   Before HPACK can use it, the secret keyring SECRING.PGP must  have  a  small
  1451.   amount  of  extta information added to it.  Details on this are given in the
  1452.   section "Using PGP Secret Keyrings" below.
  1453.  
  1454.   HPACK  will  search  for  the  key  files  in  the  directories given in the
  1455.   environment  variables  PGPPATH and PEMPATH.  These variables should contain
  1456.   the  paths  to  any  PUBRING.PGP,  SECRING.PGP, RIPEMPRV, and RPUBKEYS files
  1457.   which are needed, with more than one  path  being  possible.   In  order  to
  1458.   eliminate  the  possibility  of  spoofing  via a bogus keyring placed in the
  1459.   current directory, HPACK will, like all well-designed OS shells, not  search
  1460.   the  current directory unless this is explicitly specified in the PGPPATH or
  1461.   PEMPATH variables with the use of the "." option indicating the path to  the
  1462.   current directory.
  1463.  
  1464.   For  example  if  the  search path for PGP keyrings included the directories
  1465.   $HOME/bin/pgp, /usr/bin/pgp, and /usr/local/pgp then PGPPATH should  be  set
  1466.   with:
  1467.  
  1468.     set PGPPATH=/bin/pgp                (Amiga, Atari ST, MSDOS, OS/2)
  1469.  
  1470.     set PGPPATH filesys::drive.$.bin.pgp,filesys::drive.$.usr.bin.pgp
  1471.     set PGPPATH <PGPPATH>,filesys::drive.$.usr.local.pgp
  1472.                                         (Archimedes)
  1473.  
  1474.     setenv PGPPATH ~/bin/pgp:/usr/bin/pgp:/usr/local/pgp
  1475.                                         (Unix csh)
  1476.  
  1477.     PGPPATH=$HOME/bin/pgp:/usr/bin/pgp:/usr/local/pgp; export PGPPATH
  1478.                                         (Unix sh)
  1479.  
  1480.   The directories for PGP and PEM keyrings are always searched  in  the  order
  1481.   given  in the PGPPATH and PEMPATH variables.  Note that in the above example
  1482.   the  single-user  Amiga, Atari ST, MSDOS and OS/2 systems only have a single
  1483.   path for keyrings, whereas the multiuser  Unix  environments  have  multiple
  1484.   search  paths  corresponding to custom user keyrings followed by system-wide
  1485.   master keyrings.
  1486.  
  1487.   If the data in the archive, or the archive itself, is  to  be  checked,  the
  1488.   authentication check will be performed using the key found in PUBRING.PGP or
  1489.   RPUBKEYS.  If the authentication check succeeds, the message:
  1490.  
  1491.     Good signature from <name>.
  1492.     Signature made on <date>.
  1493.  
  1494.   will be displayed, with <name> being the name of the person or  organization
  1495.   who made the signature, and <date> being the date the signature was made (on
  1496.   some systems the signature time may be off by a  few  hours  if  the  system
  1497.   doesn't  adjust for different time zones properly).  If the check fails, the
  1498.   message:
  1499.  
  1500.     Warning: Bad signature, doesn't match file contents.
  1501.     Bad signature from <name>.
  1502.     Signature made on <date>.
  1503.  
  1504.   will be printed.  If the archive is  a  multipart  archive  (for  which  the
  1505.   authentication  check  can  take  some time since an archive stretching over
  1506.   several disks needs to be processed), the message:
  1507.  
  1508.     Verify multipart archive authenticity [y/n]
  1509.  
  1510.   is displayed.  'Y' will check the authenticity of the archive, 'N' will skip
  1511.   the authenticity check and continue with processing the archive.
  1512.  
  1513.   If the data in the archive, or the archive itself, is  to  be  secured,  the
  1514.   authentication  information  will  be  generated  using  the  key  found  in
  1515.   SECRING.PGP or RPEMPRIV.
  1516.  
  1517.   The signature scheme used is the  RSA  public  key  cryptosystem  (for  more
  1518.   information  on  this  and  the  PGP  encryption  package  see  the extended
  1519.   documentation HPACKEXT.DOC).  This scheme involves the manipulation of  very
  1520.   large  numbers, which can be quite time-consuming on slow systems, where the
  1521.   signature generation and checking can take several minutes (for this  reason
  1522.   the  use  of authentication for entire archives rather than individual files
  1523.   in an archive is recommended).
  1524.  
  1525.   Unlike encryption software, authentication  code  is  not  export-restricted
  1526.   from  the US.  The U.S. Code of Federal Regulations, Title 22 which includes
  1527.   sub-chapter M, "International Traffic in Arms Regulations" (ITAR), makes  an
  1528.   exception for software that can only be used for authentication purposes and
  1529.   cannot not be used for general-purpose encipherment and decipherment, as  is
  1530.   the case for the data authentication code in HPACK.
  1531.  
  1532.  
  1533. HPACK Archive/Data Encryption
  1534.  
  1535.   HPACK allows data stored in an archive to be encrypted  with  a  variety  of
  1536.   public  or  conventional-key  encryption  algorithms.   Encryption of either
  1537.   entire archives or individual files is possible,  as  well  as  the  use  of
  1538.   multiple keys to encrypt different sections of an archive (though the use of
  1539.   public-key encryption is preferred for this since its inherent automatic key
  1540.   management greatly simplifies handling the encrypted data).
  1541.  
  1542.   When chosing  an  encryption  key  for  a  conventional-key  algorithm,  the
  1543.   following guidelines should be observed:
  1544.  
  1545.   - HPACK allows keys of up to  80  characters  in  length.   These  keys  can
  1546.     contain  letters,  numbers,  spaces, and punctuation.  This fact should be
  1547.     made use of to the fullest, with preferred passwords being entire  phrases
  1548.     rather  than  individual  words.   There  exist programs designed to allow
  1549.     high-speed password cracking  of  conventional-key  encryption  algorithms
  1550.     which  can,  in  a matter of hours (sometimes minutes, even seconds in the
  1551.     case of very weak algorithms), attempt to use the contents of  an  average
  1552.     large  dictionary  as sample passwords.  Most passwords composed of single
  1553.     words can be broken with  ease  in  this  manner,  even  in  the  case  of
  1554.     algorithms  like  the  MDC  one  which  is  used  by HPACK, which has been
  1555.     specially designed to be resistant to this form of attack (doing a  brute-
  1556.     force  search  of  all  8-letter  passwords (the minimum length allowed by
  1557.     HPACK) assuming a worst-case situation  in  which  the  password  contains
  1558.     lowercase  letters  only,  can  be accomplished in 662 years on a fast CPU
  1559.     (Sparcstation IPX) if the attacker knows the  contents  of  the  encrypted
  1560.     file(s) in advance - or about 8 months on  a  network  of  1000  of  these
  1561.     machines.   Using  an  intelligent  dictionary-based cracking program will
  1562.     reduce this time  significantly.   This  is  especially  apparent  if  the
  1563.     encryption  algorithm  used  is  very  weak  -  the  Pkzip encryption, for 
  1564.     example, can be broken in this manner in a few seconds on a cheap personal 
  1565.     computer using the standard Unix /usr/dict wordlist).
  1566.  
  1567.   - Simple modifications to passwords should  not  be  trusted.   Capitalizing
  1568.     some letters, spelling the word backwards, adding one or two digits to the
  1569.     end, and so on, only present a slightly more difficult  challenge  to  the
  1570.     average password-cracker than plain unadorned passwords.
  1571.  
  1572.   - Probably the most difficult passwords to crack in  this  manner  are  ones
  1573.     comprising  phrases  or sentences, since instead of searching a small body
  1574.     of text like the contents of a dictionary, the cracker must search a  much
  1575.     larger  corpus  of data, namely all possible phrases in the language being
  1576.     used.  Needless to say, the use of common phrases should be avoided, since
  1577.     these will be an obvious target for crackers.
  1578.  
  1579.   As  is  the  case  when  using  public-key   encryption   for   data/archive
  1580.   authentication,  the  secret  keyring  SECRING.PGP will need to have a small
  1581.   quantity of extra information added to it, for which details  are  given  in
  1582.   the section "Using PGP Secret Keyrings" below.
  1583.  
  1584.  
  1585. HPACK Internationalization
  1586.  
  1587.   HPACK is available in Bavarian, Dutch,  English,  German,  Italian,  Polish,
  1588.   Spanish,  and  Swiss German versions using the ASCII, IBM PC (Codepage 437),
  1589.   IBM Codepage 850, IBM Codepage 869, ISO 8859-1 (Latin 1), ISO 8859-2  (Latin
  1590.   2),  ISO  8859-3  (Latin  3),  ISO 8859-4 (Latin 4), Macintosh, Mazovia, and
  1591.   NeXTSTEP character sets. The exact language and character set used by  HPACK
  1592.   is controlled by the environment variables CHARSET and LANGUAGE.  By default
  1593.   HPACK  interacts with users in English using the ASCII/ISO646 character set.
  1594.   By setting these two variables, another language and/or character set can be
  1595.   selected.  Note that not all combinations of languages  and  character  sets
  1596.   will provide a useful result.
  1597.  
  1598.   Possible  options for LANGUAGE are 'bavarian', 'dutch', 'english', 'german',
  1599.   'italian', 'polish', 'spanish', and 'swiss'.
  1600.  
  1601.   Possible  options  for  CHARSET  are  'ascii',  'cp850',  'cp869',  'ibmpc',
  1602.   'iso8859-1',  'iso8859-2', 'iso8859-3', 'iso8859-4', 'macintosh', 'mazovia',
  1603.   and 'nextstep'.
  1604.  
  1605.   For example to set HPACK to interact with the user in Italian using the  ISO
  1606.   8859-1  (Latin  1) character set, the environment variables should be set as
  1607.   follows:
  1608.  
  1609.     set LANGUAGE=italian
  1610.     set CHARSET=iso8859-1              (Amiga, Atari, MSDOS, OS/2)
  1611.  
  1612.   or
  1613.  
  1614.     set LANGAUGE italian
  1615.     set CHARSET iso8859-1              (Archimedes)
  1616.  
  1617.   or
  1618.  
  1619.     setenv LANGUAGE=italian
  1620.     setenv CHARSET=iso8859-1           (Unix csh)
  1621.  
  1622.   or
  1623.  
  1624.     LANGUAGE=italian; export LANGUAGE
  1625.     CHARSET=iso8859-1; export CHARSET  (Unix sh)
  1626.  
  1627.  
  1628. Obtaining Public Keys
  1629.  
  1630.  There are currently several key servers which  can  be  used  to  obtain  PGP
  1631.  public  keys  through  the  Internet  and  UUCP  email  systems.  These are a
  1632.  convenient way of obtaining keys for people you wish to communicate with. The
  1633.  servers do NOT attempt to guarantee that a key is a valid key - the signators
  1634.  on the key should be used for that kind of security.  These services  can  be
  1635.  discontinued at any time without prior notification.
  1636.  
  1637.  Operating key servers as of 1 July 1993 are:
  1638.  
  1639.     Server:         pgp-public-keys@pgp.iastate.edu
  1640.     Administrator:  Michael Graff <explorer@iastate.edu>
  1641.     Site:           Iowa State University
  1642.     FTP:            tbird.cc.iastate.edu:/usr/explorer/public-keys.pgp
  1643.  
  1644.     Server:         pgp-public-keys@toxicwaste.mit.edu
  1645.     Administrator:  Derek Atkins <warlord@MIT.EDU>
  1646.     Site:           MIT/Athena
  1647.     FTP:            toxicwaste.mit.edu:/pub/keys/public-keys.pgp
  1648.  
  1649.     Server:         pgp-public-keys@phil.utmb.edu
  1650.     Administrator:  John Perry <perry@phil.utmb.edu>
  1651.     Site:           University of Texas
  1652.     FTP:            phil.utmb.edu:/pub/pgp/public-keys.pgp
  1653.  
  1654.     Server:         pgp-public-keys@cs.tamu.edu
  1655.     Administrator:  Gary Ratterree <garyr@cs.tamu.edu>
  1656.     Site:           Texas A&M University
  1657.  
  1658.     Server:         pgp-public-keys@demon.co.uk
  1659.     Administrator:  Mark Turner <mark@demon.co.uk>
  1660.     Site:           Demon Internet Services, UK
  1661.     FTP:            ftp.demon.co.uk:/pub/pgp/pubring.pgp
  1662.  
  1663.     Server:         pgp-public-keys@chao.sw.oz.au
  1664.     Administrator:  Jeremy Fitzhardinge <jeremy@sw.oz.au>
  1665.  
  1666.     Server:         pgp-public-keys@kiae.su
  1667.     Administrator:  Victor Borisov <blaster@rd.relcom.msk.su>
  1668.     Site:           Relcom Corporation, Moscow
  1669.  
  1670.     Server (UUCP):  pgp-public-keys@jpunix.com (uunet!jpunix!pgp-public-keys)
  1671.     Administrator:  John Perry <perry@jpunix.com>
  1672.     Site:           J. P. and Associates
  1673.  
  1674.     Server (UUCP):  pgp-public-keys@proxima.alt.za
  1675.     Administrator:  Lucio de Re <lucio@proxima.Alt.ZA>
  1676.  
  1677.  Updates to this list are posted to the Usenet alt.security.pgp newsgroups.
  1678.  
  1679.  Each keyserver processes requests in the form of mail messages.  The commands
  1680.  for  the  server  are  entered  on  the  'Subject:'  line of the message, for
  1681.  example:
  1682.  
  1683.     To: pgp-public-keys@junkbox.cc.iastate.edu
  1684.     Subject: help
  1685.  
  1686.  In the above example the server will return an informational message  on  how
  1687.  to use it.  Other possible commands are:
  1688.  
  1689.     Command         Message body contains
  1690.     -------         ---------------------
  1691.     ADD             Your PGP public key to add to server.
  1692.     INDEX           Returned list of all PGP keys the server knows about  (the
  1693.                     same as the output from PGP's -kv command).
  1694.     VERBOSE INDEX   Returned list of all PGP keys in verbose format (the  same
  1695.                     as the output from PGP's -kvv command).
  1696.     GET             Returned complete public key ring from the server.
  1697.     GET <userID>    Returned public key for the given userID.
  1698.     MGET <regexp>   Returned set of keys for  which  the  userID  matches  the
  1699.                     given <regexp>
  1700.     LAST <n>        All new keys added in the last <n> days.
  1701.  
  1702.  To  have your key added to the collection maintained by the key servers, save
  1703.  your public key to a file in ASCII-armoured format and simply mail it to  one
  1704.  of  the PGP key servers using 'add' as the message subject line.  For example 
  1705.  with most command-line oriented mailers the command would be:
  1706.  
  1707.     mail -s add <server address> < file.asc
  1708.  
  1709.  To get the key for the userID 'pgut1' (my own public key), the command  would
  1710.  be:
  1711.  
  1712.     mail -s "get pgut1" <server address>
  1713.  
  1714.  To get multiple keys using the mget command, possible options are:
  1715.  
  1716.     mget michael         Gets all keys whose userID's have "michael" in them.
  1717.     mget F605A5|3A738B   Gets the two keys with the given keyID's.
  1718.  
  1719.  In  addition  to  this  service,  there  is a large collection of public keys
  1720.  available for anonymous FTP at:
  1721.  
  1722.     ftp.informatik.uni-hamburg.de:/pub/virus/misc/pubkring.pgp
  1723.  
  1724.  To have your key added to  the  collection  send  it  to  Vesselin  Bontchev,
  1725.  bontchev@fbihh.informatik.uni-hamburg.de.
  1726.  
  1727.  
  1728. Using PGP Secret Keyrings
  1729.  
  1730.   Like PGP and PEM implementations, HPACK can store  its  secret  keys  in  an
  1731.   encrypted  format  to protect them from prying eyes.  However the encryption
  1732.   algorithm HPACK uses is somewhat different to the one used  in  PGP  due  to
  1733.   patent  restrictions and in PEM due to export restrictions.  This means that
  1734.   encrypted PGP keyrings need to have a  small  amount  of  extra  information
  1735.   added  to  them before HPACK can use them. The HPACK distribution includes a
  1736.   utility called KEYCVT which performs this task.  KEYCVT is run as follows:
  1737.  
  1738.     KEYCVT <PGP secret keyring> [<output keyfile>]
  1739.  
  1740.   Normally KEYCVT will append the extra information to the  existing  keyring.
  1741.   However  if  an optional output keyfile name is given, the extra information
  1742.   will be written to the output file instead of being added to the keyring.
  1743.  
  1744.   The source keyring may contain one or more secret keys.  For each key in the
  1745.   file, KEYCVT will display its key information and ask:
  1746.  
  1747.     Add information for this key so HPACK can use it (y/n)
  1748.  
  1749.   A "No" response will cause KEYCVT to print:
  1750.  
  1751.     Skipping key...
  1752.  
  1753.   and move on to the next key.  A "Yes" response will cause KEYCVT to  try  to
  1754.   add  the extra information needed by HPACK.  If the key is encrypted, KEYCVT
  1755.   will ask for the decryption password:
  1756.  
  1757.     Please enter password for this private key.
  1758.     Warning: Password will be echoed to screen!
  1759.     Password:
  1760.  
  1761.   If the incorrect password is entered, KEYCVT will warn:
  1762.  
  1763.     Incorrect checksum, possibly due to incorrect password
  1764.  
  1765.   and allow it to be reentered.  Up to three  attempts  at  the  password  are
  1766.   allowed  before KEYCVT gives up.  When the key has been read in, KEYCVT will
  1767.   add the extra information encrypted with the same password as was  used  for
  1768.   the  decryption.   This  is  the  password  which  HPACK,  like  PGP and PEM
  1769.   implementations, will use to decrypt the secret key.
  1770.  
  1771.   Please note that, unlike HPACK, KEYCVT *will* echo the password  entered  to
  1772.   the  screen.  Since KEYCVT is a one-use only application and since obtaining
  1773.   keyboard input without echo is quite difficult on many systems, KEYCVT  uses
  1774.   a  standard input routine to obtain its password.  In addition, the password
  1775.   used for KEYCVT should follow the same rules as HPACK, namely the key should
  1776.   be  8  characters  or  more  long  (see  the  section  "HPACK   Archive/Data
  1777.   Encryption" below for more details).
  1778.  
  1779.   Finally, when KEYCVT has finished processing the key file, it will ask:
  1780.  
  1781.     Finished processing keys. Add new key information to output keyring (y/n)
  1782.  
  1783.   A "Yes" response will add the new key information to the  output  key  file.
  1784.   If no keys were converted or a "No" response is given, KEYCVT will display:
  1785.  
  1786.     No keys converted, output file left unchanged.
  1787.  
  1788.   In  addition,  KEYCVT  will create the seed file needed by HPACK in the same
  1789.   directory as the PGP seed file if it doesn't already  exist.   If  the  seed
  1790.   file already exists, KEYCVT will display:
  1791.  
  1792.     Existing HPACK seed file left unchanged
  1793.  
  1794.   and exit.  If the file doesn't exist, HPACK will create it and display:
  1795.  
  1796.     HPACK seed file created
  1797.  
  1798.   before exiting.
  1799.  
  1800.   This  seed  file  can  also be created manually by copying the PGP seed file
  1801.   RANDSEED.BIN to a new file HPAKSEED.BIN.
  1802.  
  1803.  
  1804. Authentication of HPACK Executables
  1805.  
  1806.   There have been several occasions in the past  when  fake  versions  of  new
  1807.   archivers  have  been  distributed.   Sometimes  these fake release are even
  1808.   wrapped  up  in  a  nice-looking  "security  envelope"  guaranteeing   their
  1809.   authenticity.   Since the source code is freely available, it's all too easy
  1810.   for anyone to create a fake version of HPACK  in  which  the  encryption  or
  1811.   authentication code has been compromised.  In order to avoid any problems in
  1812.   this respect, the distributed HPACK executables are accompanied by a digital
  1813.   signature  (see the section "HPACK Archive/Data Authentication" above) which
  1814.   can be used to verify that it is indeed an  official  version.   Unlike  the
  1815.   schemes  used  by  other  archivers,  it  is  computationally  infeasible to
  1816.   compromise this method of authentication.
  1817.  
  1818.   In order to check the authenticity of the particular version of  HPACK,  you
  1819.   will  need  the  PGP encryption package (see the section "HPACK Archive/Data
  1820.   Authentication" above), and my public key, which is included in the standard
  1821.   PGP  distribution  and  also in the HPACK distribution.  My key is signed by
  1822.   Philip Zimmermann, the original author of PGP, and several  members  of  the
  1823.   PGP development team.  First, you should check my key for authenticity:
  1824.  
  1825.     pgp -kc Peter Gutmann
  1826.  
  1827.   When it performs the key check, PGP should display the following signatures:
  1828.  
  1829.   Type bits/keyID     Date    User ID
  1830.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1831.   sig!      E722D9 1992/11/26   Branko Lankester <lankeste@fwi.uva.nl>
  1832.   sig!      997D47 1992/10/11   Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1833.   sig!      7C02F9 1992/09/07   Felipe Rodriquez <nonsenso@utopia.hacktic.nl>
  1834.   sig!      1336F5 1992/09/05   Harry Bush <Harry@castle.riga.lv>
  1835.   sig!      67F70B 1992/09/02   Philip R. Zimmermann <prz@sage.cgd.ucar.edu>
  1836.  
  1837.   Version 2.1 and up of PGP can, in addition, calculate a key fingerprint  for
  1838.   a key.  This can be calculated with:
  1839.  
  1840.     pgp -kvc Peter Gutmann
  1841.  
  1842.   PGP should display the following:
  1843.  
  1844.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1845.             Key fingerprint = 7C 6D 81 DF F2 62 0F 4A  67 0E 86 50 99 7E A6 B1
  1846.  
  1847.   If the keyID or key fingerprint for my key differs from the one shown  above
  1848.   or  the  signatures  don't  check out, then the key is a probably a fake and
  1849.   shouldn't be trusted.  Assuming the key is in order, the authenticity of the
  1850.   program itself and the internationalization information can be checked with:
  1851.  
  1852.     pgp <program name> hpack.sig
  1853.     pgp <internationalization file name> language.sig
  1854.  
  1855.   where hpack.sig and language.sig are the digital  signatures  included  with
  1856.   the  program  as  distributed.  For example to check the authenticity of the 
  1857.   Amiga HPACK executable type:
  1858.  
  1859.     pgp hpack hpack.sig
  1860.     pgp language.dat language.sig
  1861.  
  1862.   When it performs the check, PGP should display:
  1863.  
  1864.     Good signature from user Peter Gutmann <pgut1@cs.aukuni.ac.nz> .
  1865.     Signature made <date of signature>
  1866.  
  1867.   If PGP reports a bad signature then the executable shouldn't be trusted.   A
  1868.   new,  hopefully  untouched,  version  can be obtained from any archive site,
  1869.   BBS, or system which carries the standard HPACK  distribution,  or  you  can
  1870.   arrange to get it directly from the author.
  1871.  
  1872.  
  1873. Using HPACK Encryption in the US
  1874.  
  1875.   The  following  section is only of interested to HPACK users residing in the
  1876.   US - non-US HPACK users can skip it.
  1877.  
  1878.   The RSA public-key encryption algorithm is covered by US  Patent  4,405,829,
  1879.   and  also  by  US  Patent 4,218,582.  The exclusive licensing rights to both
  1880.   patents are held by Public Key  Partners  (PKP)  of  Sunnyvale,  California.
  1881.   The  US  version of HPACK uses a special set of routines called RSAREF which
  1882.   are available from RSA Laboratories, which is the research  and  development
  1883.   division of RSA Data Security, Inc., the company founded by the inventors of
  1884.   the  RSA  public-key  cryptosystem.   RSA  Laboratories reviews, designs and
  1885.   implements secure and efficient cryptosystems  of  all  kinds.  Its  clients
  1886.   include   government   agencies,   telecommunications   companies,  computer
  1887.   manufacturers, software developers, cable TV broadcasters, interactive video
  1888.   manufacturers, and satellite broadcast companies, among others.
  1889.  
  1890.   RSA Laboratories have granted users of HPACK  permission  to  make  a  small
  1891.   number  of  changes  to the RSAREF code in order to integrate it into HPACK.
  1892.   More details on this integration are contained in the README  file  included
  1893.   in  the  HPACK  distribution.   This  applies  only for noncommercial use of
  1894.   HPACK. Anyone  intending  to  use  HPACK  commercially  should  contact  RSA
  1895.   Laboratories at the address given below.
  1896.  
  1897.   Everyone  who  wishes to compile HPACK themselves must obtain their own copy
  1898.   of RSAREF.   Free  licenses  to  redistribute  RSAREF  are  available.   For
  1899.   information, please send electronic mail to <rsaref-administrator@rsa.com>.
  1900.  
  1901.   RSAREF  is  available  to  citizens  and  permanent residents of the US.  It
  1902.   can't be sent outside the United States, or given to anyone  who  is  not  a
  1903.   United  States  citizen and doesn't have a "green card".  These are US State
  1904.   and  Commerce  Department  requirements,  because  the  code  in  RSAREF  is
  1905.   export-controlled  technology.   (Incidentally,  the  fastest implementation
  1906.   I've ever seen of the conventional cipher used  in  RSAREF  was  written  in
  1907.   Moscow, but that's another story).
  1908.  
  1909.   Any  questions  on  the  RSAREF  software, licenses, export restrictions, or
  1910.   other RSA Laboratories offerings should be addressed to:
  1911.  
  1912.       RSA Laboratories                   RSA Data Security, Inc.
  1913.       10 Twin Dolphin Drive              100 Marine Parkway
  1914.       Redwood City, CA  94065            Redwood City, CA  94065
  1915.       USA                                USA
  1916.  
  1917.       (415) 595-7703                     (415) 595-8782
  1918.       (415) 595-4126 (fax)               (415) 595-1873 (fax)
  1919.  
  1920.   or via email to <rsaref-administrator@rsa.com>.
  1921.  
  1922.  
  1923. Credits
  1924.  
  1925.   Many people have helped to get HPACK where it is today, among  them  (in  no
  1926.   particular order):
  1927.  
  1928.   Ports to different operating systems:
  1929.  
  1930.     Stuart Woolford did the Unix port.
  1931.     John Burnell did the OS/2 port.
  1932.     Jason Williams and Edouard Poor helped with the Archimedes port.
  1933.     Nick Little and Joerg Plate helped with the Amiga port.
  1934.     Martin Braschler did the Atari ST/TT port.
  1935.  
  1936.   Translations:
  1937.  
  1938.     Peter Sowa and Martin Braschler did the German translation.
  1939.     Peter de Vocht did the Dutch translation.
  1940.     Arrigo Triulzi did the Italian translation.
  1941.     Rafal Mazkowski did the Polish translation.
  1942.     Eduardo Jacob did the Spanish translation.
  1943.     Martin Braschler did the Swiss German translation.
  1944.     Peter Gutmann had a go at the Klingon translation.
  1945.  
  1946.   Documentation:
  1947.  
  1948.     David W. Sanderson vastly improved the Unix manpage
  1949.  
  1950.  
  1951. Contacting the Author
  1952.  
  1953.   You can contact me in any of the following ways:
  1954.  
  1955.     By calling me on +64 9 426-5097 within reasonable hours (10am-12pm NZT).
  1956.  
  1957.     By  Usenet  email  to   either   pgut1@cs.aukuni.ac.nz   (preferred),   or
  1958.     p_gutmann@cs.aukuni.ac.nz,  peterg@kcbbs.gen.nz,  or  peter@nacjack.gen.nz
  1959.     (In rough order of preference)
  1960.  
  1961.     By  Fidonet  email  to  Peter  Gutmann  at  3:772/90.0.   However  this is
  1962.     probably  about  as  reliable  a link as using carrier mackerel across the
  1963.     Sahara.
  1964.  
  1965.     By snail mail to 24 Durness Pl, Orewa, Auckland, New Zealand
  1966.  
  1967.     By throwing a bottle in the ocean (slightly less reliable than the Fidonet
  1968.     link).
  1969.  
  1970.     By implanting subliminal messages in the music I listen to.
  1971.  
  1972.  
  1973. HPACK Error Messages
  1974.  
  1975.   The error messages given by HPACK are the following:
  1976.  
  1977.   [ No matching files on disk ]
  1978.     The command you have given resulted  in  no  changes  being  made  to  the
  1979.     archive(s)  specified,  due  to the files you specified not being found on
  1980.     the disk.
  1981.  
  1982.   [ No matching files in archive ]
  1983.     The command you have given resulted  in  no  changes  being  made  to  the
  1984.     archive(s)  specified.   There can be several reasons for this, among them
  1985.     being that there were no matching files in the archive to  replace/update,
  1986.     or  that there were no matching files in the root directory of the archive
  1987.     (HPACK  will  not,   by   default,   check   subdirectories:   To   handle
  1988.     subdirectories  you  must either give the full path within the archive, or
  1989.     use the [-r]ecurse subdirectories option).
  1990.  
  1991.   [ No matching archives found ]
  1992.     The command you have given resulted  in  no  changes  being  made  to  the
  1993.     archive(s) specified, as they could not be found on the disk.
  1994.  
  1995.   [ Out of disk space ]
  1996.     There   is   not   enough   room   on   the   current   disk   to   finish
  1997.     archiving/unarchiving a file.
  1998.  
  1999.   [ Unknown command ]
  2000.     You have given HPACK a command which it  doesn't  understand.   Check  the
  2001.     section "HPACK Commands" for valid HPACK commands.
  2002.  
  2003.   [ Unknown option ]
  2004.     You have given HPACK an option which it  doesn't  understand.   Check  the
  2005.     section "HPACK Options" for valid HPACK options.
  2006.  
  2007.   [ Unknown overwrite option ]
  2008.     You have specified an unknown option for the  [-o]verwrite  switch.   This
  2009.     error  may  also  be  caused  by  forgetting  to specify an option for the
  2010.     switch, in which case HPACK will treat the character following the  -o  as
  2011.     the option.
  2012.  
  2013.   [ Unknown view option ]
  2014.     You have specified an unknown option for the [-v]iew options switch.  This
  2015.     error  may  also  be  caused  by  forgetting  to specify an option for the
  2016.     switch, in which case HPACK will treat the character following the  -v  as
  2017.     the option.
  2018.  
  2019.   [ Unknown directory option ]
  2020.     You have specified an unknown option for the [-d]irectory options  switch.
  2021.     This  error  may also be caused by forgetting to specify an option for the
  2022.     switch, in which case HPACK will treat the character following the  -d  as
  2023.     the option.
  2024.  
  2025.   [ Bad wildcard format ]
  2026.     You have used an incorrect format when using wildcards in filenames.
  2027.  
  2028.   [ Wildcard expression too complex ]
  2029.     You have used a very complex wildcard sequence,  and  HPACK  doesn't  have
  2030.     enough room to process it fully.  Try simplifying the expression, or break
  2031.     it up into separate simpler expressions.
  2032.  
  2033.   [ Cannot use wildcards in external pathname ]
  2034.     You have used wildcards in a pathname outside the archive.  Since  HPACK's
  2035.     extended wildcards are built on top of the usual operating system ones (if
  2036.     they exist) the resulting system would run very slowly if they had  to  be
  2037.     simulated on an external filesystem.
  2038.  
  2039.   [ Not an HPACK archive ]
  2040.     The supposed archive file does not appear to  be  an  archive  created  by
  2041.     HPACK.
  2042.  
  2043.   [ Cannot open archive file ]
  2044.     HPACK cannot open the archive file.
  2045.  
  2046.   [ Cannot open data file - skipping ]
  2047.     HPACK  cannot  open the data file to dearchive data to, and is skipping to
  2048.     the next file to be processed.
  2049.  
  2050.   [ Cannot open temp file ]
  2051.     HPACK cannot open the temporary work  file  it  needs  for  the  [D]elete,
  2052.     [F]reshen, [R]eplace, or [U]pdate commands.
  2053.  
  2054.   [ Cannot open script file - skipping ]
  2055.     HPACK cannot open the script file containing the list of files to  process
  2056.     and HPACK control commands, and  is  skipping  to  the  next  file  to  be
  2057.     processed.
  2058.  
  2059.   [ Cannot access base directory ]
  2060.     The base directory you have specified does not exist.
  2061.  
  2062.   [ Cannot create directory ]
  2063.     HPACK cannot create a directory to unarchive files into.
  2064.  
  2065.   [ Cannot override base path ]
  2066.     This error message arises when using the [-b]ase path option and either  a
  2067.     drive specifier is given in the pathname of one of the files to process or
  2068.     the base path includes an actual path and the file pathname  is  specified
  2069.     as  being off the root directory.  Since the base path is prepended to the
  2070.     pathname of the file, the pathname cannot contain  a  drive  specifier  or
  2071.     absolute directory reference in it.
  2072.  
  2073.   [ Unknown archiving method - skipping ]
  2074.     The version of HPACK you are using is unfamiliar with the archiving method
  2075.     used for this file, and is skipping to the next file to be processed.
  2076.  
  2077.   [ Data is encrypted - skipping ]
  2078.     The data in this file is encrypted, and no means of  decryption  has  been
  2079.     supplied  by  the user; therefore HPACK cannot process it and will move on
  2080.     to the next file to be processed.
  2081.  
  2082.   [ Cannot process encrypted archive ]
  2083.     The entire archive (rather than just the data in  it)  is  encrypted,  and
  2084.     HPACK  cannot decrypt it to read it.  This is either because no decryption
  2085.     password has been supplied, or because the archive is  encrypted  with  an
  2086.     encryption method for which no decryption information is available.
  2087.  
  2088.   [ Cannot change deleted archive ]
  2089.     You  have  used  the  [-k]ill  original  archive  option  along  with  the
  2090.     [R]eplace, [F]reshen, or [U]pdate options.
  2091.  
  2092.   [ Cannot change multipart archive ]
  2093.     You have asked HPACK to [F]reshen, [U]pdate, [R]eplace, or [D]elete  files
  2094.     in  a  multipart  archive, which would involve rewriting an archive spread
  2095.     across multiple disks.
  2096.  
  2097.   [ Cannot change unit-compressed archive ]
  2098.     If an archive is compressed as one unit, it cannot later be changed in any
  2099.     way.   Unit-compressed  archives trade off compressed size for flexibility
  2100.     in updating them.
  2101.  
  2102.   [ Cannot change encrypted archive ]
  2103.     You have asked HPACK to [A]dd, [F]reshen, [U]pdate,  [R]eplace,  [D]elete,
  2104.     or [X]tract with move, files in an encrypted archive.  Files or data in an
  2105.     encrypted archive cannot be changed without decrypting  and  re-encrypting
  2106.     the entire archive.
  2107.  
  2108.   [ Cannot change unencrypted archive ]
  2109.     You have asked HPACK to make changes  to  an  unencrypted  archive,  using
  2110.     block-encryption.   HPACK  will  not  retroactively  encrypt  the archive,
  2111.     however the files can be individually encrypted as they are added  to  the
  2112.     archive.
  2113.  
  2114.   [ Cannot use both conventional and public-key encryption ]
  2115.     You  have  specified  that  data  be  both  conventional  and   public-key
  2116.     encrypted.   Data  can  be  encrypted with one of the two methods, but not
  2117.     with both at once.
  2118.  
  2119.   [ Passwords not the same ]
  2120.     When encrypting data, HPACK will  ask  you  to  retype  the  password  for
  2121.     security.   If  the second password doesn't match the first password, this
  2122.     error message is issued.
  2123.  
  2124.   [ Password must be between 8 and 80 characters long ]
  2125.     The passphrase you have entered  is  either  less  than  eight  characters
  2126.     (making  it  dangerously  short),  or  more  than 80 characters (making it
  2127.     excessively long).
  2128.  
  2129.   [ Bad keyfile ]
  2130.     The keyfile containing the keys used for decrypting/authenticating data is
  2131.     corrupted.
  2132.  
  2133.   [ Missing userID for encryption/authentication ]
  2134.     You  have  forgotten  to  specify  a  userID  when  adding  authentication
  2135.     information to an archive, or when using public-key encryption, or haven't
  2136.     given a primary userID for public-key encryption when  using  a  secondary
  2137.     userID.
  2138.  
  2139.   [ Cannot find secret key for userID ]
  2140.     The secret key needed to add authentication information to  data  for  the
  2141.     given userID cannot be found, and the authentication information cannot be
  2142.     added.
  2143.  
  2144.   [ Cannot find public key for userID ]
  2145.     The public key needed to encrypt data  for  the  given  userID  cannot  be
  2146.     found, and the encryption can't be carried out.
  2147.  
  2148.   [ Cannot find secret key - cannot decrypt data ]
  2149.     The secret key needed to decrypt the data cannot be found,  and  the  data
  2150.     cannot be decrypted.  This message will  also  occur  if  the  secret  key
  2151.     exists  but  hasn't  been  processed with the KEYCVT utility, which adds a
  2152.     small amount of extra information needed by HPACK to use the key.  See the
  2153.     section "Using PGP Secret Keyrings" above for more details.
  2154.  
  2155.   [ Cannot find public key - cannot perform authentication check ]
  2156.     The public key for the authentication information attached to the data  or
  2157.     archive  can't  be  found, and thus the data authentication check can't be
  2158.     carried out.
  2159.  
  2160.   [ Authentication data corrupted - cannot perform authentication check ]
  2161.     The information used for authenticating the data in an  archive  has  been
  2162.     corrupted.
  2163.  
  2164.   [ Cannot read random seed file ]
  2165.     The random seed file needed for public-key encryption cannot be read.   If
  2166.     it doesn't exist or has been accidentally destroyed, a new one  should  be
  2167.     created  either  using  the  KEYCVT  utility or manually.  See the section
  2168.     "Using PGP Secret Keyrings" above for more details.
  2169.  
  2170.   [ Archive directory corrupted ]
  2171.     The archive directory information has been corrupted.   Depending  on  how
  2172.     bad  the  corruption  is,  HPACK  will  either exit or prompt the user for
  2173.     whether it should try to continue, attempting to fix  any  errors  in  the
  2174.     directory as it processes it.
  2175.  
  2176.   [ Out of memory ]
  2177.     There is not enough memory available for HPACK to continue.
  2178.  
  2179.   [ Path too long ]
  2180.     You have used more than the maximum allowable number  of  characters  (the
  2181.     limit set by the host OS) in a pathname.
  2182.  
  2183.   [ Path not found ]
  2184.     You have asked HPACK to add a file to a nonexistent  directory  inside  an
  2185.     archive.
  2186.  
  2187.   [ Bad character in filename ]
  2188.     Input lines in script files are  given  a  basic  check  for  being  valid
  2189.     filenames.   If blatantly incorrect characters are discovered in a line of
  2190.     input this warning will be printed.
  2191.  
  2192.   [ Errors detected in script file ]
  2193.     Errors  (either  illegal  characters  or  too-long  pathnames)  have  been
  2194.     detected in the script file.
  2195.  
  2196.   [ Maximum level of errors detected in script file ]
  2197.     More than 10 errors have been detected in the  script  file.   This  error
  2198.     message generally results from erroneously specifying a non-script file as
  2199.     a script file.
  2200.  
  2201.   [ Too many levels of directory nesting ]
  2202.     You have tried to go down through more than 15  levels  of  subdirectories
  2203.     using the [-r]ecurse subdirectories option.
  2204.  
  2205.   [ Stopped at user request ]
  2206.     The user or some other program  interrupted  HPACK  during  the  archiving
  2207.     process  (for  example  by  pressing  the  "Break"  key or by sending it a
  2208.     termination signal).
  2209.  
  2210.   [ Truncated EOF padding ]
  2211.     In some implementations of the Xmodem and Ymodem transfer protocols,  CP/M
  2212.     end-of-file   characters  (Ctrl-Z's)  are  appended  to  the  end  of  the
  2213.     transmitted file.  When HPACK detects these spurious characters on the end
  2214.     of  an archive, it will truncate the archive to its correct size and issue
  2215.     this warning message.
  2216.  
  2217.   [ Archive section too short, skipping... ]
  2218.     If part of a multipart archive is less than approximately 500 bytes  long,
  2219.     HPACK will not attempt to create the archive but will move the data to the
  2220.     next, hopefully less full, disk.
  2221.  
  2222.   [ File error ]
  2223.     A miscellaneous type of file error occurred during the  archiving  process
  2224.     (for  example  some  sort  of  network error).  The message itself will if
  2225.     possible contain more detail about the precise type of error.
  2226.  
  2227.   [ Internal error ]
  2228.     Some form of internal error occurred in HPACK.  Contact  the  author  with
  2229.     details on how the error was brought about.
  2230.  
  2231.   [ Long argument format not supported in this version ]
  2232.     Some CLI versions of HPACK, notably the Amiga, Archimedes, Mac-CLI, MSDOS,
  2233.     OS/2,  UNIX, and VMS ones, support a long argument format signalled by the
  2234.     -z switch, which is used to handle OS-specific options.  The  version  you
  2235.     are using doesn't support this option.
  2236.  
  2237.  
  2238. Disclaimer
  2239.  
  2240.   This program is guaranteed to  perform  as  claimed,  excluding  any  delays
  2241.   caused  or  enhanced  by war, civil commotion, or rioting, whether declared,
  2242.   spontaneous, reprehensible, or justified; undue pressure  to  perform,  from
  2243.   whatsoever  source; mal de mer, mal de pays, mal de siecle, mal de code, mal
  2244.   de machine, or any force majeure not pretofore invoked.
  2245.  
  2246.   The program warranty is void in case of nuclear war, whether caused  by  the
  2247.   program or not.
  2248.  
  2249.  
  2250. Trademarks
  2251.  
  2252.   Amiga is a trademark of Commodore Business Machines.
  2253.   Archimedes is a trademark of Acorn Computers.
  2254.   GIF is a trademark of Compuserve Inc.
  2255.   IBM is a trademark of International Business Machines Corp.
  2256.   Macintosh is a trademark of Apple Computer Inc.
  2257.   MSDOS is a trademark of Microsoft Inc.
  2258.   OS/2 is a trademark of International Business Machines Corp.
  2259.   PKZIP is a trademark of PKWare Inc.
  2260.   Prime and Primos are a trademark's of Prime Computer Corp.
  2261.   QNX is a trademark of <someone>.
  2262.   Rolemaster is a trademark of Iron Crown Enterprises Inc.
  2263.   StuffIt is a trademark of Raymond Lau and Aladdin Systems.
  2264.   ThinkC is a trademark of Symantec Corporation.
  2265.   UNIX is both a trademark and a footnote of AT&T.
  2266.   Windoze is not a trademark of Microsoft Corp.  Windows is, but it's a
  2267.     somewhat less accurate description of its performance.
  2268.   These trademark lists are a trademark of too many lawyers and too few
  2269.     people with common sense being involved.
  2270.  
  2271.         "Good compression isn't a matter of life and death - it's far more
  2272.                                important than that"
  2273.