Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

md.c File Reference

md.c File Reference

Generic message digest wrapper for mbed TLS. More...

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.
void md_init (md_context_t *ctx)
 Initialize a md_context (as NONE)
void md_free (md_context_t *ctx)
 Free and clear the message-specific context of ctx.
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 )

Detailed Description

Generic message digest wrapper for mbed TLS.

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

Copyright (C) 2006-2014, ARM Limited, All Rights Reserved

This file is part of mbed TLS (https://tls.mbed.org)

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_infomessage digest info
inputbuffer holding the data
ilenlength of the input data
outputGeneric message digest checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 245 of file md.c.

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

Output = message_digest( file contents )

Parameters:
md_infomessage digest info
pathinput file name
outputgeneric 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 256 of file md.c.

int md_finish ( md_context_t ctx,
unsigned char *  output 
)

Generic message digest final digest.

Parameters:
ctxGeneric message digest context
outputGeneric message digest checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 235 of file md.c.

void md_free ( md_context_t ctx )

Free and clear the message-specific context of ctx.

Freeing ctx itself remains the responsibility of the caller.

Definition at line 178 of file md.c.

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:
ctxFree the message-specific context
Returns:
0

Definition at line 207 of file md.c.

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_infomessage digest info
keyHMAC secret key
keylenlength of the HMAC key
inputbuffer holding the data
ilenlength of the input data
outputGeneric HMAC-result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 319 of file md.c.

int md_hmac_finish ( md_context_t ctx,
unsigned char *  output 
)

Generic HMAC final digest.

Parameters:
ctxHMAC context
outputGeneric HMAC checksum result
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 299 of file md.c.

int md_hmac_reset ( md_context_t ctx )

Generic HMAC context reset.

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

Definition at line 309 of file md.c.

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

Generic HMAC context setup.

Parameters:
ctxHMAC context to be initialized
keyHMAC secret key
keylenlength of the HMAC key
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 279 of file md.c.

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

Generic HMAC process buffer.

Parameters:
ctxHMAC context
inputbuffer holding the data
ilenlength of the input data
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 289 of file md.c.

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_nameName of the digest to search for.
Returns:
The message digest information associated with md_name or NULL if not found.

Definition at line 91 of file md.c.

const md_info_t* md_info_from_type ( md_type_t  md_type )

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

Parameters:
md_typetype of digest to search for.
Returns:
The message digest information associated with md_type or NULL if not found.

Definition at line 132 of file md.c.

void md_init ( md_context_t ctx )

Initialize a md_context (as NONE)

Definition at line 173 of file md.c.

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.

Note:
Currently also clears structure. In future versions you will be required to call md_init() on the structure first.
Parameters:
ctxcontext 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_infomessage 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 189 of file md.c.

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 86 of file md.c.

int md_starts ( md_context_t ctx )

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

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

Definition at line 215 of file md.c.

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

Generic message digest process buffer.

Parameters:
ctxGeneric message digest context
inputbuffer holding the datal
ilenlength of the input data
Returns:
0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails.

Definition at line 225 of file md.c.