SHA-384 and SHA-512 cryptographic hash function. More...
#include "config.h"
#include <string.h>
#include <inttypes.h>
Go to the source code of this file.
Data Structures | |
struct | sha512_context |
SHA-512 context structure. More... | |
Defines | |
#define | UL64(x) x##ULL |
#define | POLARSSL_ERR_SHA512_FILE_IO_ERROR -0x007A |
Read/write error in file. | |
Functions | |
void | sha512_starts (sha512_context *ctx, int is384) |
SHA-512 context setup. | |
void | sha512_update (sha512_context *ctx, const unsigned char *input, size_t ilen) |
SHA-512 process buffer. | |
void | sha512_finish (sha512_context *ctx, unsigned char output[64]) |
SHA-512 final digest. | |
void | sha512 (const unsigned char *input, size_t ilen, unsigned char output[64], int is384) |
Output = SHA-512( input buffer ). | |
int | sha512_file (const char *path, unsigned char output[64], int is384) |
Output = SHA-512( file contents ). | |
void | sha512_hmac_starts (sha512_context *ctx, const unsigned char *key, size_t keylen, int is384) |
SHA-512 HMAC context setup. | |
void | sha512_hmac_update (sha512_context *ctx, const unsigned char *input, size_t ilen) |
SHA-512 HMAC process buffer. | |
void | sha512_hmac_finish (sha512_context *ctx, unsigned char output[64]) |
SHA-512 HMAC final digest. | |
void | sha512_hmac_reset (sha512_context *ctx) |
SHA-512 HMAC context reset. | |
void | sha512_hmac (const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[64], int is384) |
Output = HMAC-SHA-512( hmac key, input buffer ). | |
int | sha512_self_test (int verbose) |
Checkup routine. | |
void | sha512_process (sha512_context *ctx, const unsigned char data[128]) |
SHA-384 and SHA-512 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 sha512.h.
#define POLARSSL_ERR_SHA512_FILE_IO_ERROR -0x007A |
Read/write error in file.
Definition at line 42 of file sha512.h.
Referenced by polarssl_strerror(), and sha512_file().
#define UL64 | ( | x | ) | x##ULL |
Definition at line 39 of file sha512.h.
Referenced by sha512_starts().
void sha512 | ( | const unsigned char * | input, | |
size_t | ilen, | |||
unsigned char | output[64], | |||
int | is384 | |||
) |
Output = SHA-512( input buffer ).
input | buffer holding the data | |
ilen | length of the input data | |
output | SHA-384/512 checksum result | |
is384 | 0 = use SHA512, 1 = use SHA384 |
Definition at line 318 of file sha512.c.
References sha512_finish(), sha512_starts(), and sha512_update().
Referenced by entropy_func(), entropy_update(), sha384_wrap(), sha512_hmac_starts(), sha512_wrap(), ssl_calc_finished_tls_sha384(), ssl_calc_verify_tls_sha384(), test_suite_sha384(), and test_suite_sha512().
int sha512_file | ( | const char * | path, | |
unsigned char | output[64], | |||
int | is384 | |||
) |
Output = SHA-512( file contents ).
path | input file name | |
output | SHA-384/512 checksum result | |
is384 | 0 = use SHA512, 1 = use SHA384 |
Definition at line 334 of file sha512.c.
References POLARSSL_ERR_SHA512_FILE_IO_ERROR, sha512_finish(), sha512_starts(), and sha512_update().
Referenced by sha384_file_wrap(), sha512_file_wrap(), test_suite_sha384_file(), and test_suite_sha512_file().
void sha512_finish | ( | sha512_context * | ctx, | |
unsigned char | output[64] | |||
) |
SHA-512 final digest.
ctx | SHA-512 context | |
output | SHA-384/512 checksum result |
Definition at line 280 of file sha512.c.
References sha512_context::is384, PUT_UINT64_BE, sha512_padding, sha512_update(), sha512_context::state, and sha512_context::total.
Referenced by entropy_func(), sha384_finish_wrap(), sha512(), sha512_file(), sha512_finish_wrap(), sha512_hmac_finish(), sha512_self_test(), ssl_calc_finished_tls_sha384(), and ssl_calc_verify_tls_sha384().
void sha512_hmac | ( | const unsigned char * | key, | |
size_t | keylen, | |||
const unsigned char * | input, | |||
size_t | ilen, | |||
unsigned char | output[64], | |||
int | is384 | |||
) |
Output = HMAC-SHA-512( 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-384/512 result | |
is384 | 0 = use SHA512, 1 = use SHA384 |
Definition at line 436 of file sha512.c.
References sha512_hmac_finish(), sha512_hmac_starts(), and sha512_hmac_update().
Referenced by sha384_hmac_wrap(), sha512_hmac_wrap(), test_suite_sha384_hmac(), test_suite_sha512_hmac(), and tls_prf_sha384().
void sha512_hmac_finish | ( | sha512_context * | ctx, | |
unsigned char | output[64] | |||
) |
SHA-512 HMAC final digest.
ctx | HMAC context | |
output | SHA-384/512 HMAC checksum result |
Definition at line 407 of file sha512.c.
References sha512_context::is384, sha512_context::opad, sha512_finish(), sha512_starts(), and sha512_update().
Referenced by sha384_hmac_finish_wrap(), sha512_hmac(), sha512_hmac_finish_wrap(), and sha512_self_test().
void sha512_hmac_reset | ( | sha512_context * | ctx | ) |
SHA-512 HMAC context reset.
ctx | HMAC context to be reset |
Definition at line 427 of file sha512.c.
References sha512_context::ipad, sha512_context::is384, sha512_starts(), and sha512_update().
Referenced by sha384_hmac_reset_wrap(), and sha512_hmac_reset_wrap().
void sha512_hmac_starts | ( | sha512_context * | ctx, | |
const unsigned char * | key, | |||
size_t | keylen, | |||
int | is384 | |||
) |
SHA-512 HMAC context setup.
ctx | HMAC context to be initialized | |
is384 | 0 = use SHA512, 1 = use SHA384 | |
key | HMAC secret key | |
keylen | length of the HMAC key |
Definition at line 367 of file sha512.c.
References sha512_context::ipad, sha512_context::opad, sha512(), sha512_starts(), and sha512_update().
Referenced by sha384_hmac_starts_wrap(), sha512_hmac(), sha512_hmac_starts_wrap(), and sha512_self_test().
void sha512_hmac_update | ( | sha512_context * | ctx, | |
const unsigned char * | input, | |||
size_t | ilen | |||
) |
SHA-512 HMAC process buffer.
ctx | HMAC context | |
input | buffer holding the data | |
ilen | length of the input data |
Definition at line 398 of file sha512.c.
References sha512_update().
Referenced by sha384_hmac_update_wrap(), sha512_hmac(), sha512_hmac_update_wrap(), and sha512_self_test().
void sha512_process | ( | sha512_context * | ctx, | |
const unsigned char | data[128] | |||
) |
Definition at line 157 of file sha512.c.
References A, F, GET_UINT64_BE, K, P, S0, S1, and sha512_context::state.
Referenced by sha384_process_wrap(), sha512_process_wrap(), and sha512_update().
int sha512_self_test | ( | int | verbose | ) |
Checkup routine.
Definition at line 671 of file sha512.c.
References sha512_finish(), sha512_hmac_finish(), sha512_hmac_starts(), sha512_hmac_test_buf, sha512_hmac_test_buflen, sha512_hmac_test_key, sha512_hmac_test_keylen, sha512_hmac_test_sum, sha512_hmac_update(), sha512_starts(), sha512_test_buf, sha512_test_buflen, sha512_test_sum, and sha512_update().
Referenced by test_suite_sha512_selftest().
void sha512_starts | ( | sha512_context * | ctx, | |
int | is384 | |||
) |
SHA-512 context setup.
ctx | context to be initialized | |
is384 | 0 = use SHA512, 1 = use SHA384 |
Definition at line 124 of file sha512.c.
References sha512_context::is384, sha512_context::state, sha512_context::total, and UL64.
Referenced by entropy_func(), entropy_init(), sha384_starts_wrap(), sha512(), sha512_file(), sha512_hmac_finish(), sha512_hmac_reset(), sha512_hmac_starts(), sha512_self_test(), sha512_starts_wrap(), and ssl_handshake_init().
void sha512_update | ( | sha512_context * | ctx, | |
const unsigned char * | input, | |||
size_t | ilen | |||
) |
SHA-512 process buffer.
ctx | SHA-512 context | |
input | buffer holding the data | |
ilen | length of the input data |
Definition at line 229 of file sha512.c.
References sha512_context::buffer, sha512_process(), and sha512_context::total.
Referenced by entropy_func(), entropy_update(), sha384_update_wrap(), sha512(), sha512_file(), sha512_finish(), sha512_hmac_finish(), sha512_hmac_reset(), sha512_hmac_starts(), sha512_hmac_update(), sha512_self_test(), sha512_update_wrap(), ssl_update_checksum_sha384(), and ssl_update_checksum_start().