X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=site.c;h=eb146e1baabd1c3e031c86b4960f2d7fd27d35b8;hb=03d4c598998e9373fd538ce1fb920c62dbde1cdd;hp=2a89880c7e9e167bb6afeff2a0131512d3f7602d;hpb=48c12bf40ab30af78abfdf20dde47e00c011afbe;p=secnet.git diff --git a/site.c b/site.c index 2a89880..eb146e1 100644 --- 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: