| 26 |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 |
*/ |
*/ |
| 28 |
|
|
| 29 |
|
#ifndef KEX_H |
| 30 |
|
#define KEX_H |
| 31 |
|
|
| 32 |
#include "ttxssh.h" |
#include "ttxssh.h" |
| 33 |
|
|
| 34 |
|
// クライアントからサーバへの提案事項 |
| 35 |
|
enum kex_init_proposals { |
| 36 |
|
PROPOSAL_KEX_ALGS, |
| 37 |
|
PROPOSAL_SERVER_HOST_KEY_ALGS, |
| 38 |
|
PROPOSAL_ENC_ALGS_CTOS, |
| 39 |
|
PROPOSAL_ENC_ALGS_STOC, |
| 40 |
|
PROPOSAL_MAC_ALGS_CTOS, |
| 41 |
|
PROPOSAL_MAC_ALGS_STOC, |
| 42 |
|
PROPOSAL_COMP_ALGS_CTOS, |
| 43 |
|
PROPOSAL_COMP_ALGS_STOC, |
| 44 |
|
PROPOSAL_LANG_CTOS, |
| 45 |
|
PROPOSAL_LANG_STOC, |
| 46 |
|
PROPOSAL_MAX |
| 47 |
|
}; |
| 48 |
|
|
| 49 |
|
#define KEX_DEFAULT_KEX "" |
| 50 |
|
#define KEX_DEFAULT_PK_ALG "" |
| 51 |
|
#define KEX_DEFAULT_ENCRYPT "" |
| 52 |
|
#define KEX_DEFAULT_MAC "" |
| 53 |
|
#define KEX_DEFAULT_COMP "" |
| 54 |
|
#define KEX_DEFAULT_LANG "" |
| 55 |
|
|
| 56 |
|
extern char *myproposal[PROPOSAL_MAX]; |
| 57 |
|
|
| 58 |
|
typedef enum { |
| 59 |
|
KEX_DH_NONE, /* disabled line */ |
| 60 |
|
KEX_DH_GRP1_SHA1, |
| 61 |
|
KEX_DH_GRP14_SHA1, |
| 62 |
|
KEX_DH_GEX_SHA1, |
| 63 |
|
KEX_DH_GEX_SHA256, |
| 64 |
|
KEX_ECDH_SHA2_256, |
| 65 |
|
KEX_ECDH_SHA2_384, |
| 66 |
|
KEX_ECDH_SHA2_521, |
| 67 |
|
KEX_DH_GRP14_SHA256, |
| 68 |
|
KEX_DH_GRP16_SHA512, |
| 69 |
|
KEX_DH_GRP18_SHA512, |
| 70 |
|
KEX_DH_UNKNOWN, |
| 71 |
|
KEX_DH_MAX = KEX_DH_UNKNOWN, |
| 72 |
|
} kex_algorithm; |
| 73 |
|
|
| 74 |
|
char* get_kex_algorithm_name(kex_algorithm kextype); |
| 75 |
|
const EVP_MD* get_kex_algorithm_EVP_MD(kex_algorithm kextype); |
| 76 |
|
|
| 77 |
|
void normalize_kex_order(char *buf); |
| 78 |
|
kex_algorithm choose_SSH2_kex_algorithm(char *server_proposal, char *my_proposal); |
| 79 |
|
void SSH2_update_kex_myproposal(PTInstVar pvar); |
| 80 |
|
|
| 81 |
|
|
| 82 |
// SSH_MSG_KEY_DH_GEX_REQUEST での min, n, max がとり得る範囲の上限/下限 (RFC 4419) |
// SSH_MSG_KEY_DH_GEX_REQUEST での min, n, max がとり得る範囲の上限/下限 (RFC 4419) |
| 83 |
#define GEX_GRP_LIMIT_MIN 1024 |
#define GEX_GRP_LIMIT_MIN 1024 |
| 84 |
#define GEX_GRP_LIMIT_MAX 8192 |
#define GEX_GRP_LIMIT_MAX 8192 |
| 136 |
int dh_pub_is_valid(DH *dh, BIGNUM *dh_pub); |
int dh_pub_is_valid(DH *dh, BIGNUM *dh_pub); |
| 137 |
void kex_derive_keys(PTInstVar pvar, int need, u_char *hash, BIGNUM *shared_secret, |
void kex_derive_keys(PTInstVar pvar, int need, u_char *hash, BIGNUM *shared_secret, |
| 138 |
char *session_id, int session_id_len); |
char *session_id, int session_id_len); |
| 139 |
|
|
| 140 |
|
#endif /* KEX_H */ |