Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/crypt.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6229 by yutakapon, Fri Jan 1 11:06:37 2016 UTC revision 6302 by yutakapon, Sat Feb 13 14:52:14 2016 UTC
# Line 1038  int CRYPT_get_receiver_MAC_size(PTInstVa Line 1038  int CRYPT_get_receiver_MAC_size(PTInstVa
1038  // ※本関数は SSH2 でのみ使用される。  // ※本関数は SSH2 でのみ使用される。
1039  // (2004.12.17 yutaka)  // (2004.12.17 yutaka)
1040  BOOL CRYPT_verify_receiver_MAC(PTInstVar pvar, uint32 sequence_number,  BOOL CRYPT_verify_receiver_MAC(PTInstVar pvar, uint32 sequence_number,
1041                                 char FAR * data, int len, char FAR * MAC)          char FAR * data, int len, char FAR * MAC)
1042  {  {
1043          HMAC_CTX c;          HMAC_CTX c;
1044          unsigned char m[EVP_MAX_MD_SIZE];          unsigned char m[EVP_MAX_MD_SIZE];
# Line 1048  BOOL CRYPT_verify_receiver_MAC(PTInstVar Line 1048  BOOL CRYPT_verify_receiver_MAC(PTInstVar
1048          mac = &pvar->ssh2_keys[MODE_IN].mac;          mac = &pvar->ssh2_keys[MODE_IN].mac;
1049    
1050          // HMACがまだ有効でない場合は、検証OKとして返す。          // HMACがまだ有効でない場合は、検証OKとして返す。
1051          if (mac == NULL || mac->enabled == 0)          if (mac == NULL || mac->enabled == 0)
1052                  return TRUE;                  return TRUE;
1053    
1054          if (mac->key == NULL)          if (mac->key == NULL) {
1055                    logprintf(pvar, LOG_LEVEL_VERBOSE, "HMAC key is NULL(seq %lu len %d)", sequence_number, len);
1056                  goto error;                  goto error;
1057            }
1058    
1059          if ((u_int)mac->mac_len > sizeof(m))          if ((u_int)mac->mac_len > sizeof(m)) {
1060                    logprintf(pvar, LOG_LEVEL_VERBOSE, "HMAC len(%d) is larger than %d bytes(seq %lu len %d)",
1061                            mac->mac_len, sizeof(m), sequence_number, len);
1062                  goto error;                  goto error;
1063            }
1064    
1065          HMAC_Init(&c, mac->key, mac->key_len, mac->md);          HMAC_Init(&c, mac->key, mac->key_len, mac->md);
1066          set_uint32_MSBfirst(b, sequence_number);          set_uint32_MSBfirst(b, sequence_number);
# Line 1065  BOOL CRYPT_verify_receiver_MAC(PTInstVar Line 1070  BOOL CRYPT_verify_receiver_MAC(PTInstVar
1070          HMAC_cleanup(&c);          HMAC_cleanup(&c);
1071    
1072          if (memcmp(m, MAC, mac->mac_len)) {          if (memcmp(m, MAC, mac->mac_len)) {
1073                    logprintf(pvar, LOG_LEVEL_VERBOSE, "HMAC key is not matched(seq %lu len %d)", sequence_number, len);
1074                    logprintf_hexdump(pvar, LOG_LEVEL_VERBOSE, m, mac->mac_len, "m:");
1075                    logprintf_hexdump(pvar, LOG_LEVEL_VERBOSE, MAC, mac->mac_len, "MAC:");
1076                  goto error;                  goto error;
1077          }          }
1078    

Legend:
Removed from v.6229  
changed lines
  Added in v.6302

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26