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; }