Develop and Download Open Source Software

Browse Subversion Repository

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

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

revision 9208 by nmaya, Sat Apr 17 06:15:51 2021 UTC revision 9210 by nmaya, Sat Apr 17 08:36:59 2021 UTC
# Line 40  See LICENSE.TXT for the license. Line 40  See LICENSE.TXT for the license.
40    
41  #include "buffer.h"  #include "buffer.h"
42  #include "config.h"  #include "config.h"
43    #include "cipher.h"
44    #include "hostkey.h"
45    #include "mac.h"
46    #include "comp.h"
47  #include <sys/types.h>  #include <sys/types.h>
48  #include <sys/stat.h>  #include <sys/stat.h>
49    
# Line 82  typedef enum { Line 86  typedef enum {
86  } SSHMessage;  } SSHMessage;
87    
88  typedef enum {  typedef enum {
         // SSH1  
         SSH_CIPHER_NONE, SSH_CIPHER_IDEA, SSH_CIPHER_DES, SSH_CIPHER_3DES,  
         SSH_CIPHER_TSS, SSH_CIPHER_RC4, SSH_CIPHER_BLOWFISH,  
         // SSH2  
         SSH2_CIPHER_3DES_CBC, SSH2_CIPHER_AES128_CBC,  
         SSH2_CIPHER_AES192_CBC, SSH2_CIPHER_AES256_CBC,  
         SSH2_CIPHER_BLOWFISH_CBC, SSH2_CIPHER_AES128_CTR,  
         SSH2_CIPHER_AES192_CTR, SSH2_CIPHER_AES256_CTR,  
         SSH2_CIPHER_ARCFOUR, SSH2_CIPHER_ARCFOUR128, SSH2_CIPHER_ARCFOUR256,  
         SSH2_CIPHER_CAST128_CBC,  
         SSH2_CIPHER_3DES_CTR, SSH2_CIPHER_BLOWFISH_CTR, SSH2_CIPHER_CAST128_CTR,  
         SSH2_CIPHER_CAMELLIA128_CBC, SSH2_CIPHER_CAMELLIA192_CBC, SSH2_CIPHER_CAMELLIA256_CBC,  
         SSH2_CIPHER_CAMELLIA128_CTR, SSH2_CIPHER_CAMELLIA192_CTR, SSH2_CIPHER_CAMELLIA256_CTR,  
         SSH2_CIPHER_AES128_GCM, SSH2_CIPHER_AES256_GCM,  
         SSH_CIPHER_MAX = SSH2_CIPHER_AES256_GCM,  
 } SSHCipherId;  
   
 typedef enum {  
89          SSH_AUTH_NONE, SSH_AUTH_RHOSTS, SSH_AUTH_RSA, SSH_AUTH_PASSWORD,          SSH_AUTH_NONE, SSH_AUTH_RHOSTS, SSH_AUTH_RSA, SSH_AUTH_PASSWORD,
90          SSH_AUTH_RHOSTS_RSA, SSH_AUTH_TIS, SSH_AUTH_KERBEROS,          SSH_AUTH_RHOSTS_RSA, SSH_AUTH_TIS, SSH_AUTH_KERBEROS,
91          SSH_AUTH_PAGEANT = 16,          SSH_AUTH_PAGEANT = 16,
# Line 298  typedef enum { Line 284  typedef enum {
284  } SSH2TTYMode;  } SSH2TTYMode;
285    
286    
 // クライアントからサーバへの提案事項  
 enum kex_init_proposals {  
         PROPOSAL_KEX_ALGS,  
         PROPOSAL_SERVER_HOST_KEY_ALGS,  
         PROPOSAL_ENC_ALGS_CTOS,  
         PROPOSAL_ENC_ALGS_STOC,  
         PROPOSAL_MAC_ALGS_CTOS,  
         PROPOSAL_MAC_ALGS_STOC,  
         PROPOSAL_COMP_ALGS_CTOS,  
         PROPOSAL_COMP_ALGS_STOC,  
         PROPOSAL_LANG_CTOS,  
         PROPOSAL_LANG_STOC,  
         PROPOSAL_MAX  
 };  
   
 #define KEX_DEFAULT_KEX     ""  
 #define KEX_DEFAULT_PK_ALG  ""  
 #define KEX_DEFAULT_ENCRYPT ""  
 #define KEX_DEFAULT_MAC     ""  
 #define KEX_DEFAULT_COMP    ""  
 #define KEX_DEFAULT_LANG    ""  
   
 static char *myproposal[PROPOSAL_MAX] = {  
         KEX_DEFAULT_KEX,  
         KEX_DEFAULT_PK_ALG,  
         KEX_DEFAULT_ENCRYPT,  
         KEX_DEFAULT_ENCRYPT,  
         KEX_DEFAULT_MAC,  
         KEX_DEFAULT_MAC,  
         KEX_DEFAULT_COMP,  
         KEX_DEFAULT_COMP,  
         KEX_DEFAULT_LANG,  
         KEX_DEFAULT_LANG,  
 };  
   
   
 typedef enum {  
         KEY_NONE,  
         KEY_RSA1,  
         KEY_RSA,  
         KEY_DSA,  
         KEY_ECDSA256,  
         KEY_ECDSA384,  
         KEY_ECDSA521,  
         KEY_ED25519,  
         KEY_UNSPEC,  
         KEY_MAX = KEY_UNSPEC,  
 } ssh_keytype;  
287  #define isFixedLengthKey(type)  ((type) >= KEY_DSA && (type) <= KEY_ED25519)  #define isFixedLengthKey(type)  ((type) >= KEY_DSA && (type) <= KEY_ED25519)
288    
 typedef struct ssh2_host_key {  
         ssh_keytype type;  
         char *name;  
 } ssh2_host_key_t;  
   
 static ssh2_host_key_t ssh2_host_key[] = {  
         {KEY_RSA1,     "ssh-rsa1"},            // for SSH1 only  
         {KEY_RSA,      "ssh-rsa"},             // RFC4253  
         {KEY_DSA,      "ssh-dss"},             // RFC4253  
         {KEY_ECDSA256, "ecdsa-sha2-nistp256"}, // RFC5656  
         {KEY_ECDSA384, "ecdsa-sha2-nistp384"}, // RFC5656  
         {KEY_ECDSA521, "ecdsa-sha2-nistp521"}, // RFC5656  
         {KEY_ED25519,  "ssh-ed25519"},         // draft-bjh21-ssh-ed25519-02  
         {KEY_UNSPEC,   "ssh-unknown"},  
         {KEY_NONE,     NULL},  
 };  
   
289  /* Minimum modulus size (n) for RSA keys. */  /* Minimum modulus size (n) for RSA keys. */
290  #define SSH_RSA_MINIMUM_MODULUS_SIZE    768  #define SSH_RSA_MINIMUM_MODULUS_SIZE    768
291    
# Line 376  static ssh2_host_key_t ssh2_host_key[] = Line 297  static ssh2_host_key_t ssh2_host_key[] =
297  #define SSH_KEYGEN_MAXIMUM_ROUNDS INT_MAX  #define SSH_KEYGEN_MAXIMUM_ROUNDS INT_MAX
298    
299    
 typedef struct ssh2_cipher {  
         SSHCipherId id;  
         char *name;  
         int block_size;  
         int key_len;  
         int discard_len;  
         int iv_len;  
         int auth_len;  
         const EVP_CIPHER *(*func)(void);  
 } SSH2Cipher;  
   
 static SSH2Cipher ssh2_ciphers[] = {  
         {SSH2_CIPHER_3DES_CBC,        "3des-cbc",         8, 24,    0, 0, 0, EVP_des_ede3_cbc},     // RFC4253  
         {SSH2_CIPHER_AES128_CBC,      "aes128-cbc",      16, 16,    0, 0, 0, EVP_aes_128_cbc},      // RFC4253  
         {SSH2_CIPHER_AES192_CBC,      "aes192-cbc",      16, 24,    0, 0, 0, EVP_aes_192_cbc},      // RFC4253  
         {SSH2_CIPHER_AES256_CBC,      "aes256-cbc",      16, 32,    0, 0, 0, EVP_aes_256_cbc},      // RFC4253  
         {SSH2_CIPHER_BLOWFISH_CBC,    "blowfish-cbc",     8, 16,    0, 0, 0, EVP_bf_cbc},           // RFC4253  
         {SSH2_CIPHER_AES128_CTR,      "aes128-ctr",      16, 16,    0, 0, 0, evp_aes_128_ctr},      // RFC4344  
         {SSH2_CIPHER_AES192_CTR,      "aes192-ctr",      16, 24,    0, 0, 0, evp_aes_128_ctr},      // RFC4344  
         {SSH2_CIPHER_AES256_CTR,      "aes256-ctr",      16, 32,    0, 0, 0, evp_aes_128_ctr},      // RFC4344  
         {SSH2_CIPHER_ARCFOUR,         "arcfour",          8, 16,    0, 0, 0, EVP_rc4},              // RFC4253  
         {SSH2_CIPHER_ARCFOUR128,      "arcfour128",       8, 16, 1536, 0, 0, EVP_rc4},              // RFC4345  
         {SSH2_CIPHER_ARCFOUR256,      "arcfour256",       8, 32, 1536, 0, 0, EVP_rc4},              // RFC4345  
         {SSH2_CIPHER_CAST128_CBC,     "cast128-cbc",      8, 16,    0, 0, 0, EVP_cast5_cbc},        // RFC4253  
         {SSH2_CIPHER_3DES_CTR,        "3des-ctr",         8, 24,    0, 0, 0, evp_des3_ctr},         // RFC4344  
         {SSH2_CIPHER_BLOWFISH_CTR,    "blowfish-ctr",     8, 32,    0, 0, 0, evp_bf_ctr},           // RFC4344  
         {SSH2_CIPHER_CAST128_CTR,     "cast128-ctr",      8, 16,    0, 0, 0, evp_cast5_ctr},        // RFC4344  
         {SSH2_CIPHER_CAMELLIA128_CBC, "camellia128-cbc", 16, 16,    0, 0, 0, EVP_camellia_128_cbc}, // draft-kanno-secsh-camellia-02  
         {SSH2_CIPHER_CAMELLIA192_CBC, "camellia192-cbc", 16, 24,    0, 0, 0, EVP_camellia_192_cbc}, // draft-kanno-secsh-camellia-02  
         {SSH2_CIPHER_CAMELLIA256_CBC, "camellia256-cbc", 16, 32,    0, 0, 0, EVP_camellia_256_cbc}, // draft-kanno-secsh-camellia-02  
         {SSH2_CIPHER_CAMELLIA128_CTR, "camellia128-ctr", 16, 16,    0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02  
         {SSH2_CIPHER_CAMELLIA192_CTR, "camellia192-ctr", 16, 24,    0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02  
         {SSH2_CIPHER_CAMELLIA256_CTR, "camellia256-ctr", 16, 32,    0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02  
 #ifdef WITH_CAMELLIA_PRIVATE  
         {SSH2_CIPHER_CAMELLIA128_CBC, "camellia128-cbc@openssh.org", 16, 16, 0,  0,  0, EVP_camellia_128_cbc},  
         {SSH2_CIPHER_CAMELLIA192_CBC, "camellia192-cbc@openssh.org", 16, 24, 0,  0,  0, EVP_camellia_192_cbc},  
         {SSH2_CIPHER_CAMELLIA256_CBC, "camellia256-cbc@openssh.org", 16, 32, 0,  0,  0, EVP_camellia_256_cbc},  
         {SSH2_CIPHER_CAMELLIA128_CTR, "camellia128-ctr@openssh.org", 16, 16, 0,  0,  0, evp_camellia_128_ctr},  
         {SSH2_CIPHER_CAMELLIA192_CTR, "camellia192-ctr@openssh.org", 16, 24, 0,  0,  0, evp_camellia_128_ctr},  
         {SSH2_CIPHER_CAMELLIA256_CTR, "camellia256-ctr@openssh.org", 16, 32, 0,  0,  0, evp_camellia_128_ctr},  
 #endif // WITH_CAMELLIA_PRIVATE  
         {SSH2_CIPHER_AES128_GCM,      "aes128-gcm@openssh.com",      16, 16, 0, 12, 16, EVP_aes_128_gcm}, // not RFC5647, PROTOCOL of OpenSSH  
         {SSH2_CIPHER_AES256_GCM,      "aes256-gcm@openssh.com",      16, 32, 0, 12, 16, EVP_aes_256_gcm}, // not RFC5647, PROTOCOL of OpenSSH  
         {SSH_CIPHER_NONE,             NULL,               0,  0,    0, 0, 0, NULL},  
 };  
   
   
 typedef enum {  
         KEX_DH_NONE,       /* disabled line */  
         KEX_DH_GRP1_SHA1,  
         KEX_DH_GRP14_SHA1,  
         KEX_DH_GEX_SHA1,  
         KEX_DH_GEX_SHA256,  
         KEX_ECDH_SHA2_256,  
         KEX_ECDH_SHA2_384,  
         KEX_ECDH_SHA2_521,  
         KEX_DH_GRP14_SHA256,  
         KEX_DH_GRP16_SHA512,  
         KEX_DH_GRP18_SHA512,  
         KEX_DH_UNKNOWN,  
         KEX_DH_MAX = KEX_DH_UNKNOWN,  
 } kex_algorithm;  
   
 typedef struct ssh2_kex_algorithm {  
         kex_algorithm kextype;  
         char *name;  
         const EVP_MD *(*evp_md)(void);  
 } ssh2_kex_algorithm_t;  
   
 static ssh2_kex_algorithm_t ssh2_kex_algorithms[] = {  
         {KEX_DH_GRP1_SHA1,  "diffie-hellman-group1-sha1",           EVP_sha1},   // RFC4253  
         {KEX_DH_GRP14_SHA1, "diffie-hellman-group14-sha1",          EVP_sha1},   // RFC4253  
         {KEX_DH_GEX_SHA1,   "diffie-hellman-group-exchange-sha1",   EVP_sha1},   // RFC4419  
         {KEX_DH_GEX_SHA256, "diffie-hellman-group-exchange-sha256", EVP_sha256}, // RFC4419  
         {KEX_ECDH_SHA2_256, "ecdh-sha2-nistp256",                   EVP_sha256}, // RFC5656  
         {KEX_ECDH_SHA2_384, "ecdh-sha2-nistp384",                   EVP_sha384}, // RFC5656  
         {KEX_ECDH_SHA2_521, "ecdh-sha2-nistp521",                   EVP_sha512}, // RFC5656  
         {KEX_DH_GRP14_SHA256, "diffie-hellman-group14-sha256",      EVP_sha256}, // RFC8268  
         {KEX_DH_GRP16_SHA512, "diffie-hellman-group16-sha512",      EVP_sha512}, // RFC8268  
         {KEX_DH_GRP18_SHA512, "diffie-hellman-group18-sha512",      EVP_sha512}, // RFC8268  
         {KEX_DH_NONE      , NULL,                                   NULL},  
 };  
   
   
 typedef enum {  
         HMAC_NONE,      /* disabled line */  
         HMAC_SHA1,  
         HMAC_MD5,  
         HMAC_SHA1_96,  
         HMAC_MD5_96,  
         HMAC_RIPEMD160,  
         HMAC_SHA2_256,  
         HMAC_SHA2_256_96,  
         HMAC_SHA2_512,  
         HMAC_SHA2_512_96,  
         HMAC_SHA1_EtM,  
         HMAC_MD5_EtM,  
         HMAC_SHA1_96_EtM,  
         HMAC_MD5_96_EtM,  
         HMAC_RIPEMD160_EtM,  
         HMAC_SHA2_256_EtM,  
         HMAC_SHA2_512_EtM,  
         HMAC_IMPLICIT,  
         HMAC_UNKNOWN,  
         HMAC_MAX = HMAC_UNKNOWN,  
 } SSH2MacId;  
   
 typedef struct ssh2_mac {  
         SSH2MacId id;  
         char *name;  
         const EVP_MD *(*evp_md)(void);  
         int truncatebits;  
         int etm;  
 } SSH2Mac;  
   
 static SSH2Mac ssh2_macs[] = {  
         {HMAC_SHA1,         "hmac-sha1",                     EVP_sha1,      0,  0}, // RFC4253  
         {HMAC_MD5,          "hmac-md5",                      EVP_md5,       0,  0}, // RFC4253  
         {HMAC_SHA1_96,      "hmac-sha1-96",                  EVP_sha1,      96, 0}, // RFC4253  
         {HMAC_MD5_96,       "hmac-md5-96",                   EVP_md5,       96, 0}, // RFC4253  
         {HMAC_RIPEMD160,    "hmac-ripemd160@openssh.com",    EVP_ripemd160, 0,  0},  
         {HMAC_SHA2_256,     "hmac-sha2-256",                 EVP_sha256,    0,  0}, // RFC6668  
 //      {HMAC_SHA2_256_96,  "hmac-sha2-256-96",              EVP_sha256,    96, 0}, // draft-dbider-sha2-mac-for-ssh-05, deleted at 06  
         {HMAC_SHA2_512,     "hmac-sha2-512",                 EVP_sha512,    0,  0}, // RFC6668  
 //      {HMAC_SHA2_512_96,  "hmac-sha2-512-96",              EVP_sha512,    96, 0}, // draft-dbider-sha2-mac-for-ssh-05, deleted at 06  
         {HMAC_SHA1_EtM,     "hmac-sha1-etm@openssh.com",     EVP_sha1,      0,  1},  
         {HMAC_MD5_EtM,      "hmac-md5-etm@openssh.com",      EVP_md5,       0,  1},  
         {HMAC_SHA1_96_EtM,  "hmac-sha1-96-etm@openssh.com",  EVP_sha1,      96, 1},  
         {HMAC_MD5_96_EtM,   "hmac-md5-96-etm@openssh.com",   EVP_md5,       96, 1},  
         {HMAC_RIPEMD160_EtM,"hmac-ripemd160-etm@openssh.com",EVP_ripemd160, 0,  1},  
         {HMAC_SHA2_256_EtM, "hmac-sha2-256-etm@openssh.com", EVP_sha256,    0,  1},  
         {HMAC_SHA2_512_EtM, "hmac-sha2-512-etm@openssh.com", EVP_sha512,    0,  1},  
         {HMAC_IMPLICIT,     "<implicit>",                    EVP_md_null,   0,  0}, // for AEAD cipher  
         {HMAC_NONE,         NULL,                            NULL,          0,  0},  
 };  
   
   
 typedef enum {  
         COMP_NONE,      /* disabled line */  
         COMP_NOCOMP,  
         COMP_ZLIB,  
         COMP_DELAYED,  
         COMP_UNKNOWN,  
         COMP_MAX = COMP_UNKNOWN,  
 } compression_type;  
   
 typedef struct ssh2_comp {  
         compression_type type;  
         char *name;  
 } ssh2_comp_t;  
   
 static ssh2_comp_t ssh2_comps[] = {  
         {COMP_NOCOMP,  "none"},             // RFC4253  
         {COMP_ZLIB,    "zlib"},             // RFC4253  
         {COMP_DELAYED, "zlib@openssh.com"},  
         {COMP_NONE,    NULL},  
 };  
   
   
300  struct Enc {  struct Enc {
301          u_char          *key;          u_char          *key;
302          u_char          *iv;          u_char          *iv;
# Line 595  typedef struct Key { Line 357  typedef struct Key {
357          int bcrypt_kdf;          int bcrypt_kdf;
358  } Key;  } Key;
359    
 // fingerprintの種別  
 enum fp_rep {  
         SSH_FP_DEFAULT = 0,  
         SSH_FP_HEX,  
         SSH_FP_BASE64,  
         SSH_FP_BUBBLEBABBLE,  
         SSH_FP_RANDOMART  
 };  
 /*  
 enum fp_type {  
         SSH_FP_MD5,  
         SSH_FP_SHA1,  
         SSH_FP_SHA256  
 };  
 */  
 typedef enum {  
         SSH_DIGEST_MD5,  
         SSH_DIGEST_RIPEMD160,  
         SSH_DIGEST_SHA1,  
         SSH_DIGEST_SHA256,  
         SSH_DIGEST_SHA384,  
         SSH_DIGEST_SHA512,  
         SSH_DIGEST_MAX,  
 } digest_algorithm;  
   
 typedef struct ssh_digest {  
         digest_algorithm id;  
         char *name;  
 } ssh_digest_t;  
   
 /* NB. Indexed directly by algorithm number */  
 static ssh_digest_t ssh_digests[] = {  
         { SSH_DIGEST_MD5,       "MD5" },  
         { SSH_DIGEST_RIPEMD160, "RIPEMD160" },  
         { SSH_DIGEST_SHA1,      "SHA1" },  
         { SSH_DIGEST_SHA256,    "SHA256" },  
         { SSH_DIGEST_SHA384,    "SHA384" },  
         { SSH_DIGEST_SHA512,    "SHA512" },  
         { SSH_DIGEST_MAX,       NULL },  
 };  
360    
361  enum scp_dir {  enum scp_dir {
362          TOREMOTE, FROMREMOTE,          TOREMOTE, FROMREMOTE,
# Line 777  void SSH2_send_kexinit(PTInstVar pvar); Line 499  void SSH2_send_kexinit(PTInstVar pvar);
499  BOOL do_SSH2_userauth(PTInstVar pvar);  BOOL do_SSH2_userauth(PTInstVar pvar);
500  BOOL do_SSH2_authrequest(PTInstVar pvar);  BOOL do_SSH2_authrequest(PTInstVar pvar);
501  void debug_print(int no, char *msg, int len);  void debug_print(int no, char *msg, int len);
 int get_cipher_block_size(SSH2Cipher *cipher);  
 int get_cipher_key_len(SSH2Cipher *cipher);  
 int get_cipher_iv_len(SSH2Cipher *cipher);  
 int get_cipher_auth_len(SSH2Cipher *cipher);  
 SSH2Cipher *get_cipher_by_name(char *name);  
 char* get_kex_algorithm_name(kex_algorithm kextype);  
 const EVP_CIPHER* get_cipher_EVP_CIPHER(SSH2Cipher *cipher);  
 const EVP_MD* get_kex_algorithm_EVP_MD(kex_algorithm kextype);  
 SSH2Mac *get_ssh2_mac(SSH2MacId id);  
 char* get_ssh2_mac_name(SSH2Mac *mac);  
 char* get_ssh2_mac_name_by_id(SSH2MacId id);  
 const EVP_MD* get_ssh2_mac_EVP_MD(SSH2Mac *mac);  
 int get_ssh2_mac_truncatebits(SSH2Mac *mac);  
 char* get_ssh2_comp_name(compression_type type);  
 char* get_ssh_keytype_name(ssh_keytype type);  
 char* get_digest_algorithm_name(digest_algorithm id);  
 int get_cipher_discard_len(SSH2Cipher *cipher);  
502  void ssh_heartbeat_lock_initialize(void);  void ssh_heartbeat_lock_initialize(void);
503  void ssh_heartbeat_lock_finalize(void);  void ssh_heartbeat_lock_finalize(void);
504  void ssh_heartbeat_lock(void);  void ssh_heartbeat_lock(void);
# Line 804  BOOL handle_SSH2_userauth_msg60(PTInstVa Line 509  BOOL handle_SSH2_userauth_msg60(PTInstVa
509  BOOL handle_SSH2_userauth_inforeq(PTInstVar pvar);  BOOL handle_SSH2_userauth_inforeq(PTInstVar pvar);
510  BOOL handle_SSH2_userauth_pkok(PTInstVar pvar);  BOOL handle_SSH2_userauth_pkok(PTInstVar pvar);
511  BOOL handle_SSH2_userauth_passwd_changereq(PTInstVar pvar);  BOOL handle_SSH2_userauth_passwd_changereq(PTInstVar pvar);
 void SSH2_update_compression_myproposal(PTInstVar pvar);  
 void SSH2_update_cipher_myproposal(PTInstVar pvar);  
 void SSH2_update_kex_myproposal(PTInstVar pvar);  
 void SSH2_update_host_key_myproposal(PTInstVar pvar);  
 void SSH2_update_hmac_myproposal(PTInstVar pvar);  
512  int SSH_notify_break_signal(PTInstVar pvar);  int SSH_notify_break_signal(PTInstVar pvar);
513    
514  ///  ///
# Line 896  unsigned char *begin_send_packet(PTInstV Line 596  unsigned char *begin_send_packet(PTInstV
596  void finish_send_packet_special(PTInstVar pvar, int skip_compress);  void finish_send_packet_special(PTInstVar pvar, int skip_compress);
597  void SSH2_send_channel_data(PTInstVar pvar, Channel_t *c, unsigned char *buf, unsigned int buflen, int retry);  void SSH2_send_channel_data(PTInstVar pvar, Channel_t *c, unsigned char *buf, unsigned int buflen, int retry);
598  Channel_t* ssh2_local_channel_lookup(int local_num);  Channel_t* ssh2_local_channel_lookup(int local_num);
599    void normalize_generic_order(char *buf, char default_strings[], int default_strings_len);
600    void choose_SSH2_proposal(char* server_proposal, char* my_proposal,char* dest, int dest_len);
601    
602  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)
603  #define get_payload_uint32(pvar, offset) get_uint32_MSBfirst((pvar)->ssh_state.payload + (offset))  #define get_payload_uint32(pvar, offset) get_uint32_MSBfirst((pvar)->ssh_state.payload + (offset))
# Line 944  BOOL handle_SSH2_dh_kex_reply_after_know Line 646  BOOL handle_SSH2_dh_kex_reply_after_know
646  BOOL handle_SSH2_dh_gex_reply_after_known_hosts(PTInstVar pvar);  BOOL handle_SSH2_dh_gex_reply_after_known_hosts(PTInstVar pvar);
647  BOOL handle_SSH2_ecdh_kex_reply_after_known_hosts(PTInstVar pvar);  BOOL handle_SSH2_ecdh_kex_reply_after_known_hosts(PTInstVar pvar);
648    
649  #endif  #endif /* __SSH_H */

Legend:
Removed from v.9208  
changed lines
  Added in v.9210

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