Add _init() and _free() for hash modules
diff --git a/library/md2.c b/library/md2.c
index 589c5cc..45bce37 100644
--- a/library/md2.c
+++ b/library/md2.c
@@ -86,6 +86,19 @@
0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14
};
+void md2_init( md2_context *ctx )
+{
+ memset( ctx, 0, sizeof( md2_context ) );
+}
+
+void md2_free( md2_context *ctx )
+{
+ if( ctx == NULL )
+ return;
+
+ polarssl_zeroize( ctx, sizeof( md2_context ) );
+}
+
/*
* MD2 context setup
*/
@@ -189,11 +202,11 @@
{
md2_context ctx;
+ md2_init( &ctx );
md2_starts( &ctx );
md2_update( &ctx, input, ilen );
md2_finish( &ctx, output );
-
- polarssl_zeroize( &ctx, sizeof( md2_context ) );
+ md2_free( &ctx );
}
#if defined(POLARSSL_FS_IO)
@@ -210,14 +223,14 @@
if( ( f = fopen( path, "rb" ) ) == NULL )
return( POLARSSL_ERR_MD2_FILE_IO_ERROR );
+ md2_init( &ctx );
md2_starts( &ctx );
while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
md2_update( &ctx, buf, n );
md2_finish( &ctx, output );
-
- polarssl_zeroize( &ctx, sizeof( md2_context ) );
+ md2_free( &ctx );
if( ferror( f ) != 0 )
{
@@ -304,11 +317,11 @@
{
md2_context ctx;
+ md2_init( &ctx );
md2_hmac_starts( &ctx, key, keylen );
md2_hmac_update( &ctx, input, ilen );
md2_hmac_finish( &ctx, output );
-
- polarssl_zeroize( &ctx, sizeof( md2_context ) );
+ md2_free( &ctx );
}
#if defined(POLARSSL_SELF_TEST)