mbed TLS v2.2.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 #define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080
31 #define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100
32 #define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180
33 #define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 typedef enum {
51 
52 #if defined(MBEDTLS_SHA512_C)
53 #define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */
54 #else
55 #define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */
56 #endif
57 
62 
66 typedef struct {
69 
71  void *md_ctx;
72 
74  void *hmac_ctx;
76 
83 const int *mbedtls_md_list( void );
84 
94 const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name );
95 
106 
113 
120 
121 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
122 #if defined(MBEDTLS_DEPRECATED_WARNING)
123 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
124 #else
125 #define MBEDTLS_DEPRECATED
126 #endif
127 
142 #undef MBEDTLS_DEPRECATED
143 #endif /* MBEDTLS_DEPRECATED_REMOVED */
144 
159 int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac );
160 
176  const mbedtls_md_context_t *src );
177 
185 unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info );
186 
195 
203 const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info );
204 
216 
229 int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen );
230 
242 int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output );
243 
255 int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen,
256  unsigned char *output );
257 
258 #if defined(MBEDTLS_FS_IO)
259 
270 int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path,
271  unsigned char *output );
272 #endif /* MBEDTLS_FS_IO */
273 
285 int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key,
286  size_t keylen );
287 
301 int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input,
302  size_t ilen );
303 
316 int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output);
317 
328 
342 int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen,
343  const unsigned char *input, size_t ilen,
344  unsigned char *output );
345 
346 /* Internal use */
347 int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data );
348 
349 #ifdef __cplusplus
350 }
351 #endif
352 
353 #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:74
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:71
Generic message digest context.
Definition: md.h:66
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:125
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:39
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:68
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().