diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/ignore.h | 6 | ||||
-rw-r--r-- | src/core/network-openssl.c | 38 | ||||
-rw-r--r-- | src/core/settings.c | 10 | ||||
-rw-r--r-- | src/core/settings.h | 7 |
4 files changed, 39 insertions, 22 deletions
diff --git a/src/core/ignore.h b/src/core/ignore.h index e18be3c4..31171b58 100644 --- a/src/core/ignore.h +++ b/src/core/ignore.h @@ -27,14 +27,14 @@ int ignore_check(SERVER_REC *server, const char *nick, const char *host, const char *channel, const char *text, int level); enum { - IGNORE_FIND_PATTERN = 0x01, // Match the pattern - IGNORE_FIND_NOACT = 0x02, // Exclude the targets with NOACT level + IGNORE_FIND_PATTERN = 0x01, /* Match the pattern */ + IGNORE_FIND_NOACT = 0x02, /* Exclude the targets with NOACT level */ }; IGNORE_REC *ignore_find_full (const char *servertag, const char *mask, const char *pattern, char **channels, const int flags); -// Convenience wrappers around ignore_find_full, for compatibility purpose +/* Convenience wrappers around ignore_find_full, for compatibility purpose */ IGNORE_REC *ignore_find(const char *servertag, const char *mask, char **channels); IGNORE_REC *ignore_find_noact(const char *servertag, const char *mask, char **channels, int noact); diff --git a/src/core/network-openssl.c b/src/core/network-openssl.c index 7ec902fb..c7ce4b43 100644 --- a/src/core/network-openssl.c +++ b/src/core/network-openssl.c @@ -583,9 +583,6 @@ static void set_cipher_info(TLS_REC *tls, SSL *ssl) static void set_pubkey_info(TLS_REC *tls, X509 *cert, unsigned char *cert_fingerprint, size_t cert_fingerprint_size, unsigned char *public_key_fingerprint, size_t public_key_fingerprint_size) { - g_return_if_fail(tls != NULL); - g_return_if_fail(cert != NULL); - EVP_PKEY *pubkey = NULL; char *cert_fingerprint_hex = NULL; char *public_key_fingerprint_hex = NULL; @@ -594,13 +591,16 @@ static void set_pubkey_info(TLS_REC *tls, X509 *cert, unsigned char *cert_finger char buffer[128]; size_t length; + g_return_if_fail(tls != NULL); + g_return_if_fail(cert != NULL); + pubkey = X509_get_pubkey(cert); cert_fingerprint_hex = binary_to_hex(cert_fingerprint, cert_fingerprint_size); tls_rec_set_certificate_fingerprint(tls, cert_fingerprint_hex); tls_rec_set_certificate_fingerprint_algorithm(tls, "SHA256"); - // Show algorithm. + /* Show algorithm. */ switch (EVP_PKEY_id(pubkey)) { case EVP_PKEY_RSA: tls_rec_set_public_key_algorithm(tls, "RSA"); @@ -624,7 +624,7 @@ static void set_pubkey_info(TLS_REC *tls, X509 *cert, unsigned char *cert_finger tls_rec_set_public_key_size(tls, EVP_PKEY_bits(pubkey)); tls_rec_set_public_key_fingerprint_algorithm(tls, "SHA256"); - // Read the NotBefore timestamp. + /* Read the NotBefore timestamp. */ bio = BIO_new(BIO_s_mem()); ASN1_TIME_print(bio, X509_get_notBefore(cert)); length = BIO_read(bio, buffer, sizeof(buffer)); @@ -632,7 +632,7 @@ static void set_pubkey_info(TLS_REC *tls, X509 *cert, unsigned char *cert_finger BIO_free(bio); tls_rec_set_not_before(tls, buffer); - // Read the NotAfter timestamp. + /* Read the NotAfter timestamp. */ bio = BIO_new(BIO_s_mem()); ASN1_TIME_print(bio, X509_get_notAfter(cert)); length = BIO_read(bio, buffer, sizeof(buffer)); @@ -647,9 +647,6 @@ static void set_pubkey_info(TLS_REC *tls, X509 *cert, unsigned char *cert_finger static void set_peer_cert_chain_info(TLS_REC *tls, SSL *ssl) { - g_return_if_fail(tls != NULL); - g_return_if_fail(ssl != NULL); - int nid; char *key = NULL; char *value = NULL; @@ -662,6 +659,9 @@ static void set_peer_cert_chain_info(TLS_REC *tls, SSL *ssl) TLS_CERT_ENTRY_REC *tls_cert_entry_rec = NULL; ASN1_STRING *data = NULL; + g_return_if_fail(tls != NULL); + g_return_if_fail(ssl != NULL); + chain = SSL_get_peer_cert_chain(ssl); if (chain == NULL) @@ -670,7 +670,7 @@ static void set_peer_cert_chain_info(TLS_REC *tls, SSL *ssl) for (i = 0; i < sk_X509_num(chain); i++) { cert_rec = tls_cert_create_rec(); - // Subject. + /* Subject. */ name = X509_get_subject_name(sk_X509_value(chain, i)); for (j = 0; j < X509_NAME_entry_count(name); j++) { @@ -689,7 +689,7 @@ static void set_peer_cert_chain_info(TLS_REC *tls, SSL *ssl) tls_cert_rec_append_subject_entry(cert_rec, tls_cert_entry_rec); } - // Issuer. + /* Issuer. */ name = X509_get_issuer_name(sk_X509_value(chain, i)); for (j = 0; j < X509_NAME_entry_count(name); j++) { @@ -714,14 +714,11 @@ static void set_peer_cert_chain_info(TLS_REC *tls, SSL *ssl) static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl) { - g_return_if_fail(tls != NULL); - g_return_if_fail(ssl != NULL); - #ifdef SSL_get_server_tmp_key - // Show ephemeral key information. + /* Show ephemeral key information. */ EVP_PKEY *ephemeral_key = NULL; - // OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 + /* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */ #ifndef OPENSSL_NO_EC EC_KEY *ec_key = NULL; #endif @@ -729,6 +726,9 @@ static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl) char *cname = NULL; int nid; + g_return_if_fail(tls != NULL); + g_return_if_fail(ssl != NULL); + if (SSL_get_server_tmp_key(ssl, &ephemeral_key)) { switch (EVP_PKEY_id(ephemeral_key)) { case EVP_PKEY_DH: @@ -759,7 +759,7 @@ static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl) EVP_PKEY_free(ephemeral_key); } -#endif // SSL_get_server_tmp_key. +#endif /* SSL_get_server_tmp_key. */ } GIOChannel *net_connect_ip_ssl(IPADDR *ip, int port, IPADDR *my_ip, SERVER_REC *server) @@ -866,7 +866,7 @@ int irssi_ssl_handshake(GIOChannel *handle) set_peer_cert_chain_info(tls, chan->ssl); set_server_temporary_key_info(tls, chan->ssl); - // Emit the TLS rec. + /* Emit the TLS rec. */ signal_emit("tls handshake finished", 2, chan->server, tls); ret = 1; @@ -893,7 +893,7 @@ int irssi_ssl_handshake(GIOChannel *handle) ret = irssi_ssl_verify(chan->ssl, chan->ctx, chan->server->connrec->address, chan->port, cert, chan->server, tls); if (! ret) { - // irssi_ssl_verify emits a warning itself. + /* irssi_ssl_verify emits a warning itself. */ goto done; } } diff --git a/src/core/settings.c b/src/core/settings.c index 4e0717cd..3ebb9e4a 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -39,6 +39,7 @@ static GString *last_errors; static GSList *last_invalid_modules; static int fe_initialized; static int config_changed; /* FIXME: remove after .98 (unless needed again) */ +static unsigned int user_settings_changed; static GHashTable *settings; static int timeout_tag; @@ -464,6 +465,11 @@ SETTINGS_REC *settings_get_record(const char *key) return g_hash_table_lookup(settings, key); } +static void sig_init_userinfo_changed(gpointer changedp) +{ + user_settings_changed |= GPOINTER_TO_UINT(changedp); +} + static void sig_init_finished(void) { fe_initialized = TRUE; @@ -479,6 +485,8 @@ static void sig_init_finished(void) "updated, please /SAVE"); signal_emit("setup changed", 0); } + + signal_emit("settings userinfo changed", 1, GUINT_TO_POINTER(user_settings_changed)); } static void settings_clean_invalid_module(const char *module) @@ -875,6 +883,7 @@ void settings_init(void) timeout_tag = g_timeout_add(SETTINGS_AUTOSAVE_TIMEOUT, (GSourceFunc) sig_autosave, NULL); signal_add("irssi init finished", (SIGNAL_FUNC) sig_init_finished); + signal_add("irssi init userinfo changed", (SIGNAL_FUNC) sig_init_userinfo_changed); signal_add("gui exit", (SIGNAL_FUNC) sig_autosave); } @@ -887,6 +896,7 @@ void settings_deinit(void) { g_source_remove(timeout_tag); signal_remove("irssi init finished", (SIGNAL_FUNC) sig_init_finished); + signal_remove("irssi init userinfo changed", (SIGNAL_FUNC) sig_init_userinfo_changed); signal_remove("gui exit", (SIGNAL_FUNC) sig_autosave); g_slist_foreach(last_invalid_modules, (GFunc) g_free, NULL); diff --git a/src/core/settings.h b/src/core/settings.h index d174f250..b67a9e44 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -30,6 +30,13 @@ typedef struct { char **choices; } SETTINGS_REC; +enum { + USER_SETTINGS_REAL_NAME = 0x1, + USER_SETTINGS_USER_NAME = 0x2, + USER_SETTINGS_NICK = 0x4, + USER_SETTINGS_HOSTNAME = 0x8, +}; + /* macros for handling the default Irssi configuration */ #define iconfig_get_str(a, b, c) config_get_str(mainconfig, a, b, c) #define iconfig_get_int(a, b, c) config_get_int(mainconfig, a, b, c) |