diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-03 16:02:01 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-19 21:06:16 +0100 |
commit | 33c173281412e5ab0da70dd39257880c2a41f75b (patch) | |
tree | 15566204cd1a0084f9fb1dd71fe8aed17edb1d49 | |
parent | 0da2398042bd8dccfdf63abf76b4d6b0679e4803 (diff) | |
download | network-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.c | 57 | ||||
-rw-r--r-- | src/utils/utils.h | 5 | ||||
-rw-r--r-- | src/wireless-security/eap-method.c | 72 |
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)) |