X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Ftincctl.c;h=a8930fe1d9d8d678f457f4afa85d7fa133616b2e;hp=bc64031490140d5ab36562ba5eaf9c53d645f53d;hb=9b9230a0a79c670b86f54fadd2807b864ff9d91f;hpb=e70b5b5bd77bb66e8dd324c17d86d9bff151aa82 diff --git a/src/tincctl.c b/src/tincctl.c index bc640314..a8930fe1 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -346,13 +346,13 @@ static FILE *ask_and_open(const char *filename, const char *what, const char *mo them in. */ static bool ecdsa_keygen(bool ask) { - ecdsa_t key; + ecdsa_t *key; FILE *f; char *pubname, *privname; fprintf(stderr, "Generating ECDSA keypair:\n"); - if(!ecdsa_generate(&key)) { + if(!(key = ecdsa_generate())) { fprintf(stderr, "Error during key generation!\n"); return false; } else @@ -370,7 +370,12 @@ static bool ecdsa_keygen(bool ask) { fchmod(fileno(f), 0600); #endif - ecdsa_write_pem_private_key(&key, f); + if(!ecdsa_write_pem_private_key(key, f)) { + fprintf(stderr, "Error writing private key!\n"); + ecdsa_free(key); + fclose(f); + return false; + } fclose(f); @@ -385,11 +390,12 @@ static bool ecdsa_keygen(bool ask) { if(!f) return false; - char *pubkey = ecdsa_get_base64_public_key(&key); + char *pubkey = ecdsa_get_base64_public_key(key); fprintf(f, "ECDSAPublicKey = %s\n", pubkey); free(pubkey); fclose(f); + ecdsa_free(key); return true; } @@ -399,13 +405,13 @@ static bool ecdsa_keygen(bool ask) { them in. */ static bool rsa_keygen(int bits, bool ask) { - rsa_t key; + rsa_t *key; FILE *f; char *pubname, *privname; fprintf(stderr, "Generating %d bits keys:\n", bits); - if(!rsa_generate(&key, bits, 0x10001)) { + if(!(key = rsa_generate(bits, 0x10001))) { fprintf(stderr, "Error during key generation!\n"); return false; } else @@ -423,7 +429,12 @@ static bool rsa_keygen(int bits, bool ask) { fchmod(fileno(f), 0600); #endif - rsa_write_pem_private_key(&key, f); + if(!rsa_write_pem_private_key(key, f)) { + fprintf(stderr, "Error writing private key!\n"); + fclose(f); + rsa_free(key); + return false; + } fclose(f); @@ -438,9 +449,15 @@ static bool rsa_keygen(int bits, bool ask) { if(!f) return false; - rsa_write_pem_public_key(&key, f); + if(!rsa_write_pem_public_key(key, f)) { + fprintf(stderr, "Error writing public key!\n"); + fclose(f); + rsa_free(key); + return false; + } fclose(f); + rsa_free(key); return true; }