text: /* File:    md6_nist.h
  ** Author:  Ronald L. Rivest
  ** Address: Room 32G-692 Stata Center 
  **          32 Vassar Street 
  **          Cambridge, MA 02139
  ** Email:   rivest@mit.edu
  ** Date:    9/25/2008
  **
  ** (The following license is known as "The MIT License")
  ** 
  ** Copyright (c) 2008 Ronald L. Rivest
  ** 
  ** Permission is hereby granted, free of charge, to any person obtaining a copy
  ** of this software and associated documentation files (the "Software"), to deal
  ** in the Software without restriction, including without limitation the rights
  ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ** copies of the Software, and to permit persons to whom the Software is
  ** furnished to do so, subject to the following conditions:
  ** 
  ** The above copyright notice and this permission notice shall be included in
  ** all copies or substantial portions of the Software.
  ** 
  ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ** THE SOFTWARE.
  **
  ** (end of license)
  **
  ** This is part of the MD6 hash function package.
  ** The files defining the MD6 hash function are:
  **    md6.h
  **    md6_compress.c
  **    md6_mode.c
  ** The files defining the interface between MD6 and the NIST SHA-3
  ** API are:
  **    md6_nist.h
  **    md6_nist.c
  ** The NIST SHA-3 API is defined in:
  **    http://www.csrc.nist.gov/groups/ST/hash/documents/SHA3-C-API.pdf
  **
  ** See  http://groups.csail.mit.edu/cis/md6  for more information.
  */
  
  /* Multiple inclusion protection (through end of file)
  */
  #ifndef MD6_NIST_H_INCLUDED
  #define MD6_NIST_H_INCLUDED
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  typedef unsigned char BitSequence;
  
  typedef unsigned long long DataLength;
  
  typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn;
  
  typedef md6_state hashState;
  
  HashReturn Init( hashState *state, 
  		 int hashbitlen
  		 );
  
  HashReturn Update( hashState *state, 
  		   const BitSequence *data, 
  		   DataLength databitlen
  		   );
  
  HashReturn Final( hashState *state,
  		  BitSequence *hashval
  		  );
  
  HashReturn Hash( int hashbitlen,
  		 const BitSequence *data,
  		 DataLength databitlen,
  		 BitSequence *hashval
  		 );
  
  #ifdef __cplusplus
  }
  #endif
  
  /* end of multiple inclusion protection
  */
  #endif
  
  /*
  ** end of nist.h
  */
  