sign: fix unneeded objects creation
Do not create objects just for supported modules list. Signed-off-by: Denis Pynkin <denis.pynkin@collabora.com>
This commit is contained in:
parent
4b9232b1fe
commit
2d39126628
|
|
@ -38,8 +38,31 @@
|
||||||
#include "ostree-sign-ed25519.h"
|
#include "ostree-sign-ed25519.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef G_LOG_DOMAIN
|
||||||
#define G_LOG_DOMAIN "OSTreeSign"
|
#define G_LOG_DOMAIN "OSTreeSign"
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
gchar *name;
|
||||||
|
GType type;
|
||||||
|
} _sign_type;
|
||||||
|
|
||||||
|
_sign_type sign_types[] =
|
||||||
|
{
|
||||||
|
#if defined(HAVE_LIBSODIUM)
|
||||||
|
{"ed25519", 0},
|
||||||
|
#endif
|
||||||
|
{"dummy", 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
#if defined(HAVE_LIBSODIUM)
|
||||||
|
SIGN_ED25519,
|
||||||
|
#endif
|
||||||
|
SIGN_DUMMY
|
||||||
|
};
|
||||||
|
|
||||||
G_DEFINE_INTERFACE (OstreeSign, ostree_sign, G_TYPE_OBJECT)
|
G_DEFINE_INTERFACE (OstreeSign, ostree_sign, G_TYPE_OBJECT)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -110,7 +133,8 @@ ostree_sign_load_pk (OstreeSign *self,
|
||||||
{
|
{
|
||||||
g_debug ("%s enter", __FUNCTION__);
|
g_debug ("%s enter", __FUNCTION__);
|
||||||
|
|
||||||
g_return_val_if_fail (OSTREE_SIGN_GET_IFACE (self)->load_pk != NULL, FALSE);
|
if (OSTREE_SIGN_GET_IFACE (self)->load_pk == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return OSTREE_SIGN_GET_IFACE (self)->load_pk (self, options, error);
|
return OSTREE_SIGN_GET_IFACE (self)->load_pk (self, options, error);
|
||||||
}
|
}
|
||||||
|
|
@ -208,14 +232,6 @@ ostree_sign_commit_verify (OstreeSign *self,
|
||||||
|
|
||||||
g_autoptr(GBytes) signed_data = g_variant_get_data_as_bytes (commit_variant);
|
g_autoptr(GBytes) signed_data = g_variant_get_data_as_bytes (commit_variant);
|
||||||
|
|
||||||
/* XXX This is a hackish way to indicate to use ALL remote-specific
|
|
||||||
* keyrings in the signature verification. We want this when
|
|
||||||
* verifying a signed commit that's already been pulled. */
|
|
||||||
/*
|
|
||||||
if (remote_name == NULL)
|
|
||||||
remote_name = OSTREE_ALL_REMOTES;
|
|
||||||
*/
|
|
||||||
|
|
||||||
g_autoptr(GVariant) signatures = NULL;
|
g_autoptr(GVariant) signatures = NULL;
|
||||||
|
|
||||||
g_autofree gchar *signature_key = ostree_sign_metadata_key(self);
|
g_autofree gchar *signature_key = ostree_sign_metadata_key(self);
|
||||||
|
|
@ -246,33 +262,31 @@ OstreeSign * ostree_sign_get_by_name (const gchar *name, GError **error)
|
||||||
{
|
{
|
||||||
g_debug ("%s enter", __FUNCTION__);
|
g_debug ("%s enter", __FUNCTION__);
|
||||||
|
|
||||||
GType types [] = {
|
OstreeSign *sign = NULL;
|
||||||
|
|
||||||
|
/* Get types if not initialized yet */
|
||||||
#if defined(HAVE_LIBSODIUM)
|
#if defined(HAVE_LIBSODIUM)
|
||||||
OSTREE_TYPE_SIGN_ED25519,
|
if (sign_types[SIGN_ED25519].type == 0)
|
||||||
|
sign_types[SIGN_ED25519].type = OSTREE_TYPE_SIGN_ED25519;
|
||||||
#endif
|
#endif
|
||||||
OSTREE_TYPE_SIGN_DUMMY
|
if (sign_types[SIGN_DUMMY].type == 0)
|
||||||
};
|
sign_types[SIGN_DUMMY].type = OSTREE_TYPE_SIGN_DUMMY;
|
||||||
OstreeSign *ret = NULL;
|
|
||||||
|
|
||||||
for (gint i=0; i < G_N_ELEMENTS(types); i++)
|
for (gint i=0; i < G_N_ELEMENTS(sign_types); i++)
|
||||||
{
|
{
|
||||||
g_autoptr (OstreeSign) sign = g_object_new (types[i], NULL);
|
if (g_strcmp0 (name, sign_types[i].name) == 0)
|
||||||
g_autofree gchar *sign_name = OSTREE_SIGN_GET_IFACE (sign)->get_name(sign);
|
{
|
||||||
|
g_debug ("Found '%s' signing module", sign_types[i].name);
|
||||||
g_debug ("Found '%s' signing module", sign_name);
|
sign = g_object_new (sign_types[i].type, NULL);
|
||||||
|
break;
|
||||||
if (g_strcmp0 (name, sign_name) == 0)
|
}
|
||||||
{
|
|
||||||
ret = g_steal_pointer (&sign);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == NULL)
|
if (sign == NULL)
|
||||||
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
"Requested signature type is not implemented");
|
"Requested signature type is not implemented");
|
||||||
|
|
||||||
return ret;
|
return sign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -336,19 +350,12 @@ GStrv ostree_sign_list_names(void)
|
||||||
{
|
{
|
||||||
g_debug ("%s enter", __FUNCTION__);
|
g_debug ("%s enter", __FUNCTION__);
|
||||||
|
|
||||||
GType types [] = {
|
GStrv names = g_new0 (char *, G_N_ELEMENTS(sign_types) + 1);
|
||||||
#if defined(HAVE_LIBSODIUM)
|
|
||||||
OSTREE_TYPE_SIGN_ED25519,
|
|
||||||
#endif
|
|
||||||
OSTREE_TYPE_SIGN_DUMMY
|
|
||||||
};
|
|
||||||
GStrv names = g_new0 (char *, G_N_ELEMENTS(types)+1);
|
|
||||||
gint i = 0;
|
gint i = 0;
|
||||||
|
|
||||||
for (i=0; i < G_N_ELEMENTS(types); i++)
|
for (i=0; i < G_N_ELEMENTS(sign_types); i++)
|
||||||
{
|
{
|
||||||
g_autoptr (OstreeSign) sign = g_object_new (types[i], NULL);
|
names[i] = g_strdup(sign_types[i].name);
|
||||||
names[i] = OSTREE_SIGN_GET_IFACE (sign)->get_name(sign);
|
|
||||||
g_debug ("Found '%s' signing module", names[i]);
|
g_debug ("Found '%s' signing module", names[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue