Develop and Download Open Source Software

Browse Subversion Repository

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

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

revision 6064 by maya, Mon Oct 26 23:29:25 2015 UTC revision 6117 by maya, Wed Nov 11 22:38:30 2015 UTC
# Line 666  key_size(const Key *k) Line 666  key_size(const Key *k)
666          return 0;          return 0;
667  }  }
668    
669    static char *
670    key_fingerprint_hash(u_char *dgst_raw, u_int dgst_raw_len)
671    {
672            char *retval;
673            unsigned int i, retval_len;
674    
675            retval_len = dgst_raw_len * 3 + 1;
676            retval = malloc(retval_len);
677            retval[0] = '\0';
678            for (i = 0; i < dgst_raw_len; i++) {
679                    char hex[4];
680                    _snprintf_s(hex, sizeof(hex), _TRUNCATE, "%02x:", dgst_raw[i]);
681                    strncat_s(retval, retval_len, hex, _TRUNCATE);
682            }
683    
684            /* Remove the trailing ':' character */
685            retval[(dgst_raw_len * 3) - 1] = '\0';
686    
687            return (retval);
688    }
689    
690  // based on OpenSSH 5.1  // based on OpenSSH 5.1
691  #define FLDBASE         8  #define FLDBASE         8
692  #define FLDSIZE_Y       (FLDBASE + 1)  #define FLDSIZE_Y       (FLDBASE + 1)
# Line 753  key_fingerprint_randomart(u_char *dgst_r Line 774  key_fingerprint_randomart(u_char *dgst_r
774  //  //
775  // fingerprint(指紋:ホスト公開鍵のハッシュ)を生成する  // fingerprint(指紋:ホスト公開鍵のハッシュ)を生成する
776  //  //
777  char *key_fingerprint(Key *key, enum fp_rep dgst_rep)  char *key_fingerprint(Key *key, enum fp_rep dgst_rep, enum fp_type dgst_type)
778  {  {
779          char *retval = NULL;          char *retval = NULL;
780          unsigned char *dgst_raw;          unsigned char *dgst_raw;
781          int dgst_raw_len;          int dgst_raw_len;
         int i, retval_len;  
782    
783          // fingerprintのハッシュ値(バイナリ)を求める          // fingerprintのハッシュ値(バイナリ)を求める
784          dgst_raw = key_fingerprint_raw(key, SSH_FP_MD5, &dgst_raw_len);          dgst_raw = key_fingerprint_raw(key, dgst_type, &dgst_raw_len);
785          if (dgst_raw == NULL)          if (dgst_raw == NULL)
786                  return NULL;                  return NULL;
787    
788          if (dgst_rep == SSH_FP_HEX) {          if (dgst_rep == SSH_FP_HEX) {
789                  // 16進表記へ変換する                  retval = key_fingerprint_hash(dgst_raw, dgst_raw_len);
                 retval_len = dgst_raw_len * 3 + 1;  
                 retval = malloc(retval_len);  
                 retval[0] = '\0';  
                 for (i = 0; i < dgst_raw_len; i++) {  
                         char hex[4];  
                         _snprintf_s(hex, sizeof(hex), _TRUNCATE, "%02x:", dgst_raw[i]);  
                         strncat_s(retval, retval_len, hex, _TRUNCATE);  
                 }  
   
                 /* Remove the trailing ':' character */  
                 retval[(dgst_raw_len * 3) - 1] = '\0';  
790    
791          } else if (dgst_rep == SSH_FP_RANDOMART) {          } else if (dgst_rep == SSH_FP_RANDOMART) {
792                  retval = key_fingerprint_randomart(dgst_raw, dgst_raw_len, key);                  retval = key_fingerprint_randomart(dgst_raw, dgst_raw_len, key);
# Line 1954  static BOOL CALLBACK hosts_updatekey_dlg Line 1963  static BOOL CALLBACK hosts_updatekey_dlg
1963                  for (i = 0; i < ctx->nkeys; i++) {                  for (i = 0; i < ctx->nkeys; i++) {
1964                          if (ctx->keys_seen[i])                          if (ctx->keys_seen[i])
1965                                  continue;                                  continue;
1966                          fp = key_fingerprint(ctx->keys[i], SSH_FP_HEX);                          fp = key_fingerprint(ctx->keys[i], SSH_FP_HEX, SSH_FP_MD5);
1967                          buf[0] = 0;                          buf[0] = 0;
1968                          strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->keys[i]));                          strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->keys[i]));
1969                          strcat_s(buf, sizeof(buf), " ");                          strcat_s(buf, sizeof(buf), " ");
# Line 1969  static BOOL CALLBACK hosts_updatekey_dlg Line 1978  static BOOL CALLBACK hosts_updatekey_dlg
1978                  _snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, ctx->nold);                  _snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, ctx->nold);
1979                  SetDlgItemText(dlg, IDC_REMOVEKEY_TEXT, buf);                  SetDlgItemText(dlg, IDC_REMOVEKEY_TEXT, buf);
1980                  for (i = 0; i < ctx->nold; i++) {                  for (i = 0; i < ctx->nold; i++) {
1981                          fp = key_fingerprint(ctx->old_keys[i], SSH_FP_HEX);                          fp = key_fingerprint(ctx->old_keys[i], SSH_FP_HEX, SSH_FP_MD5);
1982                          buf[0] = 0;                          buf[0] = 0;
1983                          strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->old_keys[i]));                          strcat_s(buf, sizeof(buf), get_sshname_from_key(ctx->old_keys[i]));
1984                          strcat_s(buf, sizeof(buf), " ");                          strcat_s(buf, sizeof(buf), " ");
# Line 2227  int update_client_input_hostkeys(PTInstV Line 2236  int update_client_input_hostkeys(PTInstV
2236                  free(blob);                  free(blob);
2237                  blob = NULL;                  blob = NULL;
2238    
2239                  fp = key_fingerprint(key, SSH_FP_HEX);                  fp = key_fingerprint(key, SSH_FP_HEX, SSH_FP_MD5);
2240                  _snprintf_s(msg, sizeof(msg), _TRUNCATE, "Received %s host key %s",                  _snprintf_s(msg, sizeof(msg), _TRUNCATE, "Received %s host key %s",
2241                          get_sshname_from_key(key), fp);                          get_sshname_from_key(key), fp);
2242                  notify_verbose_message(pvar, msg, LOG_LEVEL_VERBOSE);                  notify_verbose_message(pvar, msg, LOG_LEVEL_VERBOSE);

Legend:
Removed from v.6064  
changed lines
  Added in v.6117

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