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