md.c File Reference

Generic message digest wrapper for PolarSSL. More...

#include "polarssl/config.h"
#include "polarssl/md.h"
#include "polarssl/md_wrap.h"
#include <stdlib.h>
Include dependency graph for md.c:

Go to the source code of this file.

Functions

const int * md_list (void)
 Returns the list of digests supported by the generic digest module.
const md_info_tmd_info_from_string (const char *md_name)
 Returns the message digest information associated with the given digest name.
const md_info_tmd_info_from_type (md_type_t md_type)
 Returns the message digest information associated with the given digest type.
int md_init_ctx (md_context_t *ctx, const md_info_t *md_info)
 Initialises and fills the message digest context structure with the appropriate values.
int md_free_ctx (md_context_t *ctx)
 Free the message-specific context of ctx.
int md_starts (md_context_t *ctx)
 Set-up the given context for a new message digest.
int md_update (md_context_t *ctx, const unsigned char *input, size_t ilen)
 Generic message digest process buffer.
int md_finish (md_context_t *ctx, unsigned char *output)
 Generic message digest final digest.
int md (const md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output)
 Output = message_digest( input buffer ).
int md_file (const md_info_t *md_info, const char *path, unsigned char *output)
 Output = message_digest( file contents ).
int md_hmac_starts (md_context_t *ctx, const unsigned char *key, size_t keylen)
 Generic HMAC context setup.
int md_hmac_update (md_context_t *ctx, const unsigned char *input, size_t ilen)
 Generic HMAC process buffer.
int md_hmac_finish (md_context_t *ctx, unsigned char *output)
 Generic HMAC final digest.
int md_hmac_reset (md_context_t *ctx)
 Generic HMAC context reset.
int md_hmac (const md_info_t *md_info, const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char *output)
 Output = Generic_HMAC( hmac key, input buffer ).
int md_process (md_context_t *ctx, const unsigned char *data)

Variables

static const int supported_digests []

Detailed Description

Generic message digest wrapper for PolarSSL.

Author:
Adriaan de Jong <dejong@fox-it.com>

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.

Definition in file md.c.


Function Documentation

int md ( const md_info_t md_info,
const unsigned char *  input,
size_t  ilen,
unsigned char *  output 
)

Output = message_digest( input buffer ).

Parameters:
md_info message digest info
input buffer holding the data
ilen length of the input data
output Generic message digest checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 212 of file md.c.

References md_info_t::digest_func, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by pkcs12_derivation(), rsa_rsaes_oaep_decrypt(), rsa_rsaes_oaep_encrypt(), test_suite_md_hex(), test_suite_md_text(), test_suite_pk_rsa_verify_test_vec(), test_suite_pkcs1_rsassa_pss_sign(), test_suite_pkcs1_rsassa_pss_verify(), test_suite_rsa_pkcs1_sign(), test_suite_rsa_pkcs1_verify(), x509_crt_verify_child(), x509_crt_verify_top(), x509_crt_verifycrl(), x509write_crt_der(), and x509write_csr_der().

int md_file ( const md_info_t md_info,
const char *  path,
unsigned char *  output 
)

Output = message_digest( file contents ).

Parameters:
md_info message digest info
path input file name
output generic message digest checksum result
Returns:
0 if successful, POLARSSL_ERR_MD_FILE_OPEN_FAILED if fopen failed, POLARSSL_ERR_MD_FILE_READ_FAILED if fread failed, POLARSSL_ERR_MD_BAD_INPUT_DATA if md_info was NULL.

Definition at line 223 of file md.c.

References md_info_t::file_func, POLARSSL_ERR_MD_BAD_INPUT_DATA, POLARSSL_ERR_MD_FEATURE_UNAVAILABLE, and POLARSSL_ERR_MD_FILE_IO_ERROR.

Referenced by test_suite_md_file().

int md_finish ( md_context_t ctx,
unsigned char *  output 
)

Generic message digest final digest.

Parameters:
ctx Generic message digest context
output Generic message digest checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 202 of file md.c.

References md_info_t::finish_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by mgf_mask(), pkcs12_derivation(), rsa_rsassa_pss_sign(), rsa_rsassa_pss_verify(), ssl_mac(), ssl_parse_server_key_exchange(), ssl_write_server_key_exchange(), test_suite_md_hex_multi(), and test_suite_md_text_multi().

int md_free_ctx ( md_context_t ctx  ) 

Free the message-specific context of ctx.

Freeing ctx itself remains the responsibility of the caller.

Parameters:
ctx Free the message-specific context
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 171 of file md.c.

References md_info_t::ctx_free_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by pkcs12_derivation(), pkcs5_pbes2(), pkcs5_self_test(), rsa_rsaes_oaep_decrypt(), rsa_rsaes_oaep_encrypt(), rsa_rsassa_pss_sign(), rsa_rsassa_pss_verify(), ssl_parse_server_key_exchange(), ssl_transform_free(), ssl_write_server_key_exchange(), test_suite_md_hex_multi(), test_suite_md_hmac_multi(), test_suite_md_text_multi(), and test_suite_pbkdf2_hmac().

int md_hmac ( const md_info_t md_info,
const unsigned char *  key,
size_t  keylen,
const unsigned char *  input,
size_t  ilen,
unsigned char *  output 
)

Output = Generic_HMAC( hmac key, input buffer ).

Parameters:
md_info message digest info
key HMAC secret key
keylen length of the HMAC key
input buffer holding the data
ilen length of the input data
output Generic HMAC-result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 286 of file md.c.

References md_info_t::hmac_func, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by test_suite_md_hmac().

int md_hmac_finish ( md_context_t ctx,
unsigned char *  output 
)

Generic HMAC final digest.

Parameters:
ctx HMAC context
output Generic HMAC checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 266 of file md.c.

References md_info_t::hmac_finish_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by pkcs5_pbkdf2_hmac(), ssl_decrypt_buf(), ssl_encrypt_buf(), and test_suite_md_hmac_multi().

int md_hmac_reset ( md_context_t ctx  ) 

Generic HMAC context reset.

Parameters:
ctx HMAC context to be reset
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 276 of file md.c.

References md_info_t::hmac_reset_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by ssl_decrypt_buf(), and ssl_encrypt_buf().

int md_hmac_starts ( md_context_t ctx,
const unsigned char *  key,
size_t  keylen 
)

Generic HMAC context setup.

Parameters:
ctx HMAC context to be initialized
key HMAC secret key
keylen length of the HMAC key
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 246 of file md.c.

References md_info_t::hmac_starts_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by pkcs5_pbkdf2_hmac(), ssl_derive_keys(), and test_suite_md_hmac_multi().

int md_hmac_update ( md_context_t ctx,
const unsigned char *  input,
size_t  ilen 
)

Generic HMAC process buffer.

Parameters:
ctx HMAC context
input buffer holding the data
ilen length of the input data
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 256 of file md.c.

References md_info_t::hmac_update_func, md_context_t::md_ctx, md_context_t::md_info, and POLARSSL_ERR_MD_BAD_INPUT_DATA.

Referenced by pkcs5_pbkdf2_hmac(), ssl_decrypt_buf(), ssl_encrypt_buf(), and test_suite_md_hmac_multi().

const md_info_t* md_info_from_string ( const char *  md_name  ) 

Returns the message digest information associated with the given digest name.

Parameters:
md_name Name of the digest to search for.
Returns:
The message digest information associated with md_name or NULL if not found.

Definition at line 80 of file md.c.

References md_info_from_type(), POLARSSL_MD_MD2, POLARSSL_MD_MD4, POLARSSL_MD_MD5, POLARSSL_MD_SHA1, POLARSSL_MD_SHA224, POLARSSL_MD_SHA256, POLARSSL_MD_SHA384, and POLARSSL_MD_SHA512.

Referenced by test_suite_md_file(), test_suite_md_hex(), test_suite_md_hex_multi(), test_suite_md_hmac(), test_suite_md_hmac_multi(), test_suite_md_text(), and test_suite_md_text_multi().

const md_info_t* md_info_from_type ( md_type_t  md_type  ) 
int md_init_ctx ( md_context_t ctx,
const md_info_t md_info 
)

Initialises and fills the message digest context structure with the appropriate values.

Parameters:
ctx context to initialise. May not be NULL. The digest-specific context (ctx->md_ctx) must be NULL. It will be allocated, and must be freed using md_free_ctx() later.
md_info message digest to use.
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA on parameter failure, POLARSSL_ERR_MD_ALLOC_FAILED if allocation of the digest-specific context failed.

Definition at line 154 of file md.c.

References md_info_t::ctx_alloc_func, md_context_t::md_ctx, md_context_t::md_info, POLARSSL_ERR_MD_ALLOC_FAILED, POLARSSL_ERR_MD_BAD_INPUT_DATA, and md_info_t::starts_func.

Referenced by pkcs12_derivation(), pkcs5_pbes2(), pkcs5_self_test(), rsa_rsaes_oaep_decrypt(), rsa_rsaes_oaep_encrypt(), rsa_rsassa_pss_sign(), rsa_rsassa_pss_verify(), ssl_derive_keys(), ssl_parse_server_key_exchange(), ssl_write_server_key_exchange(), test_suite_md_hex_multi(), test_suite_md_hmac_multi(), test_suite_md_text_multi(), and test_suite_pbkdf2_hmac().

const int* md_list ( void   ) 

Returns the list of digests supported by the generic digest module.

Returns:
a statically allocated array of digests, the last entry is 0.

Definition at line 75 of file md.c.

References supported_digests.

int md_process ( md_context_t ctx,
const unsigned char *  data 
)
int md_starts ( md_context_t ctx  ) 

Set-up the given context for a new message digest.

Parameters:
ctx generic message digest context.
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 182 of file md.c.

References md_context_t::md_ctx, md_context_t::md_info, POLARSSL_ERR_MD_BAD_INPUT_DATA, and md_info_t::starts_func.

Referenced by mgf_mask(), pkcs12_derivation(), rsa_rsassa_pss_sign(), rsa_rsassa_pss_verify(), ssl_mac(), ssl_parse_server_key_exchange(), ssl_write_server_key_exchange(), test_suite_md_hex_multi(), and test_suite_md_text_multi().

int md_update ( md_context_t ctx,
const unsigned char *  input,
size_t  ilen 
)

Generic message digest process buffer.

Parameters:
ctx Generic message digest context
input buffer holding the datal
ilen length of the input data
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 192 of file md.c.

References md_context_t::md_ctx, md_context_t::md_info, POLARSSL_ERR_MD_BAD_INPUT_DATA, and md_info_t::update_func.

Referenced by mgf_mask(), pkcs12_derivation(), rsa_rsassa_pss_sign(), rsa_rsassa_pss_verify(), ssl_mac(), ssl_parse_server_key_exchange(), ssl_write_server_key_exchange(), test_suite_md_hex_multi(), and test_suite_md_text_multi().


Variable Documentation

const int supported_digests[] [static]
Initial value:

Definition at line 44 of file md.c.

Referenced by md_list().


Generated on 9 Apr 2014 for PolarSSL v1.3.2 by  doxygen 1.6.1