|
Packit |
fabffb |
/* NetworkManager Applet -- allow user control over networking
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Lubomir Rintel <lkundrak@v3.sk>
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This library is free software; you can redistribute it and/or
|
|
Packit |
fabffb |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
fabffb |
* License as published by the Free Software Foundation; either
|
|
Packit |
fabffb |
* version 2 of the License, or (at your option) any later version.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
fabffb |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
fabffb |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
fabffb |
* Lesser General Public License for more details.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
fabffb |
* License along with this library; if not, write to the
|
|
Packit |
fabffb |
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Packit |
fabffb |
* Boston, MA 02110-1301 USA.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Copyright (C) 2017 Red Hat, Inc.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include "nm-default.h"
|
|
Packit |
fabffb |
#include "nma-cert-chooser.h"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include "nma-cert-chooser-private.h"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#if !LIBNM_BUILD
|
|
Packit |
fabffb |
#define NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH "file://"
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* SECTION:nma-cert-chooser
|
|
Packit |
fabffb |
* @title: NMACertChooser
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Certificate chooser allows for selection of a certificate or
|
|
Packit |
fabffb |
* various schemes optionally accompanied with a key and passwords
|
|
Packit |
fabffb |
* or PIN.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* The widgets that implement this interface may allow selecting
|
|
Packit |
fabffb |
* the certificates from various sources such as files or cryptographic
|
|
Packit |
fabffb |
* tokens.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
enum {
|
|
Packit |
fabffb |
PROP_0,
|
|
Packit |
fabffb |
PROP_TITLE,
|
|
Packit |
fabffb |
PROP_FLAGS,
|
|
Packit |
fabffb |
LAST_PROP,
|
|
Packit |
fabffb |
};
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static GParamSpec *properties[LAST_PROP];
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
enum {
|
|
Packit |
fabffb |
CERT_VALIDATE,
|
|
Packit |
fabffb |
CERT_PASSWORD_VALIDATE,
|
|
Packit |
fabffb |
KEY_VALIDATE,
|
|
Packit |
fabffb |
KEY_PASSWORD_VALIDATE,
|
|
Packit |
fabffb |
CHANGED,
|
|
Packit |
fabffb |
LAST_SIGNAL,
|
|
Packit |
fabffb |
};
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static guint signals[LAST_SIGNAL] = { 0 };
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
G_DEFINE_TYPE (NMACertChooser, nma_cert_chooser, GTK_TYPE_GRID)
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#define NMA_CERT_CHOOSER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMACertChooser, NMA_IS_CERT_CHOOSER)
|
|
Packit |
fabffb |
#define NMA_CERT_CHOOSER_GET_VTABLE(o) (NMA_CERT_CHOOSER_GET_PRIVATE (o)->vtable)
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static gboolean
|
|
Packit |
fabffb |
accu_validation_error (GSignalInvocationHint *ihint,
|
|
Packit |
fabffb |
GValue *return_accu,
|
|
Packit |
fabffb |
const GValue *handler_return,
|
|
Packit |
fabffb |
gpointer data)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
if (g_value_get_boxed (handler_return)) {
|
|
Packit |
fabffb |
g_value_copy (handler_return, return_accu);
|
|
Packit |
fabffb |
return FALSE;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return TRUE;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static gchar *
|
|
Packit |
fabffb |
value_with_scheme_to_uri (const gchar *value, NMSetting8021xCKScheme scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
switch (scheme) {
|
|
Packit |
fabffb |
case NM_SETTING_802_1X_CK_SCHEME_PATH:
|
|
Packit |
fabffb |
return g_strdup_printf (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH "%s", value);
|
|
Packit |
fabffb |
#if LIBNM_BUILD
|
|
Packit |
fabffb |
case NM_SETTING_802_1X_CK_SCHEME_PKCS11:
|
|
Packit |
fabffb |
return g_strdup (value);
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
default:
|
|
Packit |
fabffb |
g_return_val_if_reached (NULL);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static gchar *
|
|
Packit |
fabffb |
uri_to_value_with_scheme (const gchar *uri, NMSetting8021xCKScheme *scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
if (!uri) {
|
|
Packit |
fabffb |
NM_SET_OUT (scheme, NM_SETTING_802_1X_CK_SCHEME_UNKNOWN);
|
|
Packit |
fabffb |
return NULL;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
if (g_str_has_prefix (uri, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) {
|
|
Packit |
fabffb |
NM_SET_OUT (scheme, NM_SETTING_802_1X_CK_SCHEME_PATH);
|
|
Packit |
fabffb |
return g_uri_unescape_string (uri + NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH), NULL);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#if LIBNM_BUILD
|
|
Packit |
fabffb |
if (g_str_has_prefix (uri, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PKCS11)) {
|
|
Packit |
fabffb |
NM_SET_OUT (scheme, NM_SETTING_802_1X_CK_SCHEME_PKCS11);
|
|
Packit |
fabffb |
return g_strdup (uri);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_val_if_reached (NULL);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_cert_uri:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @uri: the path or URI of a certificate
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the certificate URI for the chooser button.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_cert_uri (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
const gchar *uri)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->set_cert_uri (cert_chooser, uri);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_cert:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @value: the path or URI of a certificate
|
|
Packit |
fabffb |
* @scheme: the scheme of the certificate path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the certificate location for the chooser button.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_cert (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
const gchar *value,
|
|
Packit |
fabffb |
NMSetting8021xCKScheme scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
gs_free gchar *uri = NULL;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
if (!value)
|
|
Packit |
fabffb |
return;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
uri = value_with_scheme_to_uri (value, scheme);
|
|
Packit |
fabffb |
nma_cert_chooser_set_cert_uri (cert_chooser, uri);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_cert_uri:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Gets the real certificate URI from the chooser button along with the scheme.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: (transfer full) (nullable): the certificate URI
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_cert_uri (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->get_cert_uri (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_cert:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @scheme: (out): the scheme of the returned certificate path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Gets the real certificate location from the chooser button along with the scheme.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: (transfer full) (nullable): the certificate path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_cert (NMACertChooser *cert_chooser, NMSetting8021xCKScheme *scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
gs_free gchar *uri = NULL;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
uri = nma_cert_chooser_get_cert_uri (cert_chooser);
|
|
Packit |
fabffb |
return uri_to_value_with_scheme (uri, scheme);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_cert_password:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @password: the certificate PIN or password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the password or a PIN that might be required to access the certificate.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_cert_password (NMACertChooser *cert_chooser, const gchar *password)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
const NMACertChooserVtable *vtable;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
g_return_if_fail (password);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
vtable = NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser);
|
|
Packit |
fabffb |
if (vtable->set_cert_password)
|
|
Packit |
fabffb |
vtable->set_cert_password (cert_chooser, password);
|
|
Packit |
fabffb |
else
|
|
Packit |
fabffb |
g_warning ("Can't set certificate password");
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_cert_password:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Obtains the password or a PIN that was be required to access the certificate.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: the certificate PIN or password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
const gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_cert_password (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
const NMACertChooserVtable *vtable;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
vtable = NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser);
|
|
Packit |
fabffb |
if (!vtable->get_cert_password)
|
|
Packit |
fabffb |
return NULL;
|
|
Packit |
fabffb |
return vtable->get_cert_password (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_key_uri:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @uri: the URI of a key
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the key URI for the chooser button.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_key_uri (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
const gchar *uri)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->set_key_uri (cert_chooser, uri);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_key:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @value: the path or URI of a key
|
|
Packit |
fabffb |
* @scheme: the scheme of the key path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the key location for the chooser button.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_key (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
const gchar *value,
|
|
Packit |
fabffb |
NMSetting8021xCKScheme scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
gs_free gchar *uri = NULL;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
if (!value)
|
|
Packit |
fabffb |
return;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
uri = value_with_scheme_to_uri (value, scheme);
|
|
Packit |
fabffb |
nma_cert_chooser_set_key_uri (cert_chooser, uri);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_key:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @scheme: (out): the scheme of the returned key path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Gets the real key location from the chooser button along with the scheme.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: (transfer full) (nullable): the key path
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_key (NMACertChooser *cert_chooser, NMSetting8021xCKScheme *scheme)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
gs_free gchar *uri = NULL;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
uri = nma_cert_chooser_get_key_uri (cert_chooser);
|
|
Packit |
fabffb |
return uri_to_value_with_scheme (uri, scheme);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_key_uri:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Gets the real key URI from the chooser button along with the scheme.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: (transfer full) (nullable): the key URI
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_key_uri (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->get_key_uri (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_set_key_password:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @password: the key PIN or password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Sets the password or a PIN that might be required to access the key.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_set_key_password (NMACertChooser *cert_chooser, const gchar *password)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
g_return_if_fail (password);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->set_key_password (cert_chooser, password);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_key_password:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Obtains the password or a PIN that was be required to access the key.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: the key PIN or password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
const gchar *
|
|
Packit |
fabffb |
nma_cert_chooser_get_key_password (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->get_key_password (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_add_to_size_group:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @group: a size group
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Adds the labels to the specified size group so that they are aligned
|
|
Packit |
fabffb |
* nicely with other entries in a form.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* It is expected that the NMACertChooser is a GtkGrid with two columns
|
|
Packit |
fabffb |
* with the labels in the first one.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_add_to_size_group (NMACertChooser *cert_chooser, GtkSizeGroup *group)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->add_to_size_group (cert_chooser, group);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_validate:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @error: error return location
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Validates whether the chosen values make sense. The users can do further
|
|
Packit |
fabffb |
* validation by subscribing to the "*-changed" signals and returning an
|
|
Packit |
fabffb |
* error themselves.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: %TRUE if validation passes, %FALSE otherwise
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
gboolean
|
|
Packit |
fabffb |
nma_cert_chooser_validate (NMACertChooser *cert_chooser, GError **error)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser), TRUE);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->validate (cert_chooser, error);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_setup_cert_password_storage:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @initial_flags: initial secret flags to setup password menu from
|
|
Packit |
fabffb |
* @setting: #NMSetting containing the password, or NULL
|
|
Packit |
fabffb |
* @password_flags_name: name of the secret flags (like psk-flags), or NULL
|
|
Packit |
fabffb |
* @with_not_required: whether to include "Not required" menu item
|
|
Packit |
fabffb |
* @ask_mode: %TRUE if the entry is shown in ASK mode
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This method basically calls nma_utils_setup_password_storage()
|
|
Packit |
fabffb |
* on the certificate password entry, in case one is present.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_setup_cert_password_storage (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
NMSettingSecretFlags initial_flags,
|
|
Packit |
fabffb |
NMSetting *setting,
|
|
Packit |
fabffb |
const char *password_flags_name,
|
|
Packit |
fabffb |
gboolean with_not_required,
|
|
Packit |
fabffb |
gboolean ask_mode)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
const NMACertChooserVtable *vtable;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
vtable = NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser);
|
|
Packit |
fabffb |
if (vtable->setup_cert_password_storage) {
|
|
Packit |
fabffb |
vtable->setup_cert_password_storage (cert_chooser,
|
|
Packit |
fabffb |
initial_flags,
|
|
Packit |
fabffb |
setting,
|
|
Packit |
fabffb |
password_flags_name,
|
|
Packit |
fabffb |
with_not_required,
|
|
Packit |
fabffb |
ask_mode);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_update_cert_password_storage:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @secret_flags: secret flags to set
|
|
Packit |
fabffb |
* @setting: #NMSetting containing the password, or NULL
|
|
Packit |
fabffb |
* @password_flags_name: name of the secret flags (like psk-flags), or NULL
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This method basically calls nma_utils_update_password_storage()
|
|
Packit |
fabffb |
* on the certificate password entry, in case one is present.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_update_cert_password_storage (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
NMSettingSecretFlags secret_flags,
|
|
Packit |
fabffb |
NMSetting *setting,
|
|
Packit |
fabffb |
const char *password_flags_name)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
const NMACertChooserVtable *vtable;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
vtable = NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser);
|
|
Packit |
fabffb |
if (vtable->update_cert_password_storage) {
|
|
Packit |
fabffb |
vtable->update_cert_password_storage (cert_chooser,
|
|
Packit |
fabffb |
secret_flags,
|
|
Packit |
fabffb |
setting,
|
|
Packit |
fabffb |
password_flags_name);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_cert_password_flags:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns secret flags corresponding to the certificate password
|
|
Packit |
fabffb |
* if one is present. The chooser would typically call into
|
|
Packit |
fabffb |
* nma_utils_menu_to_secret_flags() for the certificate password
|
|
Packit |
fabffb |
* entry.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: secret flags corresponding to the certificate password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
NMSettingSecretFlags
|
|
Packit |
fabffb |
nma_cert_chooser_get_cert_password_flags (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
const NMACertChooserVtable *vtable;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser),
|
|
Packit |
fabffb |
NM_SETTING_SECRET_FLAG_NONE);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
vtable = NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser);
|
|
Packit |
fabffb |
if (!vtable->get_cert_password_flags)
|
|
Packit |
fabffb |
return NM_SETTING_SECRET_FLAG_NONE;
|
|
Packit |
fabffb |
return vtable->get_cert_password_flags (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_setup_key_password_storage:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @initial_flags: initial secret flags to setup password menu from
|
|
Packit |
fabffb |
* @setting: #NMSetting containing the password, or NULL
|
|
Packit |
fabffb |
* @password_flags_name: name of the secret flags (like psk-flags), or NULL
|
|
Packit |
fabffb |
* @with_not_required: whether to include "Not required" menu item
|
|
Packit |
fabffb |
* @ask_mode: %TRUE if the entry is shown in ASK mode
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This method basically calls nma_utils_setup_password_storage()
|
|
Packit |
fabffb |
* on the key password entry, in case one is present.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_setup_key_password_storage (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
NMSettingSecretFlags initial_flags,
|
|
Packit |
fabffb |
NMSetting *setting,
|
|
Packit |
fabffb |
const char *password_flags_name,
|
|
Packit |
fabffb |
gboolean with_not_required,
|
|
Packit |
fabffb |
gboolean ask_mode)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->setup_key_password_storage (cert_chooser,
|
|
Packit |
fabffb |
initial_flags,
|
|
Packit |
fabffb |
setting,
|
|
Packit |
fabffb |
password_flags_name,
|
|
Packit |
fabffb |
with_not_required,
|
|
Packit |
fabffb |
ask_mode);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_update_key_password_storage:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
* @secret_flags: secret flags to set
|
|
Packit |
fabffb |
* @setting: #NMSetting containing the password, or NULL
|
|
Packit |
fabffb |
* @password_flags_name: name of the secret flags (like psk-flags), or NULL
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* This method basically calls nma_utils_update_password_storage()
|
|
Packit |
fabffb |
* on the key password entry, in case one is present.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void
|
|
Packit |
fabffb |
nma_cert_chooser_update_key_password_storage (NMACertChooser *cert_chooser,
|
|
Packit |
fabffb |
NMSettingSecretFlags secret_flags,
|
|
Packit |
fabffb |
NMSetting *setting,
|
|
Packit |
fabffb |
const char *password_flags_name)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->update_key_password_storage (cert_chooser,
|
|
Packit |
fabffb |
secret_flags,
|
|
Packit |
fabffb |
setting,
|
|
Packit |
fabffb |
password_flags_name);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_get_key_password_flags:
|
|
Packit |
fabffb |
* @cert_chooser: certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns secret flags corresponding to the key password
|
|
Packit |
fabffb |
* if one is present. The chooser would typically call into
|
|
Packit |
fabffb |
* nma_utils_menu_to_secret_flags() for the key password
|
|
Packit |
fabffb |
* entry.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: secret flags corresponding to the key password
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
NMSettingSecretFlags
|
|
Packit |
fabffb |
nma_cert_chooser_get_key_password_flags (NMACertChooser *cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
g_return_val_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser),
|
|
Packit |
fabffb |
NM_SETTING_SECRET_FLAG_NONE);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return NMA_CERT_CHOOSER_GET_VTABLE (cert_chooser)->get_key_password_flags (cert_chooser);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static GObject *
|
|
Packit |
fabffb |
constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
GObject *object;
|
|
Packit |
fabffb |
NMACertChooser *cert_chooser;
|
|
Packit |
fabffb |
NMACertChooserFlags flags = NMA_CERT_CHOOSER_FLAG_NONE;
|
|
Packit |
fabffb |
NMACertChooserPrivate *priv;
|
|
Packit |
fabffb |
int i;
|
|
Packit |
fabffb |
const gchar *title = NULL;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
object = G_OBJECT_CLASS (nma_cert_chooser_parent_class)->constructor (type,
|
|
Packit |
fabffb |
n_construct_properties,
|
|
Packit |
fabffb |
construct_properties);
|
|
Packit |
fabffb |
cert_chooser = NMA_CERT_CHOOSER (object);
|
|
Packit |
fabffb |
priv = NMA_CERT_CHOOSER_GET_PRIVATE (cert_chooser);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
for (i = 0; i < n_construct_properties; i++) {
|
|
Packit |
fabffb |
if (strcmp (construct_properties[i].pspec->name, "title") == 0)
|
|
Packit |
fabffb |
title = g_value_get_string (construct_properties[i].value);
|
|
Packit |
fabffb |
if (strcmp (construct_properties[i].pspec->name, "flags") == 0)
|
|
Packit |
fabffb |
flags |= g_value_get_uint (construct_properties[i].value);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
priv->vtable = &nma_cert_chooser_vtable_file;
|
|
Packit |
fabffb |
#if LIBNM_BUILD && WITH_GCR
|
|
Packit |
fabffb |
if ((flags & NMA_CERT_CHOOSER_FLAG_PEM) == 0)
|
|
Packit |
fabffb |
priv->vtable = &nma_cert_chooser_vtable_pkcs11;
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Initialize the vtable and construct-time properties */
|
|
Packit |
fabffb |
priv->vtable->init (cert_chooser);
|
|
Packit |
fabffb |
priv->vtable->set_flags (cert_chooser, flags);
|
|
Packit |
fabffb |
priv->vtable->set_title (cert_chooser, title);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return object;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
NMACertChooser *cert_chooser = NMA_CERT_CHOOSER (object);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_return_if_fail (NMA_IS_CERT_CHOOSER (cert_chooser));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
switch (property_id) {
|
|
Packit |
fabffb |
case PROP_TITLE:
|
|
Packit |
fabffb |
case PROP_FLAGS:
|
|
Packit |
fabffb |
/* Just ignore these, should be set at construct time */
|
|
Packit |
fabffb |
break;
|
|
Packit |
fabffb |
default:
|
|
Packit |
fabffb |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
fabffb |
break;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
nma_cert_chooser_class_init (NMACertChooserClass *klass)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_type_class_add_private (object_class, sizeof (NMACertChooserPrivate));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
object_class->constructor = constructor;
|
|
Packit |
fabffb |
object_class->set_property = set_property;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::title:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Name of the certificate or certificate/key pair to be chosen.
|
|
Packit |
fabffb |
* Used in labels and chooser dialog titles.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
properties[PROP_TITLE] = g_param_spec_string ("title",
|
|
Packit |
fabffb |
"Title",
|
|
Packit |
fabffb |
"Certificate Chooser Title",
|
|
Packit |
fabffb |
NULL,
|
|
Packit |
fabffb |
G_PARAM_WRITABLE
|
|
Packit |
fabffb |
| G_PARAM_CONSTRUCT_ONLY
|
|
Packit |
fabffb |
| G_PARAM_STATIC_STRINGS);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::flags:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* The #NMACertChooserFlags flags that influnce which chooser
|
|
Packit |
fabffb |
* implementation is used and configure its behavior.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
properties[PROP_FLAGS] = g_param_spec_uint ("flags",
|
|
Packit |
fabffb |
"Flags",
|
|
Packit |
fabffb |
"Certificate Chooser Flags",
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_FLAG_NONE,
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_FLAG_CERT
|
|
Packit |
fabffb |
| NMA_CERT_CHOOSER_FLAG_PASSWORDS
|
|
Packit |
fabffb |
| NMA_CERT_CHOOSER_FLAG_PEM,
|
|
Packit |
fabffb |
NMA_CERT_CHOOSER_FLAG_NONE,
|
|
Packit |
fabffb |
G_PARAM_WRITABLE
|
|
Packit |
fabffb |
| G_PARAM_CONSTRUCT_ONLY
|
|
Packit |
fabffb |
| G_PARAM_STATIC_STRINGS);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_object_class_install_properties (object_class, LAST_PROP, properties);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::cert-validate:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Emitted when the certificate needs validation. The handlers can indicate that
|
|
Packit |
fabffb |
* the certificate is invalid by returning an error, which blocks further
|
|
Packit |
fabffb |
* signal processing and causes a call to nma_cert_chooser_validate()
|
|
Packit |
fabffb |
* to fail.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
signals[CERT_VALIDATE] = g_signal_new ("cert-validate",
|
|
Packit |
fabffb |
NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
G_SIGNAL_RUN_LAST,
|
|
Packit |
fabffb |
0,
|
|
Packit |
fabffb |
accu_validation_error, NULL, NULL,
|
|
Packit |
fabffb |
G_TYPE_ERROR, 0);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::cert-password-validate:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Emitted when the certificate password needs validation. The handlers
|
|
Packit |
fabffb |
* can indicate that the password is invalid by returning an error, which blocks further
|
|
Packit |
fabffb |
* signal processing and causes a call to nma_cert_chooser_validate()
|
|
Packit |
fabffb |
* to fail.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
signals[CERT_PASSWORD_VALIDATE] = g_signal_new ("cert-password-validate",
|
|
Packit |
fabffb |
NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
G_SIGNAL_RUN_LAST,
|
|
Packit |
fabffb |
0,
|
|
Packit |
fabffb |
accu_validation_error, NULL, NULL,
|
|
Packit |
fabffb |
G_TYPE_ERROR, 0);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::key-validate:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Emitted when the key needs validation. The handlers can indicate that
|
|
Packit |
fabffb |
* the key is invalid by returning an error, which blocks further
|
|
Packit |
fabffb |
* signal processing and causes a call to nma_cert_chooser_validate()
|
|
Packit |
fabffb |
* to fail.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
signals[KEY_VALIDATE] = g_signal_new ("key-validate",
|
|
Packit |
fabffb |
NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
G_SIGNAL_RUN_LAST,
|
|
Packit |
fabffb |
0,
|
|
Packit |
fabffb |
accu_validation_error, NULL, NULL,
|
|
Packit |
fabffb |
G_TYPE_ERROR, 0);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::key-password-validate:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Emitted when the key password needs validation. The handlers can indicate
|
|
Packit |
fabffb |
* that the password is invalid by returning an error, which blocks further
|
|
Packit |
fabffb |
* signal processing and causes a call to nma_cert_chooser_validate()
|
|
Packit |
fabffb |
* to fail.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
signals[KEY_PASSWORD_VALIDATE] = g_signal_new ("key-password-validate",
|
|
Packit |
fabffb |
NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
G_SIGNAL_RUN_LAST,
|
|
Packit |
fabffb |
0,
|
|
Packit |
fabffb |
accu_validation_error, NULL, NULL,
|
|
Packit |
fabffb |
G_TYPE_ERROR, 0);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* NMACertChooser::changed:
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Emitted when anything changes in the certificate chooser, be it a certificate,
|
|
Packit |
fabffb |
* a key or associated passwords.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
signals[CHANGED] = g_signal_new ("changed",
|
|
Packit |
fabffb |
NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE,
|
|
Packit |
fabffb |
0,
|
|
Packit |
fabffb |
NULL, NULL, NULL,
|
|
Packit |
fabffb |
G_TYPE_NONE, 0);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
nma_cert_chooser_init (NMACertChooser *file_cert_chooser)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/**
|
|
Packit |
fabffb |
* nma_cert_chooser_new:
|
|
Packit |
fabffb |
* @title: title of the certificate chooser dialog
|
|
Packit |
fabffb |
* @flags: the flags that configure the capabilities of the button
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Constructs the button that is capable of selecting a certificate
|
|
Packit |
fabffb |
* and a key.
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Returns: (transfer full): the certificate chooser button instance
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Since: 1.8.0
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
GtkWidget *
|
|
Packit |
fabffb |
nma_cert_chooser_new (const gchar *title, NMACertChooserFlags flags)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
return g_object_new (NMA_TYPE_CERT_CHOOSER,
|
|
Packit |
fabffb |
"title", title,
|
|
Packit |
fabffb |
"flags", flags,
|
|
Packit |
fabffb |
NULL);
|
|
Packit |
fabffb |
}
|