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

Committer:
dflet
Date:
Tue Sep 15 16:45:04 2015 +0000
Revision:
22:f9b5e0b80bf2
Parent:
0:50cedd586816
Removed some debug.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:50cedd586816 1 /**
dflet 0:50cedd586816 2 * \file ripemd160.h
dflet 0:50cedd586816 3 *
dflet 0:50cedd586816 4 * \brief RIPE MD-160 message digest
dflet 0:50cedd586816 5 *
dflet 0:50cedd586816 6 * Copyright (C) 2014-2014, ARM Limited, All Rights Reserved
dflet 0:50cedd586816 7 *
dflet 0:50cedd586816 8 * This file is part of mbed TLS (https://tls.mbed.org)
dflet 0:50cedd586816 9 *
dflet 0:50cedd586816 10 * This program is free software; you can redistribute it and/or modify
dflet 0:50cedd586816 11 * it under the terms of the GNU General Public License as published by
dflet 0:50cedd586816 12 * the Free Software Foundation; either version 2 of the License, or
dflet 0:50cedd586816 13 * (at your option) any later version.
dflet 0:50cedd586816 14 *
dflet 0:50cedd586816 15 * This program is distributed in the hope that it will be useful,
dflet 0:50cedd586816 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dflet 0:50cedd586816 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dflet 0:50cedd586816 18 * GNU General Public License for more details.
dflet 0:50cedd586816 19 *
dflet 0:50cedd586816 20 * You should have received a copy of the GNU General Public License along
dflet 0:50cedd586816 21 * with this program; if not, write to the Free Software Foundation, Inc.,
dflet 0:50cedd586816 22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
dflet 0:50cedd586816 23 */
dflet 0:50cedd586816 24 #ifndef POLARSSL_RIPEMD160_H
dflet 0:50cedd586816 25 #define POLARSSL_RIPEMD160_H
dflet 0:50cedd586816 26
dflet 0:50cedd586816 27 #if !defined(POLARSSL_CONFIG_FILE)
dflet 0:50cedd586816 28 #include "config.h"
dflet 0:50cedd586816 29 #else
dflet 0:50cedd586816 30 #include POLARSSL_CONFIG_FILE
dflet 0:50cedd586816 31 #endif
dflet 0:50cedd586816 32
dflet 0:50cedd586816 33 #include <stddef.h>
dflet 0:50cedd586816 34
dflet 0:50cedd586816 35 #if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32)
dflet 0:50cedd586816 36 #include <basetsd.h>
dflet 0:50cedd586816 37 typedef UINT32 uint32_t;
dflet 0:50cedd586816 38 #else
dflet 0:50cedd586816 39 #include <inttypes.h>
dflet 0:50cedd586816 40 #endif
dflet 0:50cedd586816 41
dflet 0:50cedd586816 42 #define POLARSSL_ERR_RIPEMD160_FILE_IO_ERROR -0x007E /**< Read/write error in file. */
dflet 0:50cedd586816 43
dflet 0:50cedd586816 44 #if !defined(POLARSSL_RIPEMD160_ALT)
dflet 0:50cedd586816 45 // Regular implementation
dflet 0:50cedd586816 46 //
dflet 0:50cedd586816 47
dflet 0:50cedd586816 48 #ifdef __cplusplus
dflet 0:50cedd586816 49 extern "C" {
dflet 0:50cedd586816 50 #endif
dflet 0:50cedd586816 51
dflet 0:50cedd586816 52 /**
dflet 0:50cedd586816 53 * \brief RIPEMD-160 context structure
dflet 0:50cedd586816 54 */
dflet 0:50cedd586816 55 typedef struct
dflet 0:50cedd586816 56 {
dflet 0:50cedd586816 57 uint32_t total[2]; /*!< number of bytes processed */
dflet 0:50cedd586816 58 uint32_t state[5]; /*!< intermediate digest state */
dflet 0:50cedd586816 59 unsigned char buffer[64]; /*!< data block being processed */
dflet 0:50cedd586816 60
dflet 0:50cedd586816 61 unsigned char ipad[64]; /*!< HMAC: inner padding */
dflet 0:50cedd586816 62 unsigned char opad[64]; /*!< HMAC: outer padding */
dflet 0:50cedd586816 63 }
dflet 0:50cedd586816 64 ripemd160_context;
dflet 0:50cedd586816 65
dflet 0:50cedd586816 66 /**
dflet 0:50cedd586816 67 * \brief Initialize RIPEMD-160 context
dflet 0:50cedd586816 68 *
dflet 0:50cedd586816 69 * \param ctx RIPEMD-160 context to be initialized
dflet 0:50cedd586816 70 */
dflet 0:50cedd586816 71 void ripemd160_init( ripemd160_context *ctx );
dflet 0:50cedd586816 72
dflet 0:50cedd586816 73 /**
dflet 0:50cedd586816 74 * \brief Clear RIPEMD-160 context
dflet 0:50cedd586816 75 *
dflet 0:50cedd586816 76 * \param ctx RIPEMD-160 context to be cleared
dflet 0:50cedd586816 77 */
dflet 0:50cedd586816 78 void ripemd160_free( ripemd160_context *ctx );
dflet 0:50cedd586816 79
dflet 0:50cedd586816 80 /**
dflet 0:50cedd586816 81 * \brief RIPEMD-160 context setup
dflet 0:50cedd586816 82 *
dflet 0:50cedd586816 83 * \param ctx context to be initialized
dflet 0:50cedd586816 84 */
dflet 0:50cedd586816 85 void ripemd160_starts( ripemd160_context *ctx );
dflet 0:50cedd586816 86
dflet 0:50cedd586816 87 /**
dflet 0:50cedd586816 88 * \brief RIPEMD-160 process buffer
dflet 0:50cedd586816 89 *
dflet 0:50cedd586816 90 * \param ctx RIPEMD-160 context
dflet 0:50cedd586816 91 * \param input buffer holding the data
dflet 0:50cedd586816 92 * \param ilen length of the input data
dflet 0:50cedd586816 93 */
dflet 0:50cedd586816 94 void ripemd160_update( ripemd160_context *ctx,
dflet 0:50cedd586816 95 const unsigned char *input, size_t ilen );
dflet 0:50cedd586816 96
dflet 0:50cedd586816 97 /**
dflet 0:50cedd586816 98 * \brief RIPEMD-160 final digest
dflet 0:50cedd586816 99 *
dflet 0:50cedd586816 100 * \param ctx RIPEMD-160 context
dflet 0:50cedd586816 101 * \param output RIPEMD-160 checksum result
dflet 0:50cedd586816 102 */
dflet 0:50cedd586816 103 void ripemd160_finish( ripemd160_context *ctx, unsigned char output[20] );
dflet 0:50cedd586816 104
dflet 0:50cedd586816 105 /* Internal use */
dflet 0:50cedd586816 106 void ripemd160_process( ripemd160_context *ctx, const unsigned char data[64] );
dflet 0:50cedd586816 107
dflet 0:50cedd586816 108 #ifdef __cplusplus
dflet 0:50cedd586816 109 }
dflet 0:50cedd586816 110 #endif
dflet 0:50cedd586816 111
dflet 0:50cedd586816 112 #else /* POLARSSL_RIPEMD160_ALT */
dflet 0:50cedd586816 113 #include "ripemd160.h"
dflet 0:50cedd586816 114 #endif /* POLARSSL_RIPEMD160_ALT */
dflet 0:50cedd586816 115
dflet 0:50cedd586816 116 #ifdef __cplusplus
dflet 0:50cedd586816 117 extern "C" {
dflet 0:50cedd586816 118 #endif
dflet 0:50cedd586816 119
dflet 0:50cedd586816 120 /**
dflet 0:50cedd586816 121 * \brief Output = RIPEMD-160( input buffer )
dflet 0:50cedd586816 122 *
dflet 0:50cedd586816 123 * \param input buffer holding the data
dflet 0:50cedd586816 124 * \param ilen length of the input data
dflet 0:50cedd586816 125 * \param output RIPEMD-160 checksum result
dflet 0:50cedd586816 126 */
dflet 0:50cedd586816 127 void ripemd160( const unsigned char *input, size_t ilen,
dflet 0:50cedd586816 128 unsigned char output[20] );
dflet 0:50cedd586816 129
dflet 0:50cedd586816 130 #if defined(POLARSSL_FS_IO)
dflet 0:50cedd586816 131 /**
dflet 0:50cedd586816 132 * \brief Output = RIPEMD-160( file contents )
dflet 0:50cedd586816 133 *
dflet 0:50cedd586816 134 * \param path input file name
dflet 0:50cedd586816 135 * \param output RIPEMD-160 checksum result
dflet 0:50cedd586816 136 *
dflet 0:50cedd586816 137 * \return 0 if successful, or POLARSSL_ERR_RIPEMD160_FILE_IO_ERROR
dflet 0:50cedd586816 138 */
dflet 0:50cedd586816 139 int ripemd160_file( const char *path, unsigned char output[20] );
dflet 0:50cedd586816 140 #endif /* POLARSSL_FS_IO */
dflet 0:50cedd586816 141
dflet 0:50cedd586816 142 /**
dflet 0:50cedd586816 143 * \brief RIPEMD-160 HMAC context setup
dflet 0:50cedd586816 144 *
dflet 0:50cedd586816 145 * \param ctx HMAC context to be initialized
dflet 0:50cedd586816 146 * \param key HMAC secret key
dflet 0:50cedd586816 147 * \param keylen length of the HMAC key
dflet 0:50cedd586816 148 */
dflet 0:50cedd586816 149 void ripemd160_hmac_starts( ripemd160_context *ctx,
dflet 0:50cedd586816 150 const unsigned char *key, size_t keylen );
dflet 0:50cedd586816 151
dflet 0:50cedd586816 152 /**
dflet 0:50cedd586816 153 * \brief RIPEMD-160 HMAC process buffer
dflet 0:50cedd586816 154 *
dflet 0:50cedd586816 155 * \param ctx HMAC context
dflet 0:50cedd586816 156 * \param input buffer holding the data
dflet 0:50cedd586816 157 * \param ilen length of the input data
dflet 0:50cedd586816 158 */
dflet 0:50cedd586816 159 void ripemd160_hmac_update( ripemd160_context *ctx,
dflet 0:50cedd586816 160 const unsigned char *input, size_t ilen );
dflet 0:50cedd586816 161
dflet 0:50cedd586816 162 /**
dflet 0:50cedd586816 163 * \brief RIPEMD-160 HMAC final digest
dflet 0:50cedd586816 164 *
dflet 0:50cedd586816 165 * \param ctx HMAC context
dflet 0:50cedd586816 166 * \param output RIPEMD-160 HMAC checksum result
dflet 0:50cedd586816 167 */
dflet 0:50cedd586816 168 void ripemd160_hmac_finish( ripemd160_context *ctx, unsigned char output[20] );
dflet 0:50cedd586816 169
dflet 0:50cedd586816 170 /**
dflet 0:50cedd586816 171 * \brief RIPEMD-160 HMAC context reset
dflet 0:50cedd586816 172 *
dflet 0:50cedd586816 173 * \param ctx HMAC context to be reset
dflet 0:50cedd586816 174 */
dflet 0:50cedd586816 175 void ripemd160_hmac_reset( ripemd160_context *ctx );
dflet 0:50cedd586816 176
dflet 0:50cedd586816 177 /**
dflet 0:50cedd586816 178 * \brief Output = HMAC-RIPEMD-160( hmac key, input buffer )
dflet 0:50cedd586816 179 *
dflet 0:50cedd586816 180 * \param key HMAC secret key
dflet 0:50cedd586816 181 * \param keylen length of the HMAC key
dflet 0:50cedd586816 182 * \param input buffer holding the data
dflet 0:50cedd586816 183 * \param ilen length of the input data
dflet 0:50cedd586816 184 * \param output HMAC-RIPEMD-160 result
dflet 0:50cedd586816 185 */
dflet 0:50cedd586816 186 void ripemd160_hmac( const unsigned char *key, size_t keylen,
dflet 0:50cedd586816 187 const unsigned char *input, size_t ilen,
dflet 0:50cedd586816 188 unsigned char output[20] );
dflet 0:50cedd586816 189
dflet 0:50cedd586816 190 /**
dflet 0:50cedd586816 191 * \brief Checkup routine
dflet 0:50cedd586816 192 *
dflet 0:50cedd586816 193 * \return 0 if successful, or 1 if the test failed
dflet 0:50cedd586816 194 */
dflet 0:50cedd586816 195 int ripemd160_self_test( int verbose );
dflet 0:50cedd586816 196
dflet 0:50cedd586816 197 #ifdef __cplusplus
dflet 0:50cedd586816 198 }
dflet 0:50cedd586816 199 #endif
dflet 0:50cedd586816 200
dflet 0:50cedd586816 201 #endif /* ripemd160.h */
dflet 0:50cedd586816 202