Reintroduce md_init_ctx compatibility wrapper
diff --git a/ChangeLog b/ChangeLog
index 81abd5b..82c9a88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,7 +6,8 @@
* Support for DTLS 1.0 and 1.2 (RFC 6347).
API Changes
- * md_init_ctx() gained a new argument for optional hmac usage
+ * md_init_ctx() is deprecated in favour of md_setup(), that adds a third
+ argument (allowing memory savings if HMAC is not used)
* Removed individual mdX_hmac and shaX_hmac functions (use generic
md_hmac functions from md.h)
* Change md_info_t into an opaque structure (use md_get_xxx() accessors).
diff --git a/include/mbedtls/md.h b/include/mbedtls/md.h
index c750d6a..db85701 100644
--- a/include/mbedtls/md.h
+++ b/include/mbedtls/md.h
@@ -125,6 +125,31 @@
*/
void md_free( md_context_t *ctx );
+#if ! defined(POLARSSL_DEPRECATED_REMOVED)
+#if defined(POLARSSL_DEPRECATED_WARNING)
+#define DEPRECATED __attribute__((deprecated))
+#else
+#define DEPRECATED
+#endif
+/**
+ * \brief Initialises and fills the message digest context structure
+ * with the appropriate values.
+ *
+ * \deprecated Superseded by md_setup() in 2.0.0
+ *
+ * \param ctx context to initialise. May not be NULL. The
+ * digest-specific context (ctx->md_ctx) must be NULL. It will
+ * be allocated, and must be freed using md_free() later.
+ * \param md_info message digest to use.
+ *
+ * \returns \c 0 on success, \c POLARSSL_ERR_MD_BAD_INPUT_DATA on
+ * parameter failure, \c POLARSSL_ERR_MD_ALLOC_FAILED if
+ * allocation of the digest-specific context failed.
+ */
+int md_init_ctx( md_context_t *ctx, const md_info_t *md_info ) DEPRECATED;
+#undef DEPRECATED
+#endif /* POLARSSL_DEPRECATED_REMOVED */
+
/**
* \brief Initialises and fills the message digest context structure
* with the appropriate values.
diff --git a/library/md.c b/library/md.c
index fab9dea..74038ae 100644
--- a/library/md.c
+++ b/library/md.c
@@ -199,7 +199,14 @@
polarssl_zeroize( ctx, sizeof( md_context_t ) );
}
-int md_setup( md_context_t *ctx, const md_info_t *md_info, int hmac )
+#if ! defined(POLARSSL_DEPRECATED_REMOVED)
+int md_init_ctx( md_context_t *ctx, const md_info_t *md_info )
+{
+ return md_setup( ctx, md_info, 1 );
+}
+#endif
+
+int md_setup( md_context_t *ctx, const md_info_t *md_info, int hmac )
{
if( md_info == NULL || ctx == NULL )
return( POLARSSL_ERR_MD_BAD_INPUT_DATA );