summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2017-03-03 16:02:01 +0100
committerLubomir Rintel <lkundrak@v3.sk>2017-03-19 21:06:16 +0100
commit33c173281412e5ab0da70dd39257880c2a41f75b (patch)
tree15566204cd1a0084f9fb1dd71fe8aed17edb1d49
parent0da2398042bd8dccfdf63abf76b4d6b0679e4803 (diff)
downloadnetwork-manager-applet-33c173281412e5ab0da70dd39257880c2a41f75b.tar.gz
utils: move the key/cert file filters from wireless-security
They're going to be useful elsewhere. Co-authored-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/utils/utils.c57
-rw-r--r--src/utils/utils.h5
-rw-r--r--src/wireless-security/eap-method.c72
3 files changed, 65 insertions, 69 deletions
diff --git a/src/utils/utils.c b/src/utils/utils.c
index c3b806e2..684987b8 100644
--- a/src/utils/utils.c
+++ b/src/utils/utils.c
@@ -519,3 +519,60 @@ out:
g_free (item);
return success;
}
+
+static gboolean
+file_has_extension (const char *filename, const char *const*extensions)
+{
+ const char *p;
+ gs_free char *ext = NULL;
+
+ if (!filename)
+ return FALSE;
+
+ p = strrchr (filename, '.');
+ if (!p)
+ return FALSE;
+
+ ext = g_ascii_strdown (p, -1);
+ return g_strv_contains (extensions, ext);
+}
+
+static gboolean
+cert_filter (const GtkFileFilterInfo *filter_info, gpointer data)
+{
+ static const char *const extensions[] = { ".der", ".pem", ".crt", ".cer", ".p12", NULL };
+
+ return file_has_extension (filter_info->filename, extensions);
+}
+
+static gboolean
+privkey_filter (const GtkFileFilterInfo *filter_info, gpointer user_data)
+{
+ static const char *const extensions[] = { ".der", ".pem", ".p12", ".key", NULL };
+
+ return file_has_extension (filter_info->filename, extensions);
+}
+
+GtkFileFilter *
+utils_cert_filter (void)
+{
+ GtkFileFilter *filter;
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, cert_filter, NULL, NULL);
+ gtk_file_filter_set_name (filter, _("PEM certificates (*.pem, *.crt, *.cer)"));
+
+ return filter;
+}
+
+GtkFileFilter *
+utils_key_filter (void)
+{
+ GtkFileFilter *filter;
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, privkey_filter, NULL, NULL);
+ gtk_file_filter_set_name (filter, _("DER, PEM, or PKCS#12 private keys (*.der, *.pem, *.p12, *.key)"));
+
+ return filter;
+}
diff --git a/src/utils/utils.h b/src/utils/utils.h
index 544833a4..ccc653f8 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -108,5 +108,8 @@ gboolean utils_tree_model_get_ip4_prefix (GtkTreeModel *model,
guint32 *out,
char **out_raw);
-#endif /* UTILS_H */
+GtkFileFilter *utils_cert_filter (void);
+
+GtkFileFilter *utils_key_filter (void);
+#endif /* UTILS_H */
diff --git a/src/wireless-security/eap-method.c b/src/wireless-security/eap-method.c
index cb733e86..c92eb7c9 100644
--- a/src/wireless-security/eap-method.c
+++ b/src/wireless-security/eap-method.c
@@ -270,31 +270,6 @@ out:
return success;
}
-static gboolean
-file_has_extension (const char *filename, const char *extensions[])
-{
- char *p, *ext;
- int i = 0;
- gboolean found = FALSE;
-
- p = strrchr (filename, '.');
- if (!p)
- return FALSE;
-
- ext = g_ascii_strdown (p, -1);
- if (ext) {
- while (extensions[i]) {
- if (!strcmp (ext, extensions[i++])) {
- found = TRUE;
- break;
- }
- }
- }
- g_free (ext);
-
- return found;
-}
-
#if !LIBNM_BUILD
static const char *
find_tag (const char *tag, const char *buf, gsize len)
@@ -400,59 +375,20 @@ out:
}
#endif
-static gboolean
-default_filter_privkey (const GtkFileFilterInfo *filter_info, gpointer user_data)
-{
- const char *extensions[] = { ".der", ".pem", ".p12", ".key", NULL };
-
- if (!filter_info->filename)
- return FALSE;
-
- if (!file_has_extension (filter_info->filename, extensions))
- return FALSE;
-
- return TRUE;
-}
-
-static gboolean
-default_filter_cert (const GtkFileFilterInfo *filter_info, gpointer user_data)
-{
- const char *extensions[] = { ".der", ".pem", ".crt", ".cer", NULL };
-
- if (!filter_info->filename)
- return FALSE;
-
- if (!file_has_extension (filter_info->filename, extensions))
- return FALSE;
-
- return TRUE;
-}
-
GtkFileFilter *
eap_method_default_file_chooser_filter_new (gboolean privkey)
{
- GtkFileFilter *filter;
-
- filter = gtk_file_filter_new ();
- if (privkey) {
- gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, default_filter_privkey, NULL, NULL);
- gtk_file_filter_set_name (filter, _("DER, PEM, or PKCS#12 private keys (*.der, *.pem, *.p12, *.key)"));
- } else {
- gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_FILENAME, default_filter_cert, NULL, NULL);
- gtk_file_filter_set_name (filter, _("DER or PEM certificates (*.der, *.pem, *.crt, *.cer)"));
- }
- return filter;
+ if (privkey)
+ return utils_key_filter ();
+ else
+ return utils_cert_filter ();
}
gboolean
eap_method_is_encrypted_private_key (const char *path)
{
- GtkFileFilterInfo info = { .filename = path };
gboolean is_encrypted;
- if (!default_filter_privkey (&info, NULL))
- return FALSE;
-
#if LIBNM_BUILD
is_encrypted = FALSE;
if (!nm_utils_file_is_private_key (path, &is_encrypted))