Only read our public key if it wasn't already in the private key file.
[oweals/tinc.git] / src / net_setup.c
index e71d4466dddd6fdd246e0cce6147e539d53e0298..aa2fbfbe9264b921b56553aca7fc150846c751e4 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net_setup.c,v 1.1.2.48 2003/12/20 19:47:52 guus Exp $
+    $Id: net_setup.c,v 1.1.2.50 2003/12/20 21:25:17 guus Exp $
 */
 
 #include "system.h"
@@ -150,17 +150,23 @@ bool read_rsa_public_key(connection_t *c)
 bool read_rsa_private_key(void)
 {
        FILE *fp;
-       char *fname, *key;
+       char *fname, *key, *pubkey;
        struct stat s;
 
        cp();
 
        if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key)) {
+               if(!get_config_string(lookup_config(myself->connection->config_tree, "PublicKey"), &pubkey)) {
+                       logger(LOG_ERR, _("PrivateKey used but no PublicKey found!"));
+                       return false;
+               }
                myself->connection->rsa_key = RSA_new();
 //             RSA_blinding_on(myself->connection->rsa_key, NULL);
                BN_hex2bn(&myself->connection->rsa_key->d, key);
+               BN_hex2bn(&myself->connection->rsa_key->n, pubkey);
                BN_hex2bn(&myself->connection->rsa_key->e, "FFFF");
                free(key);
+               free(pubkey);
                return true;
        }
 
@@ -242,19 +248,15 @@ bool setup_myself(void)
        myself->name = name;
        myself->connection->name = xstrdup(name);
 
-       if(!read_rsa_private_key())
-               return false;
-
        if(!read_connection_config(myself->connection)) {
                logger(LOG_ERR, _("Cannot open host configuration file for myself!"));
                return false;
        }
 
-       if(!read_rsa_public_key(myself->connection))
+       if(!read_rsa_private_key())
                return false;
 
-       if(!get_config_string
-          (lookup_config(myself->connection->config_tree, "Port"), &myport))
+       if(!get_config_string(lookup_config(myself->connection->config_tree, "Port"), &myport))
                asprintf(&myport, "655");
 
        /* Read in all the subnets specified in the host configuration file */
@@ -284,8 +286,8 @@ bool setup_myself(void)
        if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice)
                myself->options |= OPTION_TCPONLY;
 
-       if(get_config_bool(lookup_config(myself->connection->config_tree, "DontFragment"), &choice) && choice)
-               myself->options |= OPTION_DONTFRAGMENT;
+       if(get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) && choice)
+               myself->options |= OPTION_PMTU_DISCOVERY;
 
        if(myself->options & OPTION_TCPONLY)
                myself->options |= OPTION_INDIRECT;