Develop and Download Open Source Software

Browse Subversion Repository

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

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

revision 2856 by yutakakn, Sun Mar 26 15:43:58 2006 UTC revision 2857 by yutakakn, Sun Mar 26 17:07:18 2006 UTC
# Line 3112  void debug_print(int no, char *msg, int Line 3112  void debug_print(int no, char *msg, int
3112  // クライアントからサーバへの提案事項  // クライアントからサーバへの提案事項
3113  #ifdef SSH2_DEBUG  #ifdef SSH2_DEBUG
3114  static char *myproposal[PROPOSAL_MAX] = {  static char *myproposal[PROPOSAL_MAX] = {
3115          "diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1",  //      "diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1",
3116  //      "diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1",          "diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1",
3117          "ssh-rsa,ssh-dss",  //      "ssh-rsa,ssh-dss",
3118  //      "ssh-dss,ssh-rsa",          "ssh-dss,ssh-rsa",
3119          "3des-cbc,aes128-cbc",          "3des-cbc,aes128-cbc",
3120          "3des-cbc,aes128-cbc",          "3des-cbc,aes128-cbc",
3121          "hmac-md5,hmac-sha1",          "hmac-md5,hmac-sha1",
# Line 4557  error: Line 4557  error:
4557  }  }
4558    
4559    
4560    static char* key_fingerprint_raw(Key *k, int *dgst_raw_length)
4561    {
4562            const EVP_MD *md = NULL;
4563            EVP_MD_CTX ctx;
4564            char *blob = NULL;
4565            char *retval = NULL;
4566            int len = 0;
4567            int nlen, elen;
4568            RSA *rsa;
4569    
4570            *dgst_raw_length = 0;
4571    
4572            // MD5アルゴリズムを使用する
4573            md = EVP_md5();
4574    
4575            switch (k->type) {
4576            case KEY_RSA1:
4577                    rsa = make_key(NULL, k->bits, k->exp, k->mod);
4578                    nlen = BN_num_bytes(rsa->n);
4579                    elen = BN_num_bytes(rsa->e);
4580                    len = nlen + elen;
4581                    blob = malloc(len);
4582                    if (blob == NULL) {
4583                            // TODO:
4584                    }
4585                    BN_bn2bin(rsa->n, blob);
4586                    BN_bn2bin(rsa->e, blob + nlen);
4587                    RSA_free(rsa);
4588                    break;
4589    
4590            case KEY_DSA:
4591            case KEY_RSA:
4592                    key_to_blob(k, &blob, &len);
4593                    break;
4594    
4595            case KEY_UNSPEC:
4596                    return retval;
4597                    break;
4598    
4599            default:
4600                    //fatal("key_fingerprint_raw: bad key type %d", k->type);
4601                    break;
4602            }
4603    
4604            if (blob != NULL) {
4605                    retval = malloc(EVP_MAX_MD_SIZE);
4606                    if (retval == NULL) {
4607                            // TODO:
4608                    }
4609                    EVP_DigestInit(&ctx, md);
4610                    EVP_DigestUpdate(&ctx, blob, len);
4611                    EVP_DigestFinal(&ctx, retval, dgst_raw_length);
4612                    memset(blob, 0, len);
4613                    free(blob);
4614            } else {
4615                    //fatal("key_fingerprint_raw: blob is null");
4616            }
4617            return retval;
4618    }
4619    
4620    
4621    //
4622    // fingerprint(指紋:ホスト公開鍵のハッシュ)を生成する
4623    //
4624    char *key_fingerprint(Key *key)
4625    {
4626            char *retval = NULL;
4627            unsigned char *dgst_raw;
4628            int dgst_raw_len;
4629            int i;
4630    
4631            // fingerprintのハッシュ値(バイナリ)を求める
4632            dgst_raw = key_fingerprint_raw(key, &dgst_raw_len);
4633    
4634            // 16進表記へ変換する
4635            retval = malloc(dgst_raw_len * 3 + 1);
4636            retval[0] = '\0';
4637            for (i = 0; i < dgst_raw_len; i++) {
4638                    char hex[4];
4639                    _snprintf(hex, sizeof(hex), "%02x:", dgst_raw[i]);
4640                    strcat(retval, hex);  // TODO: 代わりに strcat_s() を使うか?
4641            }
4642    
4643            /* Remove the trailing ':' character */
4644            retval[(dgst_raw_len * 3) - 1] = '\0';
4645    
4646            memset(dgst_raw, 0, dgst_raw_len);
4647            free(dgst_raw);
4648    
4649            return (retval);
4650    }
4651    
4652    
4653  //  //
4654  // キーのメモリ領域解放  // キーのメモリ領域解放
4655  //  //
# Line 6721  static BOOL handle_SSH2_window_adjust(PT Line 6814  static BOOL handle_SSH2_window_adjust(PT
6814    
6815  /*  /*
6816   * $Log: not supported by cvs2svn $   * $Log: not supported by cvs2svn $
6817     * Revision 1.41  2006/03/26 15:43:58  yutakakn
6818     * SSH2のknown_hosts対応を追加した。
6819     *
6820   * Revision 1.40  2006/03/06 14:43:49  yutakakn   * Revision 1.40  2006/03/06 14:43:49  yutakakn
6821   * SSH2ウィンドウ制御の見直しにより、スループットを向上させた。   * SSH2ウィンドウ制御の見直しにより、スループットを向上させた。
6822   *   *

Legend:
Removed from v.2856  
changed lines
  Added in v.2857

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