xD: use SHA-256 for certificate fingerprints

Just like xS.  2.0.0 is the ideal time for such a breaking change.
This commit is contained in:
2022-09-26 13:56:45 +02:00
parent 614fd98fc1
commit 7c74e6615d
3 changed files with 8 additions and 6 deletions

8
xD.c
View File

@@ -49,7 +49,7 @@ static struct simple_config_item g_config_table[] =
{ "tls_key", NULL, "Server TLS private key (PEM)" },
{ "tls_ciphers", DEFAULT_CIPHERS, "OpenSSL cipher list" },
{ "operators", NULL, "IRCop TLS client cert. SHA-1 fingerprints" },
{ "operators", NULL, "IRCop TLS client cert. SHA-256 fingerprints" },
{ "max_connections", "0", "Global connection limit" },
{ "ping_interval", "180", "Interval between PINGs (sec)" },
@@ -296,7 +296,7 @@ irc_is_valid_user_mask (const char *mask)
static bool
irc_is_valid_fingerprint (const char *fp)
{
return irc_regex_match ("^[a-fA-F0-9]{40}$", fp);
return irc_regex_match ("^[a-fA-F0-9]{64}$", fp);
}
// --- Clients (equals users) --------------------------------------------------
@@ -1005,8 +1005,8 @@ client_get_ssl_cert_fingerprint (struct client *c)
if (i2d_X509 (peer_cert, &p) < 0)
return NULL;
unsigned char hash[SHA_DIGEST_LENGTH];
SHA1 (cert, cert_len, hash);
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256 (cert, cert_len, hash);
struct str fingerprint = str_make ();
for (size_t i = 0; i < sizeof hash; i++)