uboot/include/u-boot/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 * SPDX-License-Identifier:     LGPL-2.1
   9 */
  10/*
  11 *  The SHA-1 standard was published by NIST in 1993.
  12 *
  13 *  http://www.itl.nist.gov/fipspubs/fip180-1.htm
  14 */
  15#ifndef _SHA1_H
  16#define _SHA1_H
  17
  18#ifdef __cplusplus
  19extern "C" {
  20#endif
  21
  22#define SHA1_SUM_POS    -0x20
  23#define SHA1_SUM_LEN    20
  24#define SHA1_DER_LEN    15
  25
  26extern const uint8_t sha1_der_prefix[];
  27
  28/**
  29 * \brief          SHA-1 context structure
  30 */
  31typedef struct
  32{
  33    unsigned long total[2];     /*!< number of bytes processed  */
  34    unsigned long state[5];     /*!< intermediate digest state  */
  35    unsigned char buffer[64];   /*!< data block being processed */
  36}
  37sha1_context;
  38
  39/**
  40 * \brief          SHA-1 context setup
  41 *
  42 * \param ctx      SHA-1 context to be initialized
  43 */
  44void sha1_starts( sha1_context *ctx );
  45
  46/**
  47 * \brief          SHA-1 process buffer
  48 *
  49 * \param ctx      SHA-1 context
  50 * \param input    buffer holding the  data
  51 * \param ilen     length of the input data
  52 */
  53void sha1_update(sha1_context *ctx, const unsigned char *input,
  54                 unsigned int ilen);
  55
  56/**
  57 * \brief          SHA-1 final digest
  58 *
  59 * \param ctx      SHA-1 context
  60 * \param output   SHA-1 checksum result
  61 */
  62void sha1_finish( sha1_context *ctx, unsigned char output[20] );
  63
  64/**
  65 * \brief          Output = SHA-1( input buffer )
  66 *
  67 * \param input    buffer holding the  data
  68 * \param ilen     length of the input data
  69 * \param output   SHA-1 checksum result
  70 */
  71void sha1_csum(const unsigned char *input, unsigned int ilen,
  72                unsigned char *output);
  73
  74/**
  75 * \brief          Output = SHA-1( input buffer ), with watchdog triggering
  76 *
  77 * \param input    buffer holding the  data
  78 * \param ilen     length of the input data
  79 * \param output   SHA-1 checksum result
  80 * \param chunk_sz watchdog triggering period (in bytes of input processed)
  81 */
  82void sha1_csum_wd(const unsigned char *input, unsigned int ilen,
  83                unsigned char *output, unsigned int chunk_sz);
  84
  85/**
  86 * \brief          Output = HMAC-SHA-1( input buffer, hmac key )
  87 *
  88 * \param key      HMAC secret key
  89 * \param keylen   length of the HMAC key
  90 * \param input    buffer holding the  data
  91 * \param ilen     length of the input data
  92 * \param output   HMAC-SHA-1 result
  93 */
  94void sha1_hmac(const unsigned char *key, int keylen,
  95                const unsigned char *input, unsigned int ilen,
  96                unsigned char *output);
  97
  98/**
  99 * \brief          Checkup routine
 100 *
 101 * \return         0 if successful, or 1 if the test failed
 102 */
 103int sha1_self_test( void );
 104
 105#ifdef __cplusplus
 106}
 107#endif
 108
 109#endif /* sha1.h */
 110