uboot/include/sha1.h
<<
>>
Prefs
   1/**
   2 * \file sha1.h
   3 * based from http://xyssl.org/code/source/sha1/
   4 *  FIPS-180-1 compliant SHA-1 implementation
   5 *
   6 *  Copyright (C) 2003-2006  Christophe Devine
   7 *
   8 *  This library is free software; you can redistribute it and/or
   9 *  modify it under the terms of the GNU Lesser General Public
  10 *  License, version 2.1 as published by the Free Software Foundation.
  11 *
  12 *  This library is distributed in the hope that it will be useful,
  13 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15 *  Lesser General Public License for more details.
  16 *
  17 *  You should have received a copy of the GNU Lesser General Public
  18 *  License along with this library; if not, write to the Free Software
  19 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  20 *  MA  02110-1301  USA
  21 */
  22/*
  23 *  The SHA-1 standard was published by NIST in 1993.
  24 *
  25 *  http://www.itl.nist.gov/fipspubs/fip180-1.htm
  26 */
  27#ifndef _SHA1_H
  28#define _SHA1_H
  29
  30#ifdef __cplusplus
  31extern "C" {
  32#endif
  33
  34#define SHA1_SUM_POS    -0x20
  35#define SHA1_SUM_LEN    20
  36
  37/**
  38 * \brief          SHA-1 context structure
  39 */
  40typedef struct
  41{
  42    unsigned long total[2];     /*!< number of bytes processed  */
  43    unsigned long state[5];     /*!< intermediate digest state  */
  44    unsigned char buffer[64];   /*!< data block being processed */
  45}
  46sha1_context;
  47
  48/**
  49 * \brief          SHA-1 context setup
  50 *
  51 * \param ctx      SHA-1 context to be initialized
  52 */
  53void sha1_starts( sha1_context *ctx );
  54
  55/**
  56 * \brief          SHA-1 process buffer
  57 *
  58 * \param ctx      SHA-1 context
  59 * \param input    buffer holding the  data
  60 * \param ilen     length of the input data
  61 */
  62void sha1_update( sha1_context *ctx, unsigned char *input, int ilen );
  63
  64/**
  65 * \brief          SHA-1 final digest
  66 *
  67 * \param ctx      SHA-1 context
  68 * \param output   SHA-1 checksum result
  69 */
  70void sha1_finish( sha1_context *ctx, unsigned char output[20] );
  71
  72/**
  73 * \brief          Output = SHA-1( input buffer )
  74 *
  75 * \param input    buffer holding the  data
  76 * \param ilen     length of the input data
  77 * \param output   SHA-1 checksum result
  78 */
  79void sha1_csum( unsigned char *input, int ilen,
  80                unsigned char output[20] );
  81
  82/**
  83 * \brief          Output = SHA-1( input buffer ), with watchdog triggering
  84 *
  85 * \param input    buffer holding the  data
  86 * \param ilen     length of the input data
  87 * \param output   SHA-1 checksum result
  88 * \param chunk_sz watchdog triggering period (in bytes of input processed)
  89 */
  90void sha1_csum_wd (unsigned char *input, int ilen,
  91                unsigned char output[20], unsigned int chunk_sz);
  92
  93/**
  94 * \brief          Output = SHA-1( file contents )
  95 *
  96 * \param path     input file name
  97 * \param output   SHA-1 checksum result
  98 * \return         0 if successful, or 1 if fopen failed
  99 */
 100int sha1_file( char *path, unsigned char output[20] );
 101
 102/**
 103 * \brief          Output = HMAC-SHA-1( input buffer, hmac key )
 104 *
 105 * \param key      HMAC secret key
 106 * \param keylen   length of the HMAC key
 107 * \param input    buffer holding the  data
 108 * \param ilen     length of the input data
 109 * \param output   HMAC-SHA-1 result
 110 */
 111void sha1_hmac( unsigned char *key, int keylen,
 112                unsigned char *input, int ilen,
 113                unsigned char output[20] );
 114
 115/**
 116 * \brief          Checkup routine
 117 *
 118 * \return         0 if successful, or 1 if the test failed
 119 */
 120int sha1_self_test( void );
 121
 122#ifdef __cplusplus
 123}
 124#endif
 125
 126#endif /* sha1.h */
 127