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>
Sun, 8 Dec 2019 00:21:52 +0000 (00:21 +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 f53442b0c18f265e80870715df30b665ffe1408d..b768eb5cc6035f80c7d1f60268fe9f06811c1eae 100644 (file)
--- a/site.c
+++ b/site.c
@@ -1044,11 +1044,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
@@ -1154,7 +1159,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;