Allow running tinc without RSA keys.
This allows one to run tinc with only Ed25519 keys, forcing tinc to always use the SPTPS protocol.
This commit is contained in:
parent
266afc6c63
commit
880d74ad2d
2 changed files with 21 additions and 2 deletions
|
@ -277,6 +277,8 @@ static bool read_rsa_private_key(void) {
|
||||||
if(!fp) {
|
if(!fp) {
|
||||||
logger(DEBUG_ALWAYS, LOG_ERR, "Error reading RSA private key file `%s': %s",
|
logger(DEBUG_ALWAYS, LOG_ERR, "Error reading RSA private key file `%s': %s",
|
||||||
fname, strerror(errno));
|
fname, strerror(errno));
|
||||||
|
if(errno == ENOENT)
|
||||||
|
logger(DEBUG_ALWAYS, LOG_INFO, "Create an RSA keypair with `tinc -n %s generate-rsa-keys'.", netname ?: ".");
|
||||||
free(fname);
|
free(fname);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -780,8 +782,14 @@ static bool setup_myself(void) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!read_rsa_private_key())
|
if(!read_rsa_private_key()) {
|
||||||
return false;
|
if(experimental) {
|
||||||
|
logger(DEBUG_ALWAYS, LOG_WARNING, "Support for legacy protocol disabled.");
|
||||||
|
} else {
|
||||||
|
logger(DEBUG_ALWAYS, LOG_ERR, "No private keys available, cannot start tinc!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Ensure myport is numeric */
|
/* Ensure myport is numeric */
|
||||||
|
|
||||||
|
|
|
@ -412,6 +412,11 @@ bool id_h(connection_t *c, const char *request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool send_metakey(connection_t *c) {
|
bool send_metakey(connection_t *c) {
|
||||||
|
if(!myself->connection->rsa) {
|
||||||
|
logger(DEBUG_CONNECTIONS, LOG_ERR, "Peer %s (%s) uses legacy protocol which we don't support", c->name, c->hostname);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if(!read_rsa_public_key(c))
|
if(!read_rsa_public_key(c))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -478,6 +483,9 @@ bool send_metakey(connection_t *c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool metakey_h(connection_t *c, const char *request) {
|
bool metakey_h(connection_t *c, const char *request) {
|
||||||
|
if(!myself->connection->rsa)
|
||||||
|
return false;
|
||||||
|
|
||||||
char hexkey[MAX_STRING_SIZE];
|
char hexkey[MAX_STRING_SIZE];
|
||||||
int cipher, digest, maclength, compression;
|
int cipher, digest, maclength, compression;
|
||||||
const size_t len = rsa_size(myself->connection->rsa);
|
const size_t len = rsa_size(myself->connection->rsa);
|
||||||
|
@ -560,6 +568,9 @@ bool send_challenge(connection_t *c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool challenge_h(connection_t *c, const char *request) {
|
bool challenge_h(connection_t *c, const char *request) {
|
||||||
|
if(!myself->connection->rsa)
|
||||||
|
return false;
|
||||||
|
|
||||||
char buffer[MAX_STRING_SIZE];
|
char buffer[MAX_STRING_SIZE];
|
||||||
const size_t len = rsa_size(myself->connection->rsa);
|
const size_t len = rsa_size(myself->connection->rsa);
|
||||||
size_t digestlen = digest_length(c->indigest);
|
size_t digestlen = digest_length(c->indigest);
|
||||||
|
|
Loading…
Reference in a new issue