mbed TLS v2.28.0
md.h
Go to the documentation of this file.
1 
8 /*
9  * Copyright The Mbed TLS Contributors
10  * SPDX-License-Identifier: Apache-2.0
11  *
12  * Licensed under the Apache License, Version 2.0 (the "License"); you may
13  * not use this file except in compliance with the License.
14  * You may obtain a copy of the License at
15  *
16  * http://www.apache.org/licenses/LICENSE-2.0
17  *
18  * Unless required by applicable law or agreed to in writing, software
19  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
20  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  * See the License for the specific language governing permissions and
22  * limitations under the License.
23  */
24 
25 #ifndef MBEDTLS_MD_H
26 #define MBEDTLS_MD_H
27 
28 #include <stddef.h>
29 
30 #if !defined(MBEDTLS_CONFIG_FILE)
31 #include "mbedtls/config.h"
32 #else
33 #include MBEDTLS_CONFIG_FILE
34 #endif
35 #include "mbedtls/platform_util.h"
36 
38 #define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080
39 
40 #define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100
41 
42 #define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180
43 
44 #define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200
45 
46 /* MBEDTLS_ERR_MD_HW_ACCEL_FAILED is deprecated and should not be used. */
48 #define MBEDTLS_ERR_MD_HW_ACCEL_FAILED -0x5280
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
62 typedef enum {
74 
75 #if defined(MBEDTLS_SHA512_C)
76 #define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */
77 #else
78 #define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */
79 #endif
80 
81 #if defined(MBEDTLS_SHA512_C)
82 #define MBEDTLS_MD_MAX_BLOCK_SIZE 128
83 #else
84 #define MBEDTLS_MD_MAX_BLOCK_SIZE 64
85 #endif
86 
91 
95 typedef struct mbedtls_md_context_t
96 {
99 
101  void *md_ctx;
102 
104  void *hmac_ctx;
106 
118 const int *mbedtls_md_list( void );
119 
129 const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name );
130 
141 
151 
166 
167 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
168 #if defined(MBEDTLS_DEPRECATED_WARNING)
169 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
170 #else
171 #define MBEDTLS_DEPRECATED
172 #endif
173 
192 #undef MBEDTLS_DEPRECATED
193 #endif /* MBEDTLS_DEPRECATED_REMOVED */
194 
215 int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac );
216 
238  const mbedtls_md_context_t *src );
239 
249 unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info );
250 
261 
271 const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info );
272 
288 
306 int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen );
307 
327 int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output );
328 
348 int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen,
349  unsigned char *output );
350 
351 #if defined(MBEDTLS_FS_IO)
352 
370 int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path,
371  unsigned char *output );
372 #endif /* MBEDTLS_FS_IO */
373 
393 int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key,
394  size_t keylen );
395 
416 int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input,
417  size_t ilen );
418 
438 int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output);
439 
457 
481 int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen,
482  const unsigned char *input, size_t ilen,
483  unsigned char *output );
484 
485 /* Internal use */
487 int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data );
488 
489 #ifdef __cplusplus
490 }
491 #endif
492 
493 #endif /* MBEDTLS_MD_H */
int mbedtls_md_init_ctx(mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info) MBEDTLS_DEPRECATED
This function selects the message digest algorithm to use, and allocates internal structures...
mbedtls_md_type_t mbedtls_md_get_type(const mbedtls_md_info_t *md_info)
This function extracts the message-digest type from the message-digest information structure...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_starts(mbedtls_md_context_t *ctx)
This function starts a message-digest computation.
void * hmac_ctx
Definition: md.h:104
#define MBEDTLS_CHECK_RETURN_TYPICAL
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_update(mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen)
This function feeds an input buffer into an ongoing HMAC computation.
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_process(mbedtls_md_context_t *ctx, const unsigned char *data)
void mbedtls_md_free(mbedtls_md_context_t *ctx)
This function clears the internal structure of ctx and frees any embedded internal structure...
void mbedtls_md_init(mbedtls_md_context_t *ctx)
This function initializes a message-digest context without binding it to a particular message-digest ...
void * md_ctx
Definition: md.h:101
Configuration options (set of defines)
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_finish(mbedtls_md_context_t *ctx, unsigned char *output)
This function finishes the digest operation, and writes the result to the output buffer.
MBEDTLS_CHECK_RETURN_TYPICAL 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)
This function calculates the full generic HMAC on the input buffer with the provided key...
Common and shared functions used by multiple modules in the Mbed TLS library.
unsigned char mbedtls_md_get_size(const mbedtls_md_info_t *md_info)
This function extracts the message-digest size from the message-digest information structure...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_file(const mbedtls_md_info_t *md_info, const char *path, unsigned char *output)
This function calculates the message-digest checksum result of the contents of the provided file...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_clone(mbedtls_md_context_t *dst, const mbedtls_md_context_t *src)
This function clones the state of an message-digest context.
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md(const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output)
This function calculates the message-digest of a buffer, with respect to a configurable message-diges...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_finish(mbedtls_md_context_t *ctx, unsigned char *output)
This function finishes the HMAC operation, and writes the result to the output buffer.
#define MBEDTLS_DEPRECATED
Definition: md.h:171
const char * mbedtls_md_get_name(const mbedtls_md_info_t *md_info)
This function extracts the message-digest name from the message-digest information structure...
struct mbedtls_md_context_t mbedtls_md_context_t
const int * mbedtls_md_list(void)
This function 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)
This function returns the message-digest information associated with the given digest type...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_update(mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen)
This function feeds an input buffer into an ongoing message-digest computation.
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_reset(mbedtls_md_context_t *ctx)
This function prepares to authenticate a new message with the same key as the previous HMAC operation...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_hmac_starts(mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen)
This function sets the HMAC key and prepares to authenticate a new message.
struct mbedtls_md_info_t mbedtls_md_info_t
Definition: md.h:90
mbedtls_md_type_t
Supported message digests.
Definition: md.h:62
const mbedtls_md_info_t * mbedtls_md_info_from_string(const char *md_name)
This function returns the message-digest information associated with the given digest name...
MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_setup(mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac)
This function selects the message digest algorithm to use, and allocates internal structures...
const mbedtls_md_info_t * md_info
Definition: md.h:98