haval(3trf)


NAME

   haval - Message digest "haval"

SYNOPSIS

   package require Tcl  ?8.2?

   package require Trf  ?2.1.3?

   haval ?options...? ?data?

DESCRIPTION

   The  command  haval  is  one of several message digests provided by the
   package trf. See trf-intro for an overview of the whole package.

   haval ?options...? ?data?
          The options listed below are understood by  the  digest  if  and
          only  if  the  digest  is  attached  to  a channel.  See section
          IMMEDIATE  versus  ATTACHED  for  an  explanation  of  the  term
          attached.

          -mode absorb|write|transparent
                 This  option  has  to  be present. The specified argument
                 determines the behaviour of the digest in attached mode.

                 Beyond  the  argument  values  listed  above  all  unique
                 abbreviations   are  recognized  too.  Their  meaning  is
                 explained below:

                 absorb All  data  written  to  the  channel  is  used  to
                        calculate the value of the message digest and then
                        passed unchanged to the next level in the stack of
                        transformations  for  the  channel  the  digest is
                        attached to.   When  the  channel  is  closed  the
                        completed  digest  is written out too, essentially
                        attaching the  vlaue  of  the  diggest  after  the
                        information actually written to the channel.

                        When  reading  from  the  channel  a value for the
                        digest is computed too, and after closing  of  the
                        channel compared to the digest which was attached,
                        i.e. came behind  the  actual  data.   The  option
                        -matchflag  has to be specified so that the digest
                        knows  where  to  store   the   result   of   said
                        comparison.  This  result  is  a string and either
                        "ok", or "failed".

                 write  All data read from or written to the  channel  the
                        digest  is attached to is ignored and thrown away.
                        Only a  value  for  the  digest  of  the  data  is
                        computed.  When the channel is closed the computed
                        values are stored as ordered through  the  options
                        -write-destination,       -write-type,      -read-
                        destination, and -read-type.

                 transparent
                        This mode is a mixture of both  absorb  and  write
                        modes.  As  for  absorb all data, read or written,
                        passes through the digest unchanged. The generated
                        values  for  the digest however are handled in the
                        same way as for write.

          -matchflag varname
                 This option can be used if and only if the option  "-mode
                 absorb" is present. In that situation the argument is the
                 name of a global or namespaced variable. The digest  will
                 write the result of comparing two digest values into this
                 variable. The option will be ignored if  the  channel  is
                 write-only,  because  in  that  case  there  will  be  no
                 comparison of digest values.

          -write-type variable|channel
                 This option can be used for  digests  in  mode  write  or
                 transparent.  Beyond  the  values  listed above all their
                 unique abbreviations are also allowed as argument values.
                 The  option determines the type of the argument to option
                 -write-destination. It defaults to variable.

          -read-type variable|channel
                 Like  option   -write-type,   but   for   option   -read-
                 destination.

          -write-destination data
                 This  option  can  be  used  for digests in mode write or
                 transparent.  The value data is  either  the  name  of  a
                 global  (or  namespaced)  variable  or  the  handle  of a
                 writable  channel,  dependent  on  the  value  of  option
                 -write-type. The message digest computed for data written
                 to the attached channel is  written  into  it  after  the
                 attached  channel  was  closed.  The option is ignored if
                 the channel is read-only.

                 Note that using a variable may  yield  incorrect  results
                 under tcl 7.6, due to embedded \0's.

          -read-destination data
                 This  option  can  be  used  for digests in mode write or
                 transparent.  The value data is  either  the  name  of  a
                 global  (or  namespaced)  variable  or  the  handle  of a
                 writable channel, dependent on the value of option -read-
                 type.  The message digest computed for data read from the
                 attached channel is written into it  after  the  attached
                 channel was closed.  The option is ignored if the channel
                 is write-only.

                 Note that using a variable may  yield  incorrect  results
                 under tcl 7.6, due to embedded \0's.

   The  options listed below are always understood by the digest, attached
   versus immediate does not matter. See section IMMEDIATE versus ATTACHED
   for explanations of these two terms.

          -attach channel
                 The  presence/absence  of this option determines the main
                 operation mode of the transformation.

                 If present the transformation will be  stacked  onto  the
                 channel  whose  handle was given to the option and run in
                 attached mode.  More  about  this  in  section  IMMEDIATE
                 versus ATTACHED.

                 If  the  option  is  absent the transformation is used in
                 immediate  mode  and  the  options   listed   below   are
                 recognized.  More  about this in section IMMEDIATE versus
                 ATTACHED.

          -in channel
                 This options is legal if and only if  the  transformation
                 is  used in immediate mode. It provides the handle of the
                 channel the data to transform has to be read from.

                 If the transformation  is  in  immediate  mode  and  this
                 option is absent the data to transform is expected as the
                 last argument to the transformation.

          -out channel
                 This options is legal if and only if  the  transformation
                 is  used in immediate mode. It provides the handle of the
                 channel the generated transformation  result  is  written
                 to.

                 If  the  transformation  is  in  immediate  mode and this
                 option is absent the generated data is  returned  as  the
                 result of the command itself.

IMMEDIATE VERSUS ATTACHED

   The  transformation  distinguishes  between  two main ways of using it.
   These are the immediate and attached operation modes.

   For the attached mode the option  -attach  is  used  to  associate  the
   transformation  with  an  existing channel. During the execution of the
   command no transformation is performed, instead the channel is  changed
   in  such  a  way, that from then on all data written to or read from it
   passes through the transformation and is modified by  it  according  to
   the  definition above.  This attachment can be revoked by executing the
   command unstack for the chosen channel. This is the only way to do this
   at the Tcl level.

   In  the  second  mode,  which  can be detected by the absence of option
   -attach, the transformation immediately  takes  data  from  either  its
   commandline  or a channel, transforms it, and returns the result either
   as result of the command, or writes it into a  channel.   The  mode  is
   named after the immediate nature of its execution.

   Where  the  data  is  taken  from, and delivered to, is governed by the
   presence and absence of the options -in and -out.  It should  be  noted
   that this ability to immediately read from and/or write to a channel is
   an historic artifact which was introduced at  the  beginning  of  Trf's
   life when Tcl version 7.6 was current as this and earlier versions have
   trouble to deal with  \0  characters  embedded  into  either  input  or
   output.

SEE ALSO

   adler, crc, crc-zlib, haval, md2, md5, md5_otp, ripemd-128, ripemd-160,
   sha, sha1, sha1_otp, trf-intro

KEYWORDS

   authentication, hash, hashing, haval, mac, message digest

COPYRIGHT

   Copyright (c) 1996-2003, Andreas Kupries <andreas_kupries@users.sourceforge.net>





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.