crypt_and_hash: check MAC earlier
diff --git a/ChangeLog b/ChangeLog
index 7f76b7f..12bbaf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
Bugfix
* Fixed X.509 hostname comparison (with non-regular characters)
* SSL now gracefully handles missing RNG
+ * crypt_and_hash app checks MAC before final decryption
= Version 1.2.10 released 2013-10-07
Changes
diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c
index 37d9d30..0448440 100644
--- a/programs/aes/crypt_and_hash.c
+++ b/programs/aes/crypt_and_hash.c
@@ -454,17 +454,6 @@
}
/*
- * Write the final block of data
- */
- cipher_finish( &cipher_ctx, output, &olen );
-
- if( fwrite( output, 1, olen, fout ) != olen )
- {
- fprintf( stderr, "fwrite(%ld bytes) failed\n", (long) olen );
- goto exit;
- }
-
- /*
* Verify the message authentication code.
*/
md_hmac_finish( &md_ctx, digest );
@@ -486,6 +475,17 @@
"or file corrupted.\n" );
goto exit;
}
+
+ /*
+ * Write the final block of data
+ */
+ cipher_finish( &cipher_ctx, output, &olen );
+
+ if( fwrite( output, 1, olen, fout ) != olen )
+ {
+ fprintf( stderr, "fwrite(%ld bytes) failed\n", (long) olen );
+ goto exit;
+ }
}
ret = 0;