chiark / gitweb /
site.c: Abstract out generation of the Diffie--Hellman private secret.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 29 Apr 2017 12:55:40 +0000 (13:55 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 1 Jan 2020 23:48:14 +0000 (23:48 +0000)
I want to make this more complicated, so it makes sense to have the
logic in one place.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
site.c

diff --git a/site.c b/site.c
index af147472d08bba1316653c7ba92cf014972ae616..add4f0b2b8c1b33ebd56fa966fcb0300d661a315 100644 (file)
--- a/site.c
+++ b/site.c
@@ -1041,11 +1041,16 @@ kind##_found:                                                           \
     return True;
 }
 
+static void generate_dhsecret(struct site *st)
+{
+    st->random->generate(st->random->st, st->dh->secret_len,st->dhsecret);
+}
+
 static bool_t generate_msg3(struct site *st, const struct msg *prompt)
 {
     /* Now we have our nonce and their nonce. Think of a secret key,
        and create message number 3. */
-    st->random->generate(st->random->st,st->dh->secret_len,st->dhsecret);
+    generate_dhsecret(st);
     return generate_msg(st,
                        (st->remote_capabilities & CAPAB_TRANSFORM_MASK)
                        ? LABEL_MSG3BIS
@@ -1151,7 +1156,7 @@ kind##_found:                                                             \
     /* Terminate their DH public key with a '0' */
     m->pk[m->pklen]=0;
     /* Invent our DH secret key */
-    st->random->generate(st->random->st,st->dh->secret_len,st->dhsecret);
+    generate_dhsecret(st);
 
     /* Generate the shared key and set up the transform */
     if (!set_new_transform(st,m->pk)) return False;