diff --git a/include/mbedtls/md.h b/include/mbedtls/md.h index f9349e1d85..013cb6502d 100644 --- a/include/mbedtls/md.h +++ b/include/mbedtls/md.h @@ -4,12 +4,15 @@ * \brief This file contains the generic functions for message-digest * (hashing) and HMAC. * - * Availability of function in this modules is controled by two + * Availability of functions in this modules is controled by two * feature macros: * - MBEDTLS_MD_C enables the whole module; - * - MBEDTLS_MD_LIGHT enables only functions for hashing an accessing - * some hash metadata; is it automatically set whenever MBEDTLS_MD_C - * is set. + * - MBEDTLS_MD_LIGHT enables only functions for hashing and accessing + * most hash metadata (everything except string names); is it + * automatically set whenever MBEDTLS_MD_C is defined. + * + * The functions that are only available when MBEDTLS_MD_C is defined + * are grouped at the end of the file and guarded by this macro. * * \author Adriaan de Jong */ @@ -115,32 +118,6 @@ typedef struct mbedtls_md_context_t { void *MBEDTLS_PRIVATE(hmac_ctx); } mbedtls_md_context_t; -#if defined(MBEDTLS_MD_C) -/** - * \brief This function returns the list of digests supported by the - * generic digest module. - * - * \note The list starts with the strongest available hashes. - * - * \return A statically allocated array of digests. Each element - * in the returned list is an integer belonging to the - * message-digest enumeration #mbedtls_md_type_t. - * The last entry is 0. - */ -const int *mbedtls_md_list(void); - -/** - * \brief This function returns the message-digest information - * associated with the given digest name. - * - * \param md_name The name of the digest to search for. - * - * \return The message-digest information associated with \p md_name. - * \return NULL if the associated message-digest information is not found. - */ -const mbedtls_md_info_t *mbedtls_md_info_from_string(const char *md_name); -#endif /* MBEDTLS_MD_C */ - /** * \brief This function returns the message-digest information * associated with the given digest type. @@ -152,21 +129,6 @@ const mbedtls_md_info_t *mbedtls_md_info_from_string(const char *md_name); */ const mbedtls_md_info_t *mbedtls_md_info_from_type(mbedtls_md_type_t md_type); -#if defined(MBEDTLS_MD_C) -/** - * \brief This function returns the message-digest information - * from the given context. - * - * \param ctx The context from which to extract the information. - * This must be initialized (or \c NULL). - * - * \return The message-digest information associated with \p ctx. - * \return \c NULL if \p ctx is \c NULL. - */ -const mbedtls_md_info_t *mbedtls_md_info_from_ctx( - const mbedtls_md_context_t *ctx); -#endif /* MBEDTLS_MD_C */ - /** * \brief This function initializes a message-digest context without * binding it to a particular message-digest algorithm. @@ -260,19 +222,6 @@ unsigned char mbedtls_md_get_size(const mbedtls_md_info_t *md_info); */ mbedtls_md_type_t mbedtls_md_get_type(const mbedtls_md_info_t *md_info); -#if defined(MBEDTLS_MD_C) -/** - * \brief This function extracts the message-digest name from the - * message-digest information structure. - * - * \param md_info The information structure of the message-digest algorithm - * to use. - * - * \return The name of the message digest. - */ -const char *mbedtls_md_get_name(const mbedtls_md_info_t *md_info); -#endif /* MBEDTLS_MD_C */ - /** * \brief This function starts a message-digest computation. * @@ -351,7 +300,61 @@ MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md(const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output); -#if defined(MBEDTLS_FS_IO) && defined(MBEDTLS_MD_C) +/************************************************************************ + * Functions below this separator are not part of MBEDTLS_MD_LIGHT * + * and require MBEDTLS_MD_C * + ************************************************************************/ + +#if defined(MBEDTLS_MD_C) +/** + * \brief This function returns the list of digests supported by the + * generic digest module. + * + * \note The list starts with the strongest available hashes. + * + * \return A statically allocated array of digests. Each element + * in the returned list is an integer belonging to the + * message-digest enumeration #mbedtls_md_type_t. + * The last entry is 0. + */ +const int *mbedtls_md_list(void); + +/** + * \brief This function returns the message-digest information + * associated with the given digest name. + * + * \param md_name The name of the digest to search for. + * + * \return The message-digest information associated with \p md_name. + * \return NULL if the associated message-digest information is not found. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_string(const char *md_name); + +/** + * \brief This function extracts the message-digest name from the + * message-digest information structure. + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * + * \return The name of the message digest. + */ +const char *mbedtls_md_get_name(const mbedtls_md_info_t *md_info); + +/** + * \brief This function returns the message-digest information + * from the given context. + * + * \param ctx The context from which to extract the information. + * This must be initialized (or \c NULL). + * + * \return The message-digest information associated with \p ctx. + * \return \c NULL if \p ctx is \c NULL. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_ctx( + const mbedtls_md_context_t *ctx); + +#if defined(MBEDTLS_FS_IO) /** * \brief This function calculates the message-digest checksum * result of the contents of the provided file. @@ -372,9 +375,8 @@ int mbedtls_md(const mbedtls_md_info_t *md_info, const unsigned char *input, siz MBEDTLS_CHECK_RETURN_TYPICAL int mbedtls_md_file(const mbedtls_md_info_t *md_info, const char *path, unsigned char *output); -#endif /* MBEDTLS_FS_IO && MBEDTLS_MD_C */ +#endif /* MBEDTLS_FS_IO */ -#if defined(MBEDTLS_MD_C) /** * \brief This function sets the HMAC key and prepares to * authenticate a new message.