Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/ttssh2/ttxssh/ssh.h

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

revision 9254 by nmaya, Wed Dec 16 12:24:13 2020 UTC revision 9255 by nmaya, Wed May 19 14:11:26 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  
 };  
   
 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    
289  /* Minimum modulus size (n) for RSA keys. */  /* Minimum modulus size (n) for RSA keys. */
# Line 338  typedef enum { Line 297  typedef enum {
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;  
   
 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 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;  
   
 typedef enum {  
         COMP_NONE,      /* disabled line */  
         COMP_NOCOMP,  
         COMP_ZLIB,  
         COMP_DELAYED,  
         COMP_UNKNOWN,  
         COMP_MAX = COMP_UNKNOWN,  
 } compression_type;  
   
300  struct Enc {  struct Enc {
301          u_char          *key;          u_char          *key;
302          u_char          *iv;          u_char          *iv;
# Line 465  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;  
360    
361  enum scp_dir {  enum scp_dir {
362          TOREMOTE, FROMREMOTE,          TOREMOTE, FROMREMOTE,
# Line 630  void SSH2_send_kexinit(PTInstVar pvar); Line 498  void SSH2_send_kexinit(PTInstVar pvar);
498  BOOL do_SSH2_userauth(PTInstVar pvar);  BOOL do_SSH2_userauth(PTInstVar pvar);
499  BOOL do_SSH2_authrequest(PTInstVar pvar);  BOOL do_SSH2_authrequest(PTInstVar pvar);
500  void debug_print(int no, char *msg, int len);  void debug_print(int no, char *msg, int len);
 int get_cipher_block_size(const SSH2Cipher *cipher);  
 int get_cipher_key_len(const SSH2Cipher *cipher);  
 int get_cipher_iv_len(const SSH2Cipher *cipher);  
 int get_cipher_auth_len(const SSH2Cipher *cipher);  
 const SSH2Cipher *get_cipher_by_name(char *name);  
 char* get_kex_algorithm_name(kex_algorithm kextype);  
 const EVP_CIPHER* get_cipher_EVP_CIPHER(const SSH2Cipher *cipher);  
 const EVP_MD* get_kex_algorithm_EVP_MD(kex_algorithm kextype);  
 const SSH2Mac *get_ssh2_mac(SSH2MacId id);  
 char* get_ssh2_mac_name(const SSH2Mac *mac);  
 const char* get_ssh2_mac_name_by_id(SSH2MacId id);  
 const EVP_MD* get_ssh2_mac_EVP_MD(const SSH2Mac *mac);  
 int get_ssh2_mac_truncatebits(const 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(const SSH2Cipher *cipher);  
501  void ssh_heartbeat_lock_initialize(void);  void ssh_heartbeat_lock_initialize(void);
502  void ssh_heartbeat_lock_finalize(void);  void ssh_heartbeat_lock_finalize(void);
503  void ssh_heartbeat_lock(void);  void ssh_heartbeat_lock(void);
# Line 657  BOOL handle_SSH2_userauth_msg60(PTInstVa Line 508  BOOL handle_SSH2_userauth_msg60(PTInstVa
508  BOOL handle_SSH2_userauth_inforeq(PTInstVar pvar);  BOOL handle_SSH2_userauth_inforeq(PTInstVar pvar);
509  BOOL handle_SSH2_userauth_pkok(PTInstVar pvar);  BOOL handle_SSH2_userauth_pkok(PTInstVar pvar);
510  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);  
511  int SSH_notify_break_signal(PTInstVar pvar);  int SSH_notify_break_signal(PTInstVar pvar);
512    
513  ///  ///
# Line 749  unsigned char *begin_send_packet(PTInstV Line 595  unsigned char *begin_send_packet(PTInstV
595  void finish_send_packet_special(PTInstVar pvar, int skip_compress);  void finish_send_packet_special(PTInstVar pvar, int skip_compress);
596  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);
597  Channel_t* ssh2_local_channel_lookup(int local_num);  Channel_t* ssh2_local_channel_lookup(int local_num);
598    void normalize_generic_order(char *buf, char default_strings[], int default_strings_len);
599    void choose_SSH2_proposal(char* server_proposal, char* my_proposal,char* dest, int dest_len);
600    
601  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)
602  #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 797  BOOL handle_SSH2_dh_kex_reply_after_know Line 645  BOOL handle_SSH2_dh_kex_reply_after_know
645  BOOL handle_SSH2_dh_gex_reply_after_known_hosts(PTInstVar pvar);  BOOL handle_SSH2_dh_gex_reply_after_known_hosts(PTInstVar pvar);
646  BOOL handle_SSH2_ecdh_kex_reply_after_known_hosts(PTInstVar pvar);  BOOL handle_SSH2_ecdh_kex_reply_after_known_hosts(PTInstVar pvar);
647    
648  #endif  #endif /* __SSH_H */

Legend:
Removed from v.9254  
changed lines
  Added in v.9255

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