Documentation

Documentation

Includes

string.h

#include <string.h>
#include 

Macros

Marco POLARSSL_SHA2_H

#define POLARSSL_SHA2_H


      

Marco POLARSSL_SHA2_C

#define POLARSSL_SHA2_C 1


      

Marco POLARSSL_ERR_SHA2_FILE_IO_ERROR

#define POLARSSL_ERR_SHA2_FILE_IO_ERROR -120 /**< Read/write error in file. */
//#define POLARSSL_SELF_TEST	1

Marco SHA256TYPE

#define SHA256TYPE 0


      

Marco SHA244TYPE

#define SHA244TYPE 1

      

Functions

Func sha2_starts

void sha2_starts( sha2_context *ctx, int is224 );
/**
* @brief SHA-256 context setup
*
* @param ctx context to be initialized
* @param is224 0 = use SHA256, 1 = use SHA224
*/

Func sha2_update

void sha2_update( sha2_context *ctx, const unsigned char *input, size_t ilen );
/**
* @brief SHA-256 process buffer
*
* @param ctx SHA-256 context
* @param input buffer holding the data
* @param ilen length of the input data
*/

Func sha2_finish

void sha2_finish( sha2_context *ctx, unsigned char output[32] );
/**
* @brief SHA-256 final digest
*
* @param ctx SHA-256 context
* @param output SHA-224/256 checksum result
*/

Func sha2

void sha2( const unsigned char *input, size_t ilen,
          unsigned char output[32], int is224 );
/**
* @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
*/

Func sha2_file

int sha2_file( const char *path, unsigned char output[32], int is224 );
/**
* @brief Output = SHA-256( file contents )
*
* @param path input file name
* @param output SHA-224/256 checksum result
* @param is224 0 = use SHA256, 1 = use SHA224
*
* @return 0 if successful, or POLARSSL_ERR_SHA2_FILE_IO_ERROR
*/

Func sha2_hmac_starts

void sha2_hmac_starts( sha2_context *ctx, const unsigned char *key, size_t keylen,
                      int is224 );
/**
* @brief SHA-256 HMAC context setup
*
* @param ctx HMAC context to be initialized
* @param key HMAC secret key
* @param keylen length of the HMAC key
* @param is224 0 = use SHA256, 1 = use SHA224
*/

Func sha2_hmac_update

void sha2_hmac_update( sha2_context *ctx, const unsigned char *input, size_t ilen );
/**
* @brief SHA-256 HMAC process buffer
*
* @param ctx HMAC context
* @param input buffer holding the data
* @param ilen length of the input data
*/

Func sha2_hmac_finish

void sha2_hmac_finish( sha2_context *ctx, unsigned char output[32] );
/**
* @brief SHA-256 HMAC final digest
*
* @param ctx HMAC context
* @param output SHA-224/256 HMAC checksum result
*/

Func sha2_hmac_reset

void sha2_hmac_reset( sha2_context *ctx );
/**
* @brief SHA-256 HMAC context reset
*
* @param ctx HMAC context to be reset
*/

Func sha2_hmac

void sha2_hmac( const unsigned char *key, size_t keylen,
               const unsigned char *input, size_t ilen,
               unsigned char output[32], int is224 );
/**
* @brief Output = HMAC-SHA-256( hmac key, input buffer )
*
* @param key HMAC secret key
* @param keylen length of the HMAC key
* @param input buffer holding the data
* @param ilen length of the input data
* @param output HMAC-SHA-224/256 result
* @param is224 0 = use SHA256, 1 = use SHA224
*/

Func sha2_self_test

int sha2_self_test( int verbose );
/**
* @brief Checkup routine
*
* @return 0 if successful, or 1 if the test failed
*/

Vars

Consts

Types

Typedefs

Typedef sha2_context;

typedef struct
{
   unsigned long total[2]; /*!< number of bytes processed */
   unsigned long 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;
/**
* @brief SHA-256 context structure
*/