mbed TLS v2.3.0
md.h
Go to the documentation of this file.
1 
27 #ifndef MBEDTLS_MD_H
28 #define MBEDTLS_MD_H
29 
30 #include <stddef.h>
31 
32 #define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080
33 #define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100
34 #define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180
35 #define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 typedef enum {
53 
54 #if defined(MBEDTLS_SHA512_C)
55 #define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */
56 #else
57 #define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */
58 #endif
59 
64 
68 typedef struct {
71 
73  void *md_ctx;
74 
76  void *hmac_ctx;
78 
85 const int *mbedtls_md_list( void );
86 
96 const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name );
97 
108 
115 
122 
123 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
124 #if defined(MBEDTLS_DEPRECATED_WARNING)
125 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
126 #else
127 #define MBEDTLS_DEPRECATED
128 #endif
129 
144 #undef MBEDTLS_DEPRECATED
145 #endif /* MBEDTLS_DEPRECATED_REMOVED */
146 
161 int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac );
162 
178  const mbedtls_md_context_t *src );
179 
187 unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info );
188 
197 
205 const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info );
206 
218 
231 int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen );
232 
244 int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output );
245 
257 int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen,
258  unsigned char *output );
259 
260 #if defined(MBEDTLS_FS_IO)
261 
272 int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path,
273  unsigned char *output );
274 #endif /* MBEDTLS_FS_IO */
275 
287 int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key,
288  size_t keylen );
289 
303 int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input,
304  size_t ilen );
305 
318 int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output);
319 
330 
344 int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen,
345  const unsigned char *input, size_t ilen,
346  unsigned char *output );
347 
348 /* Internal use */
349 int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data );
350 
351 #ifdef __cplusplus
352 }
353 #endif
354 
355 #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:76
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:73
Generic message digest context.
Definition: md.h:68
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:127
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.
struct mbedtls_md_info_t mbedtls_md_info_t
Opaque struct defined in md_internal.h.
Definition: md.h:63
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:41
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:70
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().