mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-02 13:30:13 +01:00
ifcfg-rh: reuse file-suffix from NMSetting8021xSchemeVtable
Keyfile writer computes the file extension and only uses the file suffix from the vtable. Do that for ifcfg-rh too. No change in behavior.
This commit is contained in:
parent
7a21ae3e77
commit
324cf7ce82
7 changed files with 29 additions and 36 deletions
|
|
@ -353,7 +353,7 @@ typedef struct {
|
|||
const char * (*uri_func) (NMSetting8021x *setting);
|
||||
const char * (*passwd_func) (NMSetting8021x *setting);
|
||||
NMSettingSecretFlags (*pwflag_func) (NMSetting8021x *setting);
|
||||
const char *keyfile_suffix;
|
||||
const char *file_suffix;
|
||||
} NMSetting8021xSchemeVtable;
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_ca_cert_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_ca_cert_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_ca_cert_password_flags,
|
||||
.keyfile_suffix = "ca-cert",
|
||||
.file_suffix = "ca-cert",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT] = {
|
||||
|
|
@ -201,7 +201,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_phase2_ca_cert_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_phase2_ca_cert_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_phase2_ca_cert_password_flags,
|
||||
.keyfile_suffix = "inner-ca-cert",
|
||||
.file_suffix = "inner-ca-cert",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT] = {
|
||||
|
|
@ -213,7 +213,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_client_cert_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_client_cert_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_client_cert_password_flags,
|
||||
.keyfile_suffix = "client-cert",
|
||||
.file_suffix = "client-cert",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT] = {
|
||||
|
|
@ -225,7 +225,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_phase2_client_cert_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_phase2_client_cert_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_phase2_client_cert_password_flags,
|
||||
.keyfile_suffix = "inner-client-cert",
|
||||
.file_suffix = "inner-client-cert",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY] = {
|
||||
|
|
@ -237,7 +237,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_private_key_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_private_key_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_private_key_password_flags,
|
||||
.keyfile_suffix = "private-key",
|
||||
.file_suffix = "private-key",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY] = {
|
||||
|
|
@ -249,7 +249,7 @@ const NMSetting8021xSchemeVtable nm_setting_8021x_scheme_vtable[] = {
|
|||
.uri_func = nm_setting_802_1x_get_phase2_private_key_uri,
|
||||
.passwd_func = nm_setting_802_1x_get_phase2_private_key_password,
|
||||
.pwflag_func = nm_setting_802_1x_get_phase2_private_key_password_flags,
|
||||
.keyfile_suffix = "inner-private-key",
|
||||
.file_suffix = "inner-private-key",
|
||||
},
|
||||
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_UNKNOWN] = { NULL },
|
||||
|
|
|
|||
|
|
@ -100,19 +100,20 @@ utils_should_ignore_file (const char *filename, gboolean only_ifcfg)
|
|||
}
|
||||
|
||||
char *
|
||||
utils_cert_path (const char *parent, const char *suffix)
|
||||
utils_cert_path (const char *parent, const char *suffix, const char *extension)
|
||||
{
|
||||
gs_free char *dir = NULL;
|
||||
const char *name;
|
||||
char *dir, *path;
|
||||
|
||||
g_return_val_if_fail (parent != NULL, NULL);
|
||||
g_return_val_if_fail (suffix != NULL, NULL);
|
||||
g_return_val_if_fail (parent, NULL);
|
||||
g_return_val_if_fail (suffix, NULL);
|
||||
g_return_val_if_fail (extension, NULL);
|
||||
|
||||
name = utils_get_ifcfg_name (parent, FALSE);
|
||||
g_return_val_if_fail (name, NULL);
|
||||
|
||||
dir = g_path_get_dirname (parent);
|
||||
path = g_strdup_printf ("%s/%s-%s", dir, name, suffix);
|
||||
g_free (dir);
|
||||
return path;
|
||||
return g_strdup_printf ("%s/%s-%s.%s", dir, name, suffix, extension);
|
||||
}
|
||||
|
||||
const char *
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#define NM_IFCFG_CONNECTION_LOG_FMTD "%s (%s,\"%s\",%p)"
|
||||
#define NM_IFCFG_CONNECTION_LOG_ARGD(con) NM_IFCFG_CONNECTION_LOG_PATH (nm_settings_connection_get_filename ((NMSettingsConnection *) (con))), nm_connection_get_uuid ((NMConnection *) (con)), nm_connection_get_id ((NMConnection *) (con)), (con)
|
||||
|
||||
char *utils_cert_path (const char *parent, const char *suffix);
|
||||
char *utils_cert_path (const char *parent, const char *suffix, const char *extension);
|
||||
|
||||
const char *utils_get_ifcfg_name (const char *file, gboolean only_ifcfg);
|
||||
|
||||
|
|
|
|||
|
|
@ -149,42 +149,32 @@ error:
|
|||
typedef struct {
|
||||
const NMSetting8021xSchemeVtable *vtable;
|
||||
const char *ifcfg_rh_key;
|
||||
const char *ifcfg_rh_suffix;
|
||||
const char *ifcfg_rh_suffix_p12;
|
||||
} Setting8021xSchemeVtable;
|
||||
|
||||
static const Setting8021xSchemeVtable setting_8021x_scheme_vtable[] = {
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT],
|
||||
.ifcfg_rh_key = "IEEE_8021X_CA_CERT",
|
||||
.ifcfg_rh_suffix = "ca-cert.der",
|
||||
},
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT],
|
||||
.ifcfg_rh_key = "IEEE_8021X_INNER_CA_CERT",
|
||||
.ifcfg_rh_suffix = "inner-ca-cert.der",
|
||||
},
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT],
|
||||
.ifcfg_rh_key = "IEEE_8021X_CLIENT_CERT",
|
||||
.ifcfg_rh_suffix = "client-cert.der",
|
||||
},
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT],
|
||||
.ifcfg_rh_key = "IEEE_8021X_INNER_CLIENT_CERT",
|
||||
.ifcfg_rh_suffix = "inner-client-cert.der",
|
||||
},
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY],
|
||||
.ifcfg_rh_key = "IEEE_8021X_PRIVATE_KEY",
|
||||
.ifcfg_rh_suffix = "private-key.pem",
|
||||
.ifcfg_rh_suffix_p12 = "private-key.p12",
|
||||
},
|
||||
[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY] = {
|
||||
.vtable = &nm_setting_8021x_scheme_vtable[NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY],
|
||||
.ifcfg_rh_key = "IEEE_8021X_INNER_PRIVATE_KEY",
|
||||
.ifcfg_rh_suffix = "inner-private-key.pem",
|
||||
.ifcfg_rh_suffix_p12 = "inner-private-key.p12",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -200,7 +190,7 @@ write_object (NMSetting8021x *s_8021x,
|
|||
const char *password = NULL;
|
||||
NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE;
|
||||
char *secret_name, *secret_flags;
|
||||
const char *suffix;
|
||||
const char *extension;
|
||||
|
||||
g_return_val_if_fail (ifcfg != NULL, FALSE);
|
||||
g_return_val_if_fail (objtype != NULL, FALSE);
|
||||
|
|
@ -233,10 +223,12 @@ write_object (NMSetting8021x *s_8021x,
|
|||
g_free (secret_name);
|
||||
g_free (secret_flags);
|
||||
|
||||
suffix = objtype->ifcfg_rh_suffix;
|
||||
if ( objtype->vtable->format_func
|
||||
&& objtype->vtable->format_func (s_8021x) == NM_SETTING_802_1X_CK_FORMAT_PKCS12)
|
||||
suffix = objtype->ifcfg_rh_suffix_p12;
|
||||
if (!objtype->vtable->format_func)
|
||||
extension = "der";
|
||||
else if (objtype->vtable->format_func (s_8021x) == NM_SETTING_802_1X_CK_FORMAT_PKCS12)
|
||||
extension = "p12";
|
||||
else
|
||||
extension = "pem";
|
||||
|
||||
/* If certificate/private key wasn't sent, the connection may no longer be
|
||||
* 802.1x and thus we clear out the paths and certs.
|
||||
|
|
@ -251,7 +243,7 @@ write_object (NMSetting8021x *s_8021x,
|
|||
* /etc/sysconfig/network-scripts/ca-cert-Test_Write_Wifi_WPA_EAP-TLS.der
|
||||
* will be deleted, but /etc/pki/tls/cert.pem will not.
|
||||
*/
|
||||
standard_file = utils_cert_path (svFileGetName (ifcfg), suffix);
|
||||
standard_file = utils_cert_path (svFileGetName (ifcfg), objtype->vtable->file_suffix, extension);
|
||||
if (g_file_test (standard_file, G_FILE_TEST_EXISTS))
|
||||
ignored = unlink (standard_file);
|
||||
g_free (standard_file);
|
||||
|
|
@ -274,7 +266,7 @@ write_object (NMSetting8021x *s_8021x,
|
|||
char *new_file;
|
||||
GError *write_error = NULL;
|
||||
|
||||
new_file = utils_cert_path (svFileGetName (ifcfg), suffix);
|
||||
new_file = utils_cert_path (svFileGetName (ifcfg), objtype->vtable->file_suffix, extension);
|
||||
if (!new_file) {
|
||||
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_FAILED,
|
||||
"Could not create file path for %s / %s",
|
||||
|
|
|
|||
|
|
@ -4486,15 +4486,15 @@ test_write_wired_8021x_tls (gconstpointer test_data)
|
|||
}
|
||||
|
||||
/* Clean up created certs and keys */
|
||||
tmp = utils_cert_path (testfile, "ca-cert.der");
|
||||
tmp = utils_cert_path (testfile, "ca-cert", "der");
|
||||
nmtst_file_unlink_if_exists (tmp);
|
||||
g_free (tmp);
|
||||
|
||||
tmp = utils_cert_path (testfile, "client-cert.der");
|
||||
tmp = utils_cert_path (testfile, "client-cert", "der");
|
||||
nmtst_file_unlink_if_exists (tmp);
|
||||
g_free (tmp);
|
||||
|
||||
tmp = utils_cert_path (testfile, "private-key.pem");
|
||||
tmp = utils_cert_path (testfile, "private-key", "pem");
|
||||
nmtst_file_unlink_if_exists (tmp);
|
||||
g_free (tmp);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ cert_writer (NMConnection *connection,
|
|||
* from now on instead of pushing around the certificate data.
|
||||
*/
|
||||
new_path = g_strdup_printf ("%s/%s-%s.%s", info->keyfile_dir, nm_connection_get_uuid (connection),
|
||||
cert_data->vtable->keyfile_suffix, ext);
|
||||
cert_data->vtable->file_suffix, ext);
|
||||
|
||||
success = nm_utils_file_set_contents (new_path, (const gchar *) blob_data,
|
||||
blob_len, 0600, &local);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue