/pidgin/main: d8633f765a9e: Move x509_display_string() from ssl-...
Mark Doliner
mark at kingant.net
Tue Jul 8 02:57:47 EDT 2014
Changeset: d8633f765a9e5f57ab2db380c0307fc2043048af
Author: Mark Doliner <mark at kingant.net>
Date: 2014-07-07 23:57 -0700
Branch: default
URL: https://hg.pidgin.im/pidgin/main/rev/d8633f765a9e
Description:
Move x509_display_string() from ssl-nss.c and ssl-gnutls.c to certificate.c.
We should try to keep the library-specific abstraction files as small
as possible and avoid putting display logic there. The larger the files,
the more likely it is that behavior will differ, and that's bad.
diffstat:
libpurple/certificate.c | 72 +++++++++++++++++++++++++++++++++---
libpurple/certificate.h | 8 ----
libpurple/plugins/ssl/ssl-gnutls.c | 74 --------------------------------------
libpurple/plugins/ssl/ssl-nss.c | 73 -------------------------------------
4 files changed, 65 insertions(+), 162 deletions(-)
diffs (296 lines):
diff --git a/libpurple/certificate.c b/libpurple/certificate.c
--- a/libpurple/certificate.c
+++ b/libpurple/certificate.c
@@ -491,21 +491,79 @@ purple_certificate_get_der_data(PurpleCe
gchar *
purple_certificate_get_display_string(PurpleCertificate *crt)
{
- PurpleCertificateScheme *scheme;
- gchar *str;
+ gchar *sha_asc;
+ GByteArray *sha_bin;
+ gchar *cn, *issuer_id;
+ gint64 activation, expiration;
+ gchar *activ_str, *expir_str;
+ gboolean self_signed;
+ gchar *text;
+#if GLIB_CHECK_VERSION(2,26,0)
+ GDateTime *act_dt, *exp_dt;
+#endif
g_return_val_if_fail(crt, NULL);
- g_return_val_if_fail(crt->scheme, NULL);
- scheme = crt->scheme;
+ /* Pull out the SHA1 checksum */
+ sha_bin = purple_certificate_get_fingerprint_sha1(crt);
+ g_return_val_if_fail(sha_bin != NULL, NULL);
+ sha_asc = purple_base16_encode_chunked(sha_bin->data, sha_bin->len);
- g_return_val_if_fail(scheme->get_display_string, NULL);
+ /* Get the cert Common Name */
+ /* TODO: Will break on CA certs */
+ cn = purple_certificate_get_subject_name(crt);
- str = (scheme->get_display_string)(crt);
+ issuer_id = purple_certificate_get_issuer_unique_id(crt);
- return str;
+ /* Get the certificate times */
+ /* TODO: Check the times against localtime */
+ /* TODO: errorcheck? */
+ if (!purple_certificate_get_times(crt, &activation, &expiration)) {
+ purple_debug_error("certificate",
+ "Failed to get certificate times!\n");
+ activation = expiration = 0;
+ }
+
+#if GLIB_CHECK_VERSION(2,26,0)
+ act_dt = g_date_time_new_from_unix_local(activation);
+ activ_str = g_date_time_format(act_dt, "%c");
+ g_date_time_unref(act_dt);
+
+ exp_dt = g_date_time_new_from_unix_local(expiration);
+ expir_str = g_date_time_format(exp_dt, "%c");
+ g_date_time_unref(exp_dt);
+#else
+ activ_str = g_strdup(ctime(&activation));
+ expir_str = g_strdup(ctime(&expiration));
+#endif
+
+ self_signed = purple_certificate_signed_by(crt, crt);
+
+ /* Make messages */
+ text = g_strdup_printf(
+ _("Common name: %s\n\n"
+ "Issued by: %s\n\n"
+ "Fingerprint (SHA1): %s\n\n"
+ "Activation date: %s\n"
+ "Expiration date: %s\n"),
+ cn ? cn : "(null)",
+ self_signed ? _("(self-signed)") : (issuer_id ? issuer_id : "(null)"),
+ sha_asc ? sha_asc : "(null)",
+ activ_str ? activ_str : "(null)",
+ expir_str ? expir_str : "(null)");
+
+ /* Cleanup */
+ g_free(cn);
+ g_free(issuer_id);
+ g_free(sha_asc);
+ g_free(activ_str);
+ g_free(expir_str);
+ g_byte_array_free(sha_bin, TRUE);
+
+ return text;
}
+
GType
purple_certificate_get_type(void)
{
diff --git a/libpurple/certificate.h b/libpurple/certificate.h
--- a/libpurple/certificate.h
+++ b/libpurple/certificate.h
@@ -236,12 +236,6 @@ struct _PurpleCertificatePool
* <sbr/>@crt: Certificate instance
* <sbr/>Returns: Binary DER representation of certificate - must
* be freed using g_byte_array_free().
- * @get_display_string: Retrieves a string representation of the certificate
- * suitable for display
- * <sbr/>@crt: Certificate instance
- * <sbr/>Returns: User-displayable string representation of
- * certificate - must be freed using
- * g_free().
*
* A certificate type.
*
@@ -275,8 +269,6 @@ struct _PurpleCertificateScheme
GSList * (* import_certificates)(const gchar * filename);
GByteArray * (* get_der_data)(PurpleCertificate *crt);
- gchar * (* get_display_string)(PurpleCertificate *crt);
-
/*< private >*/
void (*_purple_reserved1)(void);
};
diff --git a/libpurple/plugins/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c
--- a/libpurple/plugins/ssl/ssl-gnutls.c
+++ b/libpurple/plugins/ssl/ssl-gnutls.c
@@ -1227,79 +1227,6 @@ x509_get_der_data(PurpleCertificate *crt
return data;
}
-static gchar *
-x509_display_string(PurpleCertificate *crt)
-{
- gchar *sha_asc;
- GByteArray *sha_bin;
- gchar *cn, *issuer_id;
- gint64 activation, expiration;
- gchar *activ_str, *expir_str;
- gboolean self_signed;
- gchar *text;
-#if GLIB_CHECK_VERSION(2,26,0)
- GDateTime *act_dt, *exp_dt;
-#endif
-
- /* Pull out the SHA1 checksum */
- sha_bin = x509_sha1sum(crt);
- g_return_val_if_fail(sha_bin != NULL, NULL);
- sha_asc = purple_base16_encode_chunked(sha_bin->data, sha_bin->len);
-
- /* Get the cert Common Name */
- /* TODO: Will break on CA certs */
- cn = x509_common_name(crt);
-
- issuer_id = purple_certificate_get_issuer_unique_id(crt);
-
- /* Get the certificate times */
- /* TODO: Check the times against localtime */
- /* TODO: errorcheck? */
- if (!x509_times(crt, &activation, &expiration)) {
- purple_debug_error("certificate",
- "Failed to get certificate times!\n");
- activation = expiration = 0;
- }
-
-#if GLIB_CHECK_VERSION(2,26,0)
- act_dt = g_date_time_new_from_unix_local(activation);
- activ_str = g_date_time_format(act_dt, "%c");
- g_date_time_unref(act_dt);
-
- exp_dt = g_date_time_new_from_unix_local(expiration);
- expir_str = g_date_time_format(exp_dt, "%c");
- g_date_time_unref(exp_dt);
-#else
- activ_str = g_strdup(ctime(&activation));
- expir_str = g_strdup(ctime(&expiration));
-#endif
-
- self_signed = purple_certificate_signed_by(crt, crt);
-
- /* Make messages */
- text = g_strdup_printf(
- _("Common name: %s\n\n"
- "Issued by: %s\n\n"
- "Fingerprint (SHA1): %s\n\n"
- "Activation date: %s\n"
- "Expiration date: %s\n"),
- cn ? cn : "(null)",
- self_signed ? _("(self-signed)") : (issuer_id ? issuer_id : "(null)"),
- sha_asc ? sha_asc : "(null)",
- activ_str ? activ_str : "(null)",
- expir_str ? expir_str : "(null)");
-
- /* Cleanup */
- g_free(cn);
- g_free(issuer_id);
- g_free(sha_asc);
- g_free(activ_str);
- g_free(expir_str);
- g_byte_array_free(sha_bin, TRUE);
-
- return text;
-}
-
/* X.509 certificate operations provided by this plugin */
static PurpleCertificateScheme x509_gnutls = {
"x509", /* Scheme name */
@@ -1317,7 +1244,6 @@ static PurpleCertificateScheme x509_gnut
x509_times, /* Activation/Expiration time */
x509_importcerts_from_file, /* Multiple certificates import function */
x509_get_der_data, /* Binary DER data */
- x509_display_string, /* Display representation */
NULL
diff --git a/libpurple/plugins/ssl/ssl-nss.c b/libpurple/plugins/ssl/ssl-nss.c
--- a/libpurple/plugins/ssl/ssl-nss.c
+++ b/libpurple/plugins/ssl/ssl-nss.c
@@ -946,78 +946,6 @@ x509_get_der_data(PurpleCertificate *crt
return data;
}
-static gchar *
-x509_display_string(PurpleCertificate *crt)
-{
- gchar *sha_asc;
- GByteArray *sha_bin;
- gchar *cn, *issuer_id;
- gint64 activation, expiration;
- gchar *activ_str, *expir_str;
- gboolean self_signed;
- gchar *text;
-#if GLIB_CHECK_VERSION(2,26,0)
- GDateTime *act_dt, *exp_dt;
-#endif
-
- /* Pull out the SHA1 checksum */
- sha_bin = x509_sha1sum(crt);
- sha_asc = purple_base16_encode_chunked(sha_bin->data, sha_bin->len);
-
- /* Get the cert Common Name */
- /* TODO: Will break on CA certs */
- cn = x509_common_name(crt);
-
- issuer_id = purple_certificate_get_issuer_unique_id(crt);
-
- /* Get the certificate times */
- /* TODO: Check the times against localtime */
- /* TODO: errorcheck? */
- if (!x509_times(crt, &activation, &expiration)) {
- purple_debug_error("certificate",
- "Failed to get certificate times!\n");
- activation = expiration = 0;
- }
-
-#if GLIB_CHECK_VERSION(2,26,0)
- act_dt = g_date_time_new_from_unix_local(activation);
- activ_str = g_date_time_format(act_dt, "%c");
- g_date_time_unref(act_dt);
-
- exp_dt = g_date_time_new_from_unix_local(expiration);
- expir_str = g_date_time_format(exp_dt, "%c");
- g_date_time_unref(exp_dt);
-#else
- activ_str = g_strdup(ctime(&activation));
- expir_str = g_strdup(ctime(&expiration));
-#endif
-
- self_signed = purple_certificate_signed_by(crt, crt);
-
- /* Make messages */
- text = g_strdup_printf(
- _("Common name: %s\n\n"
- "Issued by: %s\n\n"
- "Fingerprint (SHA1): %s\n\n"
- "Activation date: %s\n"
- "Expiration date: %s\n"),
- cn ? cn : "(null)",
- self_signed ? _("(self-signed)") : (issuer_id ? issuer_id : "(null)"),
- sha_asc ? sha_asc : "(null)",
- activ_str ? activ_str : "(null)",
- expir_str ? expir_str : "(null)");
-
- /* Cleanup */
- g_free(cn);
- g_free(issuer_id);
- g_free(sha_asc);
- g_free(activ_str);
- g_free(expir_str);
- g_byte_array_free(sha_bin, TRUE);
-
- return text;
-}
-
static PurpleCertificateScheme x509_nss = {
"x509", /* Scheme name */
N_("X.509 Certificates"), /* User-visible scheme name */
@@ -1034,7 +962,6 @@ static PurpleCertificateScheme x509_nss
x509_times, /* Activation/Expiration time */
x509_importcerts_from_file, /* Multiple certificate import function */
x509_get_der_data, /* Binary DER data */
- x509_display_string, /* Display representation */
NULL
};
More information about the Commits
mailing list