mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-03 00:02:45 +00:00
Move the release trust information to FwupdRelease
It only remained on FwupdResult because I couldn't make up my mind about whether it was a property of the device, or the firmware release. It's more logically the latter, as you could have a .cab file with multiple versions of the firmware and only the first being signed.
This commit is contained in:
parent
6ab53111db
commit
b3ca245b74
@ -242,4 +242,10 @@ G_DEPRECATED_FOR(fwupd_release_set_appstream_id)
|
||||
void fwupd_result_set_unique_id (FwupdResult *result,
|
||||
const gchar *unique_id);
|
||||
|
||||
G_DEPRECATED_FOR(fwupd_release_get_trust_flags)
|
||||
FwupdTrustFlags fwupd_result_get_update_trust_flags (FwupdResult *result);
|
||||
G_DEPRECATED_FOR(fwupd_release_set_trust_flags)
|
||||
void fwupd_result_set_update_trust_flags (FwupdResult *result,
|
||||
FwupdTrustFlags trust_flags);
|
||||
|
||||
#endif /* __FWUPD_DEPRECATED_H */
|
||||
|
@ -46,6 +46,7 @@ typedef struct {
|
||||
gchar *version;
|
||||
gchar *remote_id;
|
||||
guint64 size;
|
||||
FwupdTrustFlags trust_flags;
|
||||
} FwupdReleasePrivate;
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (FwupdRelease, fwupd_release, G_TYPE_OBJECT)
|
||||
@ -523,6 +524,41 @@ fwupd_release_set_name (FwupdRelease *release, const gchar *name)
|
||||
priv->name = g_strdup (name);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_release_get_trust_flags:
|
||||
* @release: A #FwupdRelease
|
||||
*
|
||||
* Gets the trust level of the release.
|
||||
*
|
||||
* Returns: the trust bitfield, e.g. #FWUPD_TRUST_FLAG_PAYLOAD
|
||||
*
|
||||
* Since: 0.9.8
|
||||
**/
|
||||
FwupdTrustFlags
|
||||
fwupd_release_get_trust_flags (FwupdRelease *release)
|
||||
{
|
||||
FwupdReleasePrivate *priv = GET_PRIVATE (release);
|
||||
g_return_val_if_fail (FWUPD_IS_RELEASE (release), 0);
|
||||
return priv->trust_flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_release_set_trust_flags:
|
||||
* @release: A #FwupdRelease
|
||||
* @trust_flags: the bitfield, e.g. #FWUPD_TRUST_FLAG_PAYLOAD
|
||||
*
|
||||
* Sets the trust level of the release.
|
||||
*
|
||||
* Since: 0.9.8
|
||||
**/
|
||||
void
|
||||
fwupd_release_set_trust_flags (FwupdRelease *release, FwupdTrustFlags trust_flags)
|
||||
{
|
||||
FwupdReleasePrivate *priv = GET_PRIVATE (release);
|
||||
g_return_if_fail (FWUPD_IS_RELEASE (release));
|
||||
priv->trust_flags = trust_flags;
|
||||
}
|
||||
|
||||
void
|
||||
fwupd_release_to_variant_builder (FwupdRelease *release, GVariantBuilder *builder)
|
||||
{
|
||||
@ -600,6 +636,11 @@ fwupd_release_to_variant_builder (FwupdRelease *release, GVariantBuilder *builde
|
||||
FWUPD_RESULT_KEY_UPDATE_VENDOR,
|
||||
g_variant_new_string (priv->vendor));
|
||||
}
|
||||
if (priv->trust_flags != 0) {
|
||||
g_variant_builder_add (builder, "{sv}",
|
||||
FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS,
|
||||
g_variant_new_uint64 (priv->trust_flags));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -691,6 +732,10 @@ fwupd_release_from_key_value (FwupdRelease *release, const gchar *key, GVariant
|
||||
fwupd_release_set_vendor (release, g_variant_get_string (value, NULL));
|
||||
return;
|
||||
}
|
||||
if (g_strcmp0 (key, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS) == 0) {
|
||||
fwupd_release_set_trust_flags (release, g_variant_get_uint64 (value));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -717,6 +762,27 @@ fwupd_pad_kv_siz (GString *str, const gchar *key, guint64 value)
|
||||
fwupd_pad_kv_str (str, key, tmp);
|
||||
}
|
||||
|
||||
static void
|
||||
fwupd_pad_kv_tfl (GString *str, const gchar *key, FwupdTrustFlags trust_flags)
|
||||
{
|
||||
guint i;
|
||||
g_autoptr(GString) tmp = NULL;
|
||||
|
||||
tmp = g_string_new ("");
|
||||
for (i = 1; i < FWUPD_TRUST_FLAG_LAST; i *= 2) {
|
||||
if ((trust_flags & i) == 0)
|
||||
continue;
|
||||
g_string_append_printf (tmp, "%s|",
|
||||
fwupd_trust_flag_to_string (i));
|
||||
}
|
||||
if (tmp->len == 0) {
|
||||
g_string_append (tmp, fwupd_trust_flag_to_string (0));
|
||||
} else {
|
||||
g_string_truncate (tmp, tmp->len - 1);
|
||||
}
|
||||
fwupd_pad_kv_str (str, key, tmp->str);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_release_to_string:
|
||||
* @release: A #FwupdRelease
|
||||
@ -752,6 +818,7 @@ fwupd_release_to_string (FwupdRelease *release)
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_URI, priv->uri);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_HOMEPAGE, priv->homepage);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_UPDATE_VENDOR, priv->vendor);
|
||||
fwupd_pad_kv_tfl (str, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, priv->trust_flags);
|
||||
|
||||
return g_string_free (str, FALSE);
|
||||
}
|
||||
|
@ -87,6 +87,9 @@ void fwupd_release_set_size (FwupdRelease *release,
|
||||
const gchar *fwupd_release_get_license (FwupdRelease *release);
|
||||
void fwupd_release_set_license (FwupdRelease *release,
|
||||
const gchar *license);
|
||||
FwupdTrustFlags fwupd_release_get_trust_flags (FwupdRelease *release);
|
||||
void fwupd_release_set_trust_flags (FwupdRelease *release,
|
||||
FwupdTrustFlags trust_flags);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -37,7 +37,6 @@ static void fwupd_result_finalize (GObject *object);
|
||||
|
||||
typedef struct {
|
||||
gchar *unique_id;
|
||||
FwupdTrustFlags update_trust_flags;
|
||||
FwupdDevice *device;
|
||||
FwupdRelease *release;
|
||||
} FwupdResultPrivate;
|
||||
@ -1067,7 +1066,7 @@ fwupd_result_get_update_trust_flags (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), 0);
|
||||
return priv->update_trust_flags;
|
||||
return fwupd_release_get_trust_flags (priv->release);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1084,7 +1083,7 @@ fwupd_result_set_update_trust_flags (FwupdResult *result, FwupdTrustFlags trust_
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_if_fail (FWUPD_IS_RESULT (result));
|
||||
priv->update_trust_flags = trust_flags;
|
||||
fwupd_release_set_trust_flags (priv->release, trust_flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1373,11 +1372,6 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string)
|
||||
|
||||
/* create an array with all the metadata in */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
if (priv->update_trust_flags != 0) {
|
||||
g_variant_builder_add (&builder, "{sv}",
|
||||
FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS,
|
||||
g_variant_new_uint64 (priv->update_trust_flags));
|
||||
}
|
||||
|
||||
/* device and release objects */
|
||||
fwupd_release_to_variant_builder (priv->release, &builder);
|
||||
@ -1395,48 +1389,6 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
fwupd_result_from_key_value (FwupdResult *result, const gchar *key, GVariant *value)
|
||||
{
|
||||
if (g_strcmp0 (key, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS) == 0) {
|
||||
fwupd_result_set_update_trust_flags (result, g_variant_get_uint64 (value));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
fwupd_pad_kv_str (GString *str, const gchar *key, const gchar *value)
|
||||
{
|
||||
/* ignore */
|
||||
if (key == NULL || value == NULL)
|
||||
return;
|
||||
g_string_append_printf (str, " %s: ", key);
|
||||
for (gsize i = strlen (key); i < 20; i++)
|
||||
g_string_append (str, " ");
|
||||
g_string_append_printf (str, "%s\n", value);
|
||||
}
|
||||
|
||||
static void
|
||||
fwupd_pad_kv_tfl (GString *str, const gchar *key, FwupdTrustFlags trust_flags)
|
||||
{
|
||||
guint i;
|
||||
g_autoptr(GString) tmp = NULL;
|
||||
|
||||
tmp = g_string_new ("");
|
||||
for (i = 1; i < FWUPD_TRUST_FLAG_LAST; i *= 2) {
|
||||
if ((trust_flags & i) == 0)
|
||||
continue;
|
||||
g_string_append_printf (tmp, "%s|",
|
||||
fwupd_trust_flag_to_string (i));
|
||||
}
|
||||
if (tmp->len == 0) {
|
||||
g_string_append (tmp, fwupd_trust_flag_to_string (0));
|
||||
} else {
|
||||
g_string_truncate (tmp, tmp->len - 1);
|
||||
}
|
||||
fwupd_pad_kv_str (str, key, tmp->str);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_to_string:
|
||||
* @result: A #FwupdResult
|
||||
@ -1464,8 +1416,6 @@ fwupd_result_to_string (FwupdResult *result)
|
||||
g_string_append (str, device_str);
|
||||
release_str = fwupd_release_to_string (priv->release);
|
||||
g_string_append (str, release_str);
|
||||
if (fwupd_release_get_version (priv->release) != NULL)
|
||||
fwupd_pad_kv_tfl (str, FWUPD_RESULT_KEY_UPDATE_TRUST_FLAGS, priv->update_trust_flags);
|
||||
|
||||
return g_string_free (str, FALSE);
|
||||
}
|
||||
@ -1561,7 +1511,6 @@ fwupd_result_from_variant_iter (FwupdResult *result, GVariantIter *iter)
|
||||
GVariant *value;
|
||||
const gchar *key;
|
||||
while (g_variant_iter_next (iter, "{&sv}", &key, &value)) {
|
||||
fwupd_result_from_key_value (result, key, value);
|
||||
fwupd_release_from_key_value (priv->release, key, value);
|
||||
fwupd_device_from_key_value (priv->device, key, value);
|
||||
g_variant_unref (value);
|
||||
|
@ -51,10 +51,6 @@ FwupdResult *fwupd_result_new_from_data (GVariant *data);
|
||||
FwupdRelease *fwupd_result_get_release (FwupdResult *result);
|
||||
FwupdDevice *fwupd_result_get_device (FwupdResult *result);
|
||||
|
||||
FwupdTrustFlags fwupd_result_get_update_trust_flags (FwupdResult *result);
|
||||
void fwupd_result_set_update_trust_flags (FwupdResult *result,
|
||||
FwupdTrustFlags trust_flags);
|
||||
|
||||
GVariant *fwupd_result_to_data (FwupdResult *result,
|
||||
const gchar *type_string);
|
||||
gchar *fwupd_result_to_string (FwupdResult *result);
|
||||
|
@ -199,7 +199,8 @@ fwupd_result_func (void)
|
||||
fwupd_device_add_icon (dev, "input-gaming");
|
||||
fwupd_device_add_icon (dev, "input-mouse");
|
||||
fwupd_device_add_flag (dev, FWUPD_DEVICE_FLAG_REQUIRE_AC);
|
||||
fwupd_result_set_update_trust_flags (result, FWUPD_TRUST_FLAG_PAYLOAD);
|
||||
rel = fwupd_result_get_release (result);
|
||||
fwupd_release_set_trust_flags (rel, FWUPD_TRUST_FLAG_PAYLOAD);
|
||||
|
||||
rel = fwupd_result_get_release (result);
|
||||
fwupd_release_add_checksum (rel, "deadbeef");
|
||||
|
@ -1950,7 +1950,6 @@ fu_engine_get_result_from_app (FuEngine *self, AsApp *app, GError **error)
|
||||
release = as_app_get_release_default (app);
|
||||
if (!fu_engine_get_release_trust_flags (release, &trust_flags, error))
|
||||
return NULL;
|
||||
fwupd_result_set_update_trust_flags (res, trust_flags);
|
||||
|
||||
/* possibly convert the version from 0x to dotted */
|
||||
fu_engine_vendor_quirk_release_version (app);
|
||||
@ -1961,6 +1960,7 @@ fu_engine_get_result_from_app (FuEngine *self, AsApp *app, GError **error)
|
||||
/* create a result with all the metadata in */
|
||||
fwupd_device_set_description (dev, as_app_get_description (app, NULL));
|
||||
rel = fwupd_result_get_release (res);
|
||||
fwupd_release_set_trust_flags (rel, trust_flags);
|
||||
fwupd_release_set_homepage (rel, as_app_get_url_item (app, AS_URL_KIND_HOMEPAGE));
|
||||
fwupd_release_set_license (rel, as_app_get_project_license (app));
|
||||
fwupd_release_set_name (rel, as_app_get_name (app, NULL));
|
||||
|
Loading…
Reference in New Issue
Block a user