Edit

thodg/cgminer/sha2.h

Branch :

  • Show log

    Commit

  • Author : Kano
    Date : 2012-01-30 16:37:09
    Hash : 0c272370
    Message : Ensure numbers are 32bits in sha2.c

  • sha2.h
  • /**
     * \file sha2.h
     *
     *  Copyright (C) 2011, Con Kolivas <kernel@kolivas.org>
     *  Copyright (C) 2006-2010, Brainspark B.V.
     *
     *  This file is part of PolarSSL (http://www.polarssl.org)
     *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
     *
     *  All rights reserved.
     *
     *  This program is free software; you can redistribute it and/or modify
     *  it under the terms of the GNU General Public License as published by
     *  the Free Software Foundation; either version 2 of the License, or
     *  (at your option) any later version.
     *
     *  This program is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *  GNU General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License along
     *  with this program; if not, write to the Free Software Foundation, Inc.,
     *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     */
    #ifndef POLARSSL_SHA2_H
    #define POLARSSL_SHA2_H
    
    #include <stdint.h>
    
    /**
     * \brief          SHA-256 context structure
     */
    typedef struct
    {
        uint32_t total[2];     /*!< number of bytes processed  */
        uint32_t state[8];     /*!< intermediate digest state  */
        unsigned char buffer[64];   /*!< data block being processed */
    
        unsigned char ipad[64];     /*!< HMAC: inner padding        */
        unsigned char opad[64];     /*!< HMAC: outer padding        */
        int is224;                  /*!< 0 => SHA-256, else SHA-224 */
    }
    sha2_context;
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /**
     * \brief          SHA-256 context setup
     *
     * \param ctx      context to be initialized
     * \param is224    0 = use SHA256, 1 = use SHA224
     */
    void sha2_starts( sha2_context *ctx, int is224 );
    
    /**
     * \brief          SHA-256 process buffer
     *
     * \param ctx      SHA-256 context
     * \param input    buffer holding the  data
     * \param ilen     length of the input data
     */
    void sha2_update( sha2_context *ctx, const unsigned char *input, int ilen );
    
    /**
     * \brief          SHA-256 final digest
     *
     * \param ctx      SHA-256 context
     * \param output   SHA-224/256 checksum result
     */
    void sha2_finish( sha2_context *ctx, unsigned char output[32] );
    
    /**
     * \brief          Output = SHA-256( input buffer )
     *
     * \param input    buffer holding the  data
     * \param ilen     length of the input data
     * \param output   SHA-224/256 checksum result
     * \param is224    0 = use SHA256, 1 = use SHA224
     */
    void sha2( const unsigned char *input, int ilen,
               unsigned char output[32], int is224 );
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* sha2.h */