]> git.meshlink.io Git - meshlink/commitdiff
Don't generate a new ECDSA key in finalize_join().
authorGuus Sliepen <guus@meshlink.io>
Sun, 11 May 2014 22:15:06 +0000 (00:15 +0200)
committerGuus Sliepen <guus@meshlink.io>
Sun, 11 May 2014 22:15:06 +0000 (00:15 +0200)
src/meshlink.c

index 56a1ae7ad6016a8f48569d60f0fb9ffb66090e47..8b731900a36f7bbab7e5e49393c99409a2d86589 100644 (file)
@@ -341,18 +341,6 @@ static char *get_value(const char *data, const char *var) {
                return NULL;
        return val;
 }
-static FILE *fopenmask(const char *filename, const char *mode, mode_t perms) {
-       mode_t mask = umask(0);
-       perms &= ~mask;
-       umask(~perms);
-       FILE *f = fopen(filename, mode);
-#ifdef HAVE_FCHMOD
-       if((perms & 0444) && f)
-               fchmod(fileno(f), perms);
-#endif
-       umask(mask);
-       return f;
-}
 
 static bool try_bind(int port) {
        struct addrinfo *ai = NULL;
@@ -536,27 +524,10 @@ static bool finalize_join(meshlink_handle_t *mesh) {
                fclose(f);
        }
 
-       // Generate our key and send a copy to the server
-       ecdsa_t *key = ecdsa_generate();
-       if(!key)
-               return false;
-
-       char *b64key = ecdsa_get_base64_public_key(key);
+       char *b64key = ecdsa_get_base64_public_key(mesh->self->connection->ecdsa);
        if(!b64key)
                return false;
 
-       snprintf(filename, sizeof filename, "%s" SLASH "ecdsa_key.priv", mesh->confbase);
-       f = fopenmask(filename, "w", 0600);
-
-       if(!ecdsa_write_pem_private_key(key, f)) {
-               fprintf(stderr, "Error writing private key!\n");
-               ecdsa_free(key);
-               fclose(f);
-               return false;
-       }
-
-       fclose(f);
-
        fprintf(fh, "ECDSAPublicKey = %s\n", b64key);
        fprintf(fh, "Port = %s\n", mesh->myport);
 
@@ -565,8 +536,6 @@ static bool finalize_join(meshlink_handle_t *mesh) {
        sptps_send_record(&(mesh->sptps), 1, b64key, strlen(b64key));
        free(b64key);
 
-       ecdsa_free(key);
-
        fprintf(stderr, "Configuration stored in: %s\n", mesh->confbase);
 
        return true;