Home | History | Annotate | Download | only in common
      1 /*
      2  * Copyright (C) The Internet Society (2001).  All Rights Reserved.
      3  *
      4  * This document and translations of it may be copied and furnished to
      5  * others, and derivative works that comment on or otherwise explain it
      6  * or assist in its implementation may be prepared, copied, published
      7  * and distributed, in whole or in part, without restriction of any
      8  * kind, provided that the above copyright notice and this paragraph are
      9  * included on all such copies and derivative works.  However, this
     10  * document itself may not be modified in any way, such as by removing
     11  * the copyright notice or references to the Internet Society or other
     12  * Internet organizations, except as needed for the purpose of
     13  * developing Internet standards in which case the procedures for
     14  * copyrights defined in the Internet Standards process must be
     15  * followed, or as required to translate it into languages other than
     16  * English.
     17  *
     18  * The limited permissions granted above are perpetual and will not be
     19  * revoked by the Internet Society or its successors or assigns.
     20  *
     21  * This document and the information contained herein is provided on an
     22  * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
     23  * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
     24  * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
     25  * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
     26  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
     27  */
     28 
     29 /*
     30  *  sha1.h
     31  *
     32  *  Description:
     33  *      This is the header file for code which implements the Secure
     34  *      Hashing Algorithm 1 as defined in FIPS PUB 180-1 published
     35  *      April 17, 1995.
     36  *
     37  *      Many of the variable names in this code, especially the
     38  *      single character names, were used because those were the names
     39  *      used in the publication.
     40  *
     41  *      Please read the file sha1.c for more information.
     42  *
     43  */
     44 
     45 
     46 #ifndef _SHA1_H_
     47 #define _SHA1_H_
     48 
     49 #include <stdint.h>
     50 /*
     51  * If you do not have the ISO standard stdint.h header file, then you
     52  * must typdef the following:
     53  *    name              meaning
     54  *  uint32_t         unsigned 32 bit integer
     55  *  uint8_t          unsigned 8 bit integer (i.e., unsigned char)
     56  *  int_least16_t    integer of >= 16 bits
     57  *
     58  */
     59 
     60 #ifndef _SHA_enum_
     61 #define _SHA_enum_
     62 enum
     63 {
     64     shaSuccess = 0,
     65     shaNull,            /* Null pointer parameter */
     66     shaInputTooLong,    /* input data too long */
     67     shaStateError       /* called Input after Result */
     68 };
     69 #endif
     70 #define SHA1HashSize 20
     71 
     72 /*
     73  *  This structure will hold context information for the SHA-1
     74  *  hashing operation
     75  */
     76 typedef struct SHA1Context
     77 {
     78     uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest  */
     79 
     80     uint32_t Length_Low;            /* Message length in bits      */
     81     uint32_t Length_High;           /* Message length in bits      */
     82 
     83                                /* Index into message block array   */
     84     int_least16_t Message_Block_Index;
     85     uint8_t Message_Block[64];      /* 512-bit message blocks      */
     86 
     87     int Computed;               /* Is the digest computed?         */
     88     int Corrupted;             /* Is the message digest corrupted? */
     89 } SHA1Context;
     90 
     91 /*
     92  *  Function Prototypes
     93  */
     94 int SHA1Reset(  SHA1Context *);
     95 int SHA1Input(  SHA1Context *,
     96                 const uint8_t *,
     97                 unsigned int);
     98 int SHA1Result( SHA1Context *,
     99                 uint8_t Message_Digest[SHA1HashSize]);
    100 
    101 #endif
    102