diff --git a/common-kex.c b/common-kex.c
index a7fbb70bb4121bb08cf355fe3cf2cc46661c57e1..56b206d3b4e36bc76a38ae7cedbab57ea11c1104 100644
--- a/common-kex.c
+++ b/common-kex.c
@@ -354,17 +354,17 @@ void gen_new_keys() {
 		}
 	}
 
-	/* MAC keys */
 	if (ses.newkeys->trans.algo_mac->hashdesc != NULL) {
 		hashkeys(ses.newkeys->trans.mackey, 
 				ses.newkeys->trans.algo_mac->keysize, &hs, mactransletter);
+		ses.newkeys->trans.hash_index = find_hash(ses.newkeys->trans.algo_mac->hashdesc->name);
 	}
+
 	if (ses.newkeys->recv.algo_mac->hashdesc != NULL) {
 		hashkeys(ses.newkeys->recv.mackey, 
 				ses.newkeys->recv.algo_mac->keysize, &hs, macrecvletter);
+		ses.newkeys->recv.hash_index = find_hash(ses.newkeys->recv.algo_mac->hashdesc->name);
 	}
-	ses.newkeys->trans.hash_index = find_hash(ses.newkeys->trans.algo_mac->hashdesc->name),
-	ses.newkeys->recv.hash_index = find_hash(ses.newkeys->recv.algo_mac->hashdesc->name),
 
 #ifndef DISABLE_ZLIB
 	gen_new_zstreams();
diff --git a/session.h b/session.h
index e9695fe022ea0852e20c4a8d9c89a3eb11c2c794..4669a8e4f044d6bab9dc1c734441fba18a47ea58 100644
--- a/session.h
+++ b/session.h
@@ -63,9 +63,9 @@ void cleantext(unsigned char* dirtytext);
 
 /* crypto parameters that are stored individually for transmit and receive */
 struct key_context_directional {
-	const struct dropbear_cipher *algo_crypt; /* NULL for none */
+	const struct dropbear_cipher *algo_crypt;
 	const struct dropbear_cipher_mode *crypt_mode;
-	const struct dropbear_hash *algo_mac; /* NULL for none */
+	const struct dropbear_hash *algo_mac;
 	int hash_index; /* lookup for libtomcrypt */
 	char algo_comp; /* compression */
 #ifndef DISABLE_ZLIB