ssl_manager_create_list_view_columns(GTK_WIDGET(list_view));
return GTK_WIDGET(list_view);
-
}
void ssl_manager_create(void)
gtk_widget_show(window);
}
-static gboolean get_serverport(const gchar *str, gchar **server, gchar **port)
-{
- const gchar *pos, *prevpos;
-
- g_return_val_if_fail(str != NULL, FALSE);
-
- /* We expect 'host.name.port.cert' here, only set
- * server and port if we find that.
- * Validity of string in port should be checked by caller. */
- for (prevpos = str, pos = strstr(str, ".");
- pos != NULL;
- prevpos = pos, pos = strstr(pos+1, ".")) {
- if (!strcmp(pos, ".cert")) {
- if (prevpos > str) {
- *server = g_strndup(str, prevpos - str);
- *port = g_strndup(prevpos+1, pos - prevpos - 1);
- } else {
- *server = *port = NULL;
- }
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static char *get_fingerprint(const char *str)
-{
- char *ret = NULL, *tmp = g_strdup(str), *tmp2 = tmp;
- char *previous_pos = NULL, *last_pos = NULL;
-
- if (!strchr(tmp, ':')) {
- /* no fingerprint */
- if (strstr(tmp, ".cert"))
- *(strstr(tmp, ".cert")+1) = '.';
- }
-
- while (tmp2 && (tmp2 = strstr(tmp2,".")) != NULL) {
- tmp2++;
- previous_pos = last_pos;
- last_pos = tmp2;
- }
- if (last_pos && previous_pos && (int)(last_pos - previous_pos - 1) > 0)
- ret = g_strndup(previous_pos, (int)(last_pos - previous_pos - 1));
- else
- ret = NULL;
- g_free(tmp);
- return ret;
-
-}
-
static void ssl_manager_list_view_insert_cert(GtkWidget *list_view,
GtkTreeIter *row_iter,
gchar *host,
GtkListStore *list_store = GTK_LIST_STORE(gtk_tree_view_get_model
(GTK_TREE_VIEW(list_view)));
+ g_return_if_fail(cert != NULL);
+
exp_time_t = gnutls_x509_crt_get_expiration_time(cert->x509_cert);
memset(buf, 0, sizeof(buf));
sig_status = ssl_certificate_check_signer(cert, cert->status);
- if (sig_status==NULL)
+ if (sig_status == NULL)
sig_status = g_strdup_printf(_("Correct%s"),exp_time_t < time(NULL)? _(" (expired)"): "");
else {
weight = PANGO_WEIGHT_BOLD;
if(strstr(d, ".cert") != d + (strlen(d) - strlen(".cert")))
continue;
- get_serverport(d, &server, &port);
- fp = get_fingerprint(d);
+ if (get_serverportfp_from_filename(d, &server, &port, &fp)) {
- if (server != NULL && port != NULL) {
- gint portnum = atoi(port);
- if (portnum > 0 && portnum <= 65535) {
- cert = ssl_certificate_find(server, portnum, fp);
- ssl_manager_list_view_insert_cert(manager.certlist, NULL,
- server, port, cert);
+ if (server != NULL && port != NULL) {
+ gint portnum = atoi(port);
+ if (portnum > 0 && portnum <= 65535) {
+ cert = ssl_certificate_find(server, portnum, fp);
+ ssl_manager_list_view_insert_cert(manager.certlist, NULL,
+ server, port, cert);
+ }
}
- }
- g_free(server);
- g_free(port);
- g_free(fp);
+ g_free(server);
+ g_free(port);
+ g_free(fp);
+ }
row++;
}
g_dir_close(dir);