diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | README.adoc | 4 | ||||
| -rw-r--r-- | xD.c | 8 | 
3 files changed, 8 insertions, 6 deletions
| @@ -1,5 +1,7 @@  2.0.0 (Unreleased) + * xD: now using SHA-256 for client certificate fingerprints +   * xD: implemented WALLOPS, choosing to make it target even non-operators   * xC: made it show WALLOPS messages, as PRIVMSG for the server buffer diff --git a/README.adoc b/README.adoc index 0bf29b2..beb03b4 100644 --- a/README.adoc +++ b/README.adoc @@ -141,10 +141,10 @@ Client Certificates  certificate specified by the respective server's `tls_cert` option if you add  `sasl` to the `capabilities` option and the server supports this. -'xD' uses SHA-1 fingerprints of TLS client certificates to authenticate users. +'xD' uses SHA-256 fingerprints of TLS client certificates to authenticate users.  To get the fingerprint from a certificate file in the required form, use: - $ openssl x509 -in public.pem -outform DER | sha1sum + $ openssl x509 -in public.pem -outform DER | sha256sum  Custom Key Bindings in xC  ------------------------- @@ -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++) | 
