[Ttssh2-commit] [7790] HMAC_CTX 構造体の使用をポインタ化した。

Zurück zum Archiv-Index
scmno****@osdn***** scmno****@osdn*****
2019年 6月 22日 (土) 18:40:41 JST


Revision: 7790
          https://osdn.net/projects/ttssh2/scm/svn/commits/7790
Author:   yutakapon
Date:     2019-06-22 18:40:40 +0900 (Sat, 22 Jun 2019)
Log Message:
-----------
HMAC_CTX 構造体の使用をポインタ化した。
HMAC_cleanup()の呼び出しを削除した。OpenSSL 1.1.0で削除され、HMAC_CTX_free()に集約されたため。
チケット #36876 

Ticket Links:
------------
    https://osdn.net/projects/ttssh2/tracker/detail/36876

Modified Paths:
--------------
    branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c

-------------- next part --------------
Modified: branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c
===================================================================
--- branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c	2019-06-22 07:55:24 UTC (rev 7789)
+++ branches/openssl_1_1_1_v2/ttssh2/ttxssh/crypt.c	2019-06-22 09:40:40 UTC (rev 7790)
@@ -660,7 +660,7 @@
 BOOL CRYPT_verify_receiver_MAC(PTInstVar pvar, uint32 sequence_number,
 	char *data, int len, char *MAC)
 {
-	HMAC_CTX c;
+	HMAC_CTX *c = NULL;
 	unsigned char m[EVP_MAX_MD_SIZE];
 	unsigned char b[4];
 	struct Mac *mac;
@@ -682,12 +682,17 @@
 		goto error;
 	}
 
-	HMAC_Init(&c, mac->key, mac->key_len, mac->md);
+	/********* OPENSSL1.1.1 NOTEST *********/
+	c = HMAC_CTX_new();
+	if (c == NULL)
+		goto error;
+
+	HMAC_Init(c, mac->key, mac->key_len, mac->md);
 	set_uint32_MSBfirst(b, sequence_number);
-	HMAC_Update(&c, b, sizeof(b));
-	HMAC_Update(&c, data, len);
-	HMAC_Final(&c, m, NULL);
-	HMAC_cleanup(&c);
+	HMAC_Update(c, b, sizeof(b));
+	HMAC_Update(c, data, len);
+	HMAC_Final(c, m, NULL);
+	// HMAC_cleanup()\x82\xCDOpenSSL 1.1.0\x82ō폜\x82\xB3\x82\xEA\x81AHMAC_CTX_free()\x82ɏW\x96񂳂ꂽ\x81B
 
 	if (memcmp(m, MAC, mac->mac_len)) {
 		logprintf(LOG_LEVEL_VERBOSE, "HMAC key is not matched(seq %lu len %d)", sequence_number, len);
@@ -696,9 +701,14 @@
 		goto error;
 	}
 
+	HMAC_CTX_free(c);
+
 	return TRUE;
 
 error:
+	if (c) 
+		HMAC_CTX_free(c);
+
 	return FALSE;
 }
 
@@ -721,7 +731,7 @@
 BOOL CRYPT_build_sender_MAC(PTInstVar pvar, uint32 sequence_number,
                             char *data, int len, char *MAC)
 {
-	HMAC_CTX c;
+	HMAC_CTX *c = NULL;
 	static u_char m[EVP_MAX_MD_SIZE];
 	u_char b[4];
 	struct Mac *mac;
@@ -731,17 +741,24 @@
 		if (mac == NULL || mac->enabled == 0) 
 			return FALSE;
 
-		HMAC_Init(&c, mac->key, mac->key_len, mac->md);
+		/********* OPENSSL1.1.1 NOTEST *********/
+		c = HMAC_CTX_new();
+		if (c == NULL)
+			return FALSE;
+
+		HMAC_Init(c, mac->key, mac->key_len, mac->md);
 		set_uint32_MSBfirst(b, sequence_number);
-		HMAC_Update(&c, b, sizeof(b));
-		HMAC_Update(&c, data, len);
-		HMAC_Final(&c, m, NULL);
-		HMAC_cleanup(&c);
+		HMAC_Update(c, b, sizeof(b));
+		HMAC_Update(c, data, len);
+		HMAC_Final(c, m, NULL);
+		// HMAC_cleanup()\x82\xCDOpenSSL 1.1.0\x82ō폜\x82\xB3\x82\xEA\x81AHMAC_CTX_free()\x82ɏW\x96񂳂ꂽ\x81B
 
 		// 20\x83o\x83C\x83g\x95\xAA\x82\xBE\x82\xAF\x83R\x83s\x81[
 		memcpy(MAC, m, pvar->ssh2_keys[MODE_OUT].mac.mac_len);
 	//	memcpy(MAC, m, sizeof(m));
 
+		HMAC_CTX_free(c);
+
 		return TRUE;
 	}
 


Ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index