mbed TLS v2.1.0
md.h
Go to the documentation of this file.
1 
25 #ifndef MBEDTLS_MD_H
26 #define MBEDTLS_MD_H
27 
28 #include <stddef.h>
29 
30 #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && !defined(inline)
31 #define inline __inline
32 #endif
33 
34 #define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080
35 #define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100
36 #define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180
37 #define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 typedef enum {
55 
56 #if defined(MBEDTLS_SHA512_C)
57 #define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */
58 #else
59 #define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */
60 #endif
61 
66 
70 typedef struct {
73 
75  void *md_ctx;
76 
78  void *hmac_ctx;
80 
87 const int *mbedtls_md_list( void );
88 
98 const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name );
99 
110 
117 
124 
125 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
126 #if defined(MBEDTLS_DEPRECATED_WARNING)
127 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
128 #else
129 #define MBEDTLS_DEPRECATED
130 #endif
131 
146 #undef MBEDTLS_DEPRECATED
147 #endif /* MBEDTLS_DEPRECATED_REMOVED */
148 
163 int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac );
164 
180  const mbedtls_md_context_t *src );
181 
189 unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info );
190 
199 
207 const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info );
208 
220 
233 int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen );
234 
246 int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output );
247 
259 int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen,
260  unsigned char *output );
261 
262 #if defined(MBEDTLS_FS_IO)
263 
274 int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path,
275  unsigned char *output );
276 #endif /* MBEDTLS_FS_IO */
277 
289 int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key,
290  size_t keylen );
291 
305 int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input,
306  size_t ilen );
307 
320 int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output);
321 
332 
346 int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen,
347  const unsigned char *input, size_t ilen,
348  unsigned char *output );
349 
350 /* Internal use */
351 int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data );
352 
353 #ifdef __cplusplus
354 }
355 #endif
356 
357 #endif /* MBEDTLS_MD_H */
int mbedtls_md_init_ctx(mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info) MBEDTLS_DEPRECATED
Select MD to use and allocate internal structures.
int mbedtls_md_hmac_reset(mbedtls_md_context_t *ctx)
Prepare to authenticate a new message with the same key.
mbedtls_md_type_t mbedtls_md_get_type(const mbedtls_md_info_t *md_info)
Returns the type of the message digest output.
int mbedtls_md_starts(mbedtls_md_context_t *ctx)
Prepare the context to digest a new message.
void * hmac_ctx
HMAC part of the context.
Definition: md.h:78
int mbedtls_md_hmac_update(mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen)
Generic HMAC process buffer.
void mbedtls_md_free(mbedtls_md_context_t *ctx)
Free and clear the internal structures of ctx.
void mbedtls_md_init(mbedtls_md_context_t *ctx)
Initialize a md_context (as NONE) This should always be called first.
int mbedtls_md_clone(mbedtls_md_context_t *dst, const mbedtls_md_context_t *src)
Clone the state of an MD context.
void * md_ctx
Digest-specific context.
Definition: md.h:75
Generic message digest context.
Definition: md.h:70
int mbedtls_md_process(mbedtls_md_context_t *ctx, const unsigned char *data)
unsigned char mbedtls_md_get_size(const mbedtls_md_info_t *md_info)
Returns the size of the message digest output.
int mbedtls_md_hmac_finish(mbedtls_md_context_t *ctx, unsigned char *output)
Output HMAC.
int mbedtls_md_setup(mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac)
Select MD to use and allocate internal structures.
int mbedtls_md_hmac(const mbedtls_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 mbedtls_md(const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output)
Output = message_digest( input buffer )
int mbedtls_md_finish(mbedtls_md_context_t *ctx, unsigned char *output)
Generic message digest final digest Called after mbedtls_md_update().
#define MBEDTLS_DEPRECATED
Definition: md.h:129
const char * mbedtls_md_get_name(const mbedtls_md_info_t *md_info)
Returns the name of the message digest output.
const int * mbedtls_md_list(void)
Returns the list of digests supported by the generic digest module.
const mbedtls_md_info_t * mbedtls_md_info_from_type(mbedtls_md_type_t md_type)
Returns the message digest information associated with the given digest type.
Message digest information.
Definition: md_internal.h:46
int mbedtls_md_hmac_starts(mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen)
Set HMAC key and prepare to authenticate a new message.
mbedtls_md_type_t
Definition: md.h:43
const mbedtls_md_info_t * mbedtls_md_info_from_string(const char *md_name)
Returns the message digest information associated with the given digest name.
const mbedtls_md_info_t * md_info
Information about the associated message digest.
Definition: md.h:72
int mbedtls_md_update(mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen)
Generic message digest process buffer Called between mbedtls_md_starts() and mbedtls_md_finish().