repo: Add ostree_repo_verify_summary()

Verifies signatures on a summary -- both taken as GBytes inputs -- and
returns an OstreeGpgVerifyResult.
This commit is contained in:
Matthew Barnes 2015-12-16 18:53:57 -05:00
parent 403e05af24
commit 1df16a7675
3 changed files with 55 additions and 10 deletions

View File

@ -313,6 +313,7 @@ ostree_repo_sign_commit
ostree_repo_append_gpg_signature
ostree_repo_verify_commit
ostree_repo_verify_commit_ext
ostree_repo_verify_summary
ostree_repo_regenerate_summary
<SUBSECTION Standard>
OSTREE_REPO

View File

@ -1879,17 +1879,13 @@ ostree_repo_remote_fetch_summary (OstreeRepo *self,
if (gpg_verify_summary && summary != NULL && signatures != NULL)
{
glnx_unref_object OstreeGpgVerifyResult *result = NULL;
g_autoptr(GVariant) signatures_variant = NULL;
signatures_variant = g_variant_new_from_bytes (OSTREE_SUMMARY_SIG_GVARIANT_FORMAT,
signatures, FALSE);
result = _ostree_repo_gpg_verify_with_metadata (self,
summary,
signatures_variant,
name,
NULL, NULL,
cancellable,
error);
result = ostree_repo_verify_summary (self,
name,
summary,
signatures,
cancellable,
error);
if (result == NULL)
goto out;
@ -4489,6 +4485,47 @@ ostree_repo_verify_commit_ext (OstreeRepo *self,
error);
}
/**
* ostree_repo_verify_summary:
* @self: Repo
* @remote_name: Name of remote
* @summary: Summary data as a #GBytes
* @signatures: Summary signatures as a #GBytes
* @cancellable: Cancellable
* @error: Error
*
* Verify @signatures for @summary data using GPG keys in the keyring for
* @remote_name, and return an #OstreeGpgVerifyResult.
*
* Returns: (transfer full): an #OstreeGpgVerifyResult, or %NULL on error
*/
OstreeGpgVerifyResult *
ostree_repo_verify_summary (OstreeRepo *self,
const char *remote_name,
GBytes *summary,
GBytes *signatures,
GCancellable *cancellable,
GError **error)
{
g_autoptr(GVariant) signatures_variant = NULL;
g_return_val_if_fail (OSTREE_IS_REPO (self), NULL);
g_return_val_if_fail (remote_name != NULL, NULL);
g_return_val_if_fail (summary != NULL, NULL);
g_return_val_if_fail (signatures != NULL, NULL);
signatures_variant = g_variant_new_from_bytes (OSTREE_SUMMARY_SIG_GVARIANT_FORMAT,
signatures, FALSE);
return _ostree_repo_gpg_verify_with_metadata (self,
summary,
signatures_variant,
remote_name,
NULL, NULL,
cancellable,
error);
}
/**
* ostree_repo_regenerate_summary:
* @self: Repo

View File

@ -782,6 +782,13 @@ OstreeGpgVerifyResult * ostree_repo_verify_commit_ext (OstreeRepo *self,
GCancellable *cancellable,
GError **error);
OstreeGpgVerifyResult * ostree_repo_verify_summary (OstreeRepo *self,
const char *remote_name,
GBytes *summary,
GBytes *signatures,
GCancellable *cancellable,
GError **error);
gboolean ostree_repo_regenerate_summary (OstreeRepo *self,
GVariant *additional_metadata,
GCancellable *cancellable,