SHA-224 and SHA-256 cryptographic hash function. More...
#include "config.h"
#include <string.h>
#include <inttypes.h>
Go to the source code of this file.
Data Structures | |
struct | sha256_context |
SHA-256 context structure. More... | |
Defines | |
#define | POLARSSL_ERR_SHA256_FILE_IO_ERROR -0x0078 |
Read/write error in file. | |
Functions | |
void | sha256_starts (sha256_context *ctx, int is224) |
SHA-256 context setup. | |
void | sha256_update (sha256_context *ctx, const unsigned char *input, size_t ilen) |
SHA-256 process buffer. | |
void | sha256_finish (sha256_context *ctx, unsigned char output[32]) |
SHA-256 final digest. | |
void | sha256_process (sha256_context *ctx, const unsigned char data[64]) |
void | sha256 (const unsigned char *input, size_t ilen, unsigned char output[32], int is224) |
Output = SHA-256( input buffer ). | |
int | sha256_file (const char *path, unsigned char output[32], int is224) |
Output = SHA-256( file contents ). | |
void | sha256_hmac_starts (sha256_context *ctx, const unsigned char *key, size_t keylen, int is224) |
SHA-256 HMAC context setup. | |
void | sha256_hmac_update (sha256_context *ctx, const unsigned char *input, size_t ilen) |
SHA-256 HMAC process buffer. | |
void | sha256_hmac_finish (sha256_context *ctx, unsigned char output[32]) |
SHA-256 HMAC final digest. | |
void | sha256_hmac_reset (sha256_context *ctx) |
SHA-256 HMAC context reset. | |
void | sha256_hmac (const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[32], int is224) |
Output = HMAC-SHA-256( hmac key, input buffer ). | |
int | sha256_self_test (int verbose) |
Checkup routine. |
SHA-224 and SHA-256 cryptographic hash function.
Copyright (C) 2006-2013, 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.
Definition in file sha256.h.
#define POLARSSL_ERR_SHA256_FILE_IO_ERROR -0x0078 |
Read/write error in file.
Definition at line 41 of file sha256.h.
Referenced by polarssl_strerror(), and sha256_file().
void sha256 | ( | const unsigned char * | input, | |
size_t | ilen, | |||
unsigned char | output[32], | |||
int | is224 | |||
) |
Output = SHA-256( input buffer ).
input | buffer holding the data | |
ilen | length of the input data | |
output | SHA-224/256 checksum result | |
is224 | 0 = use SHA256, 1 = use SHA224 |
Definition at line 320 of file sha256.c.
References sha256_finish(), sha256_starts(), and sha256_update().
Referenced by entropy_func(), entropy_update(), sha224_wrap(), sha256_hmac_starts(), sha256_wrap(), ssl_calc_finished_tls_sha256(), ssl_calc_verify_tls_sha256(), test_suite_sha224(), and test_suite_sha256().
int sha256_file | ( | const char * | path, | |
unsigned char | output[32], | |||
int | is224 | |||
) |
Output = SHA-256( file contents ).
path | input file name | |
output | SHA-224/256 checksum result | |
is224 | 0 = use SHA256, 1 = use SHA224 |
Definition at line 336 of file sha256.c.
References POLARSSL_ERR_SHA256_FILE_IO_ERROR, sha256_finish(), sha256_starts(), and sha256_update().
Referenced by sha224_file_wrap(), sha256_file_wrap(), test_suite_sha224_file(), and test_suite_sha256_file().
void sha256_finish | ( | sha256_context * | ctx, | |
unsigned char | output[32] | |||
) |
SHA-256 final digest.
ctx | SHA-256 context | |
output | SHA-224/256 checksum result |
Definition at line 284 of file sha256.c.
References sha256_context::is224, PUT_UINT32_BE, sha256_padding, sha256_update(), sha256_context::state, and sha256_context::total.
Referenced by entropy_func(), sha224_finish_wrap(), sha256(), sha256_file(), sha256_finish_wrap(), sha256_hmac_finish(), sha256_self_test(), ssl_calc_finished_tls_sha256(), and ssl_calc_verify_tls_sha256().
void sha256_hmac | ( | const unsigned char * | key, | |
size_t | keylen, | |||
const unsigned char * | input, | |||
size_t | ilen, | |||
unsigned char | output[32], | |||
int | is224 | |||
) |
Output = HMAC-SHA-256( hmac key, input buffer ).
key | HMAC secret key | |
keylen | length of the HMAC key | |
input | buffer holding the data | |
ilen | length of the input data | |
output | HMAC-SHA-224/256 result | |
is224 | 0 = use SHA256, 1 = use SHA224 |
Definition at line 437 of file sha256.c.
References sha256_hmac_finish(), sha256_hmac_starts(), and sha256_hmac_update().
Referenced by sha224_hmac_wrap(), sha256_hmac_wrap(), ssl_parse_ticket(), ssl_write_ticket(), test_suite_sha224_hmac(), test_suite_sha256_hmac(), and tls_prf_sha256().
void sha256_hmac_finish | ( | sha256_context * | ctx, | |
unsigned char | output[32] | |||
) |
SHA-256 HMAC final digest.
ctx | HMAC context | |
output | SHA-224/256 HMAC checksum result |
Definition at line 408 of file sha256.c.
References sha256_context::is224, sha256_context::opad, sha256_finish(), sha256_starts(), and sha256_update().
Referenced by sha224_hmac_finish_wrap(), sha256_hmac(), sha256_hmac_finish_wrap(), and sha256_self_test().
void sha256_hmac_reset | ( | sha256_context * | ctx | ) |
SHA-256 HMAC context reset.
ctx | HMAC context to be reset |
Definition at line 428 of file sha256.c.
References sha256_context::ipad, sha256_context::is224, sha256_starts(), and sha256_update().
Referenced by sha224_hmac_reset_wrap(), and sha256_hmac_reset_wrap().
void sha256_hmac_starts | ( | sha256_context * | ctx, | |
const unsigned char * | key, | |||
size_t | keylen, | |||
int | is224 | |||
) |
SHA-256 HMAC context setup.
ctx | HMAC context to be initialized | |
key | HMAC secret key | |
keylen | length of the HMAC key | |
is224 | 0 = use SHA256, 1 = use SHA224 |
Definition at line 369 of file sha256.c.
References sha256_context::ipad, sha256_context::opad, sha256(), sha256_starts(), and sha256_update().
Referenced by sha224_hmac_starts_wrap(), sha256_hmac(), sha256_hmac_starts_wrap(), and sha256_self_test().
void sha256_hmac_update | ( | sha256_context * | ctx, | |
const unsigned char * | input, | |||
size_t | ilen | |||
) |
SHA-256 HMAC process buffer.
ctx | HMAC context | |
input | buffer holding the data | |
ilen | length of the input data |
Definition at line 400 of file sha256.c.
References sha256_update().
Referenced by sha224_hmac_update_wrap(), sha256_hmac(), sha256_hmac_update_wrap(), and sha256_self_test().
void sha256_process | ( | sha256_context * | ctx, | |
const unsigned char | data[64] | |||
) |
Definition at line 102 of file sha256.c.
References A, F, GET_UINT32_BE, P, R, and sha256_context::state.
Referenced by sha224_process_wrap(), sha256_process_wrap(), and sha256_update().
int sha256_self_test | ( | int | verbose | ) |
Checkup routine.
Definition at line 616 of file sha256.c.
References sha256_finish(), sha256_hmac_finish(), sha256_hmac_starts(), sha256_hmac_test_buf, sha256_hmac_test_buflen, sha256_hmac_test_key, sha256_hmac_test_keylen, sha256_hmac_test_sum, sha256_hmac_update(), sha256_starts(), sha256_test_buf, sha256_test_buflen, sha256_test_sum, and sha256_update().
Referenced by test_suite_sha256_selftest().
void sha256_starts | ( | sha256_context * | ctx, | |
int | is224 | |||
) |
SHA-256 context setup.
ctx | context to be initialized | |
is224 | 0 = use SHA256, 1 = use SHA224 |
Definition at line 69 of file sha256.c.
References sha256_context::is224, sha256_context::state, and sha256_context::total.
Referenced by entropy_func(), entropy_init(), sha224_starts_wrap(), sha256(), sha256_file(), sha256_hmac_finish(), sha256_hmac_reset(), sha256_hmac_starts(), sha256_self_test(), sha256_starts_wrap(), and ssl_handshake_init().
void sha256_update | ( | sha256_context * | ctx, | |
const unsigned char * | input, | |||
size_t | ilen | |||
) |
SHA-256 process buffer.
ctx | SHA-256 context | |
input | buffer holding the data | |
ilen | length of the input data |
Definition at line 236 of file sha256.c.
References sha256_context::buffer, sha256_process(), and sha256_context::total.
Referenced by entropy_func(), entropy_update(), sha224_update_wrap(), sha256(), sha256_file(), sha256_finish(), sha256_hmac_finish(), sha256_hmac_reset(), sha256_hmac_starts(), sha256_hmac_update(), sha256_self_test(), sha256_update_wrap(), ssl_update_checksum_sha256(), and ssl_update_checksum_start().