mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-03-24 10:35:12 +00:00
MD: Embed digest context structure into MD wrapper context
This commit is contained in:
parent
4a99765f94
commit
52e36bc1a1
|
@ -108,6 +108,8 @@ typedef int mbedtls_md_handle_t;
|
||||||
|
|
||||||
#endif /* !MBEDTLS_MD_SINGLE_HASH */
|
#endif /* !MBEDTLS_MD_SINGLE_HASH */
|
||||||
|
|
||||||
|
#include "md_internal.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The generic message-digest context.
|
* The generic message-digest context.
|
||||||
*/
|
*/
|
||||||
|
@ -118,11 +120,20 @@ typedef struct mbedtls_md_context_t
|
||||||
mbedtls_md_handle_t md_info;
|
mbedtls_md_handle_t md_info;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
||||||
/** The digest-specific context. */
|
/** The digest-specific context. */
|
||||||
void *md_ctx;
|
void *md_ctx;
|
||||||
|
|
||||||
/** The HMAC part of the context. */
|
/** The HMAC part of the context. */
|
||||||
void *hmac_ctx;
|
void *hmac_ctx;
|
||||||
|
#else
|
||||||
|
unsigned char md_ctx[ sizeof( MBEDTLS_MD_INFO_CTX_TYPE(
|
||||||
|
MBEDTLS_MD_SINGLE_HASH ) ) ];
|
||||||
|
|
||||||
|
unsigned char hmac_ctx[ 2 * MBEDTLS_MD_INFO_BLOCKSIZE(
|
||||||
|
MBEDTLS_MD_SINGLE_HASH ) ];
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_MD_SINGLE_HASH */
|
||||||
} mbedtls_md_context_t;
|
} mbedtls_md_context_t;
|
||||||
|
|
||||||
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
||||||
|
@ -140,8 +151,6 @@ static inline mbedtls_md_handle_t mbedtls_md_get_handle(
|
||||||
}
|
}
|
||||||
#endif /* !MBEDTLS_MD_SINGLE_HASH */
|
#endif /* !MBEDTLS_MD_SINGLE_HASH */
|
||||||
|
|
||||||
#include "md_internal.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief This function returns the list of digests supported by the
|
* \brief This function returns the list of digests supported by the
|
||||||
* generic digest module.
|
* generic digest module.
|
||||||
|
|
11
library/md.c
11
library/md.c
|
@ -388,6 +388,11 @@ mbedtls_md_handle_t mbedtls_md_info_from_type( mbedtls_md_type_t md_type )
|
||||||
void mbedtls_md_init( mbedtls_md_context_t *ctx )
|
void mbedtls_md_init( mbedtls_md_context_t *ctx )
|
||||||
{
|
{
|
||||||
memset( ctx, 0, sizeof( mbedtls_md_context_t ) );
|
memset( ctx, 0, sizeof( mbedtls_md_context_t ) );
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_MD_SINGLE_HASH)
|
||||||
|
mbedtls_md_info_init( mbedtls_md_get_handle( ctx ),
|
||||||
|
ctx->md_ctx );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void mbedtls_md_free( mbedtls_md_context_t *ctx )
|
void mbedtls_md_free( mbedtls_md_context_t *ctx )
|
||||||
|
@ -395,6 +400,7 @@ void mbedtls_md_free( mbedtls_md_context_t *ctx )
|
||||||
if( ctx == NULL || mbedtls_md_get_handle( ctx ) == MBEDTLS_MD_INVALID_HANDLE )
|
if( ctx == NULL || mbedtls_md_get_handle( ctx ) == MBEDTLS_MD_INVALID_HANDLE )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
||||||
if( ctx->md_ctx != NULL )
|
if( ctx->md_ctx != NULL )
|
||||||
{
|
{
|
||||||
mbedtls_md_info_ctx_free( mbedtls_md_get_handle( ctx ), ctx->md_ctx );
|
mbedtls_md_info_ctx_free( mbedtls_md_get_handle( ctx ), ctx->md_ctx );
|
||||||
|
@ -406,6 +412,7 @@ void mbedtls_md_free( mbedtls_md_context_t *ctx )
|
||||||
2 * mbedtls_md_info_block_size( mbedtls_md_get_handle( ctx ) ) );
|
2 * mbedtls_md_info_block_size( mbedtls_md_get_handle( ctx ) ) );
|
||||||
mbedtls_free( ctx->hmac_ctx );
|
mbedtls_free( ctx->hmac_ctx );
|
||||||
}
|
}
|
||||||
|
#endif /* MBEDTLS_MD_SINGLE_HASH */
|
||||||
|
|
||||||
mbedtls_platform_zeroize( ctx, sizeof( mbedtls_md_context_t ) );
|
mbedtls_platform_zeroize( ctx, sizeof( mbedtls_md_context_t ) );
|
||||||
}
|
}
|
||||||
|
@ -437,6 +444,7 @@ int mbedtls_md_setup( mbedtls_md_context_t *ctx, mbedtls_md_handle_t md_info, in
|
||||||
if( md_info == MBEDTLS_MD_INVALID_HANDLE || ctx == NULL )
|
if( md_info == MBEDTLS_MD_INVALID_HANDLE || ctx == NULL )
|
||||||
return( MBEDTLS_ERR_MD_BAD_INPUT_DATA );
|
return( MBEDTLS_ERR_MD_BAD_INPUT_DATA );
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
||||||
ctx->md_ctx = mbedtls_md_info_ctx_alloc( md_info );
|
ctx->md_ctx = mbedtls_md_info_ctx_alloc( md_info );
|
||||||
if( ctx->md_ctx == NULL )
|
if( ctx->md_ctx == NULL )
|
||||||
return( MBEDTLS_ERR_MD_ALLOC_FAILED );
|
return( MBEDTLS_ERR_MD_ALLOC_FAILED );
|
||||||
|
@ -452,8 +460,9 @@ int mbedtls_md_setup( mbedtls_md_context_t *ctx, mbedtls_md_handle_t md_info, in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(MBEDTLS_MD_SINGLE_HASH)
|
|
||||||
ctx->md_info = md_info;
|
ctx->md_info = md_info;
|
||||||
|
#else
|
||||||
|
((void) hmac);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
|
|
Loading…
Reference in a new issue