chiark / gitweb /
test: udp-preload: Proof of concept wrapping
[secnet.git] / site.c
diff --git a/site.c b/site.c
index 2a89880c7e9e167bb6afeff2a0131512d3f7602d..eb146e1baabd1c3e031c86b4960f2d7fd27d35b8 100644 (file)
--- a/site.c
+++ b/site.c
@@ -806,10 +806,16 @@ static bool_t check_msg(struct site *st, uint32_t type, struct msg *m,
     return False;
 }
 
-static bool_t generate_msg1(struct site *st, const struct msg *prompt_maybe_0)
+static bool_t kex_init(struct site *st)
 {
     st->random->generate(st->random->st,NONCELEN,st->localN);
-    return generate_msg(st,LABEL_MSG1,"site:MSG1",prompt_maybe_0);
+    return True;
+}
+
+static bool_t generate_msg1(struct site *st, const struct msg *prompt_maybe_0)
+{
+    return
+       generate_msg(st,LABEL_MSG1,"site:MSG1",prompt_maybe_0);
 }
 
 static bool_t process_msg1(struct site *st, struct buffer_if *msg1,
@@ -829,8 +835,8 @@ static bool_t process_msg1(struct site *st, struct buffer_if *msg1,
 static bool_t generate_msg2(struct site *st,
                            const struct msg *prompt_may_be_null)
 {
-    st->random->generate(st->random->st,NONCELEN,st->localN);
-    return generate_msg(st,LABEL_MSG2,"site:MSG2",prompt_may_be_null);
+    return
+       generate_msg(st,LABEL_MSG2,"site:MSG2",prompt_may_be_null);
 }
 
 static bool_t process_msg2(struct site *st, struct buffer_if *msg2,
@@ -1593,12 +1599,14 @@ static bool_t enter_new_state(struct site *st, uint32_t next,
     switch(next) {
     case SITE_SENTMSG1:
        state_assert(st,st->state==SITE_RUN || st->state==SITE_RESOLVE);
+       if (!kex_init(st)) return False;
        gen=generate_msg1;
        st->msg1_crossed_logged = False;
        break;
     case SITE_SENTMSG2:
        state_assert(st,st->state==SITE_RUN || st->state==SITE_RESOLVE ||
                     st->state==SITE_SENTMSG1 || st->state==SITE_WAIT);
+       if (!kex_init(st)) return False;
        gen=generate_msg2;
        break;
     case SITE_SENTMSG3: