Add mbedtls_md_clone()
diff --git a/library/md.c b/library/md.c index 1220a87..a2c020b 100644 --- a/library/md.c +++ b/library/md.c
@@ -201,6 +201,21 @@ mbedtls_zeroize( ctx, sizeof( mbedtls_md_context_t ) ); } +int mbedtls_md_clone( mbedtls_md_context_t *dst, + const mbedtls_md_context_t *src ) +{ + if( dst == NULL || dst->md_info == NULL || + src == NULL || src->md_info == NULL || + dst->md_info != src->md_info ) + { + return( MBEDTLS_ERR_MD_BAD_INPUT_DATA ); + } + + dst->md_info->clone_func( dst->md_ctx, src->md_ctx ); + + return( 0 ); +} + #if ! defined(MBEDTLS_DEPRECATED_REMOVED) int mbedtls_md_init_ctx( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info ) {