www.usr.com/support/gpl/USR9107_release.1.4.tar.gz
[bcm963xx.git] / userapps / opensource / sshd / kex.h
index e02b77c..92b6c42 100755 (executable)
 #define _KEX_H_
 
 #include "includes.h"
+#include "algo.h"
 
 void send_msg_kexinit();
 void recv_msg_kexinit();
-void send_dh_kex();
-void recv_msg_kexdh_init();
 void send_msg_newkeys();
 void recv_msg_newkeys();
-void kexinitialise();
+void kexfirstinitialise();
+void gen_kexdh_vals(mp_int *dh_pub, mp_int *dh_priv);
+void kexdh_comb_key(mp_int *dh_pub_us, mp_int *dh_priv, mp_int *dh_pub_them,
+               sign_key *hostkey);
+
+void recv_msg_kexdh_init(); /* server */
+
+void send_msg_kexdh_init(); /* client */
+void recv_msg_kexdh_reply(); /* client */
+
+extern const unsigned char dh_p_val[];
+#define DH_P_LEN 128 /* The length of the dh_p_val array */
+
+extern const int DH_G_VAL; /* == 2 */
 
 struct KEXState {
 
@@ -43,6 +55,9 @@ struct KEXState {
        unsigned sentnewkeys : 1; /* set once we've send/recv'ed MSG_NEWKEYS*/
        unsigned recvnewkeys : 1;
 
+       unsigned donefirstkex : 1; /* Set to 1 after the first kex has completed,
+                                                                 ie the transport layer has been set up */
+
        long lastkextime; /* time of the last kex */
        unsigned int datatrans; /* data transmitted since last kex */
        unsigned int datarecv; /* data received since last kex */