Separate SHA224 from SHA256 config options.

These options are still dependant on each other.
This is an intermediate step.

Signed-off-by: Mateusz Starzyk <mateusz.starzyk@mobica.com>
diff --git a/library/md.c b/library/md.c
index d9ff699..28261ac 100644
--- a/library/md.c
+++ b/library/md.c
@@ -97,14 +97,16 @@
 };
 #endif
 
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
 const mbedtls_md_info_t mbedtls_sha224_info = {
     "SHA224",
     MBEDTLS_MD_SHA224,
     28,
     64,
 };
+#endif
 
+#if defined(MBEDTLS_SHA256_C)
 const mbedtls_md_info_t mbedtls_sha256_info = {
     "SHA256",
     MBEDTLS_MD_SHA256,
@@ -146,6 +148,8 @@
 
 #if defined(MBEDTLS_SHA256_C)
         MBEDTLS_MD_SHA256,
+#endif
+#if defined(MBEDTLS_SHA224_C)
         MBEDTLS_MD_SHA224,
 #endif
 
@@ -203,9 +207,11 @@
     if( !strcmp( "SHA1", md_name ) || !strcmp( "SHA", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA1 );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
     if( !strcmp( "SHA224", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA224 );
+#endif
+#if defined(MBEDTLS_SHA256_C)
     if( !strcmp( "SHA256", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA256 );
 #endif
@@ -244,9 +250,11 @@
         case MBEDTLS_MD_SHA1:
             return( &mbedtls_sha1_info );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
             return( &mbedtls_sha224_info );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( &mbedtls_sha256_info );
 #endif
@@ -302,8 +310,12 @@
                 mbedtls_sha1_free( ctx->md_ctx );
                 break;
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
             case MBEDTLS_MD_SHA224:
+                mbedtls_sha256_free( ctx->md_ctx );
+                break;
+#endif
+#if defined(MBEDTLS_SHA256_C)
             case MBEDTLS_MD_SHA256:
                 mbedtls_sha256_free( ctx->md_ctx );
                 break;
@@ -372,8 +384,12 @@
             mbedtls_sha1_clone( dst->md_ctx, src->md_ctx );
             break;
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
+            mbedtls_sha256_clone( dst->md_ctx, src->md_ctx );
+            break;
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             mbedtls_sha256_clone( dst->md_ctx, src->md_ctx );
             break;
@@ -440,8 +456,12 @@
             ALLOC( sha1 );
             break;
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
+            ALLOC( sha256 );
+            break;
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             ALLOC( sha256 );
             break;
@@ -501,9 +521,11 @@
         case MBEDTLS_MD_SHA1:
             return( mbedtls_sha1_starts_ret( ctx->md_ctx ) );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
             return( mbedtls_sha256_starts_ret( ctx->md_ctx, 1 ) );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( mbedtls_sha256_starts_ret( ctx->md_ctx, 0 ) );
 #endif
@@ -547,8 +569,11 @@
         case MBEDTLS_MD_SHA1:
             return( mbedtls_sha1_update_ret( ctx->md_ctx, input, ilen ) );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
+            return( mbedtls_sha256_update_ret( ctx->md_ctx, input, ilen ) );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( mbedtls_sha256_update_ret( ctx->md_ctx, input, ilen ) );
 #endif
@@ -592,8 +617,11 @@
         case MBEDTLS_MD_SHA1:
             return( mbedtls_sha1_finish_ret( ctx->md_ctx, output ) );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
+            return( mbedtls_sha256_finish_ret( ctx->md_ctx, output ) );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( mbedtls_sha256_finish_ret( ctx->md_ctx, output ) );
 #endif
@@ -638,9 +666,11 @@
         case MBEDTLS_MD_SHA1:
             return( mbedtls_sha1_ret( input, ilen, output ) );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
             return( mbedtls_sha256_ret( input, ilen, output, 1 ) );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( mbedtls_sha256_ret( input, ilen, output, 0 ) );
 #endif
@@ -848,8 +878,11 @@
         case MBEDTLS_MD_SHA1:
             return( mbedtls_internal_sha1_process( ctx->md_ctx, data ) );
 #endif
-#if defined(MBEDTLS_SHA256_C)
+#if defined(MBEDTLS_SHA224_C)
         case MBEDTLS_MD_SHA224:
+            return( mbedtls_internal_sha256_process( ctx->md_ctx, data ) );
+#endif
+#if defined(MBEDTLS_SHA256_C)
         case MBEDTLS_MD_SHA256:
             return( mbedtls_internal_sha256_process( ctx->md_ctx, data ) );
 #endif