summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-gpg-verify-result-dummy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libostree/ostree-gpg-verify-result-dummy.c')
-rw-r--r--src/libostree/ostree-gpg-verify-result-dummy.c303
1 files changed, 303 insertions, 0 deletions
diff --git a/src/libostree/ostree-gpg-verify-result-dummy.c b/src/libostree/ostree-gpg-verify-result-dummy.c
new file mode 100644
index 00000000..a62ff915
--- /dev/null
+++ b/src/libostree/ostree-gpg-verify-result-dummy.c
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2015 Red Hat, Inc.
+ * Copyright (C) 2019 Collabora Ltd.
+ *
+ * SPDX-License-Identifier: LGPL-2.0+
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include "libglnx.h"
+
+#include "ostree-gpg-verify-result.h"
+
+/**
+ * SECTION: ostree-gpg-verify-result
+ * @title: GPG signature verification results
+ * @short_description: Dummy functions for detached GPG signatures
+ *
+ * This file contain dummy functions for GPG signatures checks to
+ * provide API backward compatibility.
+ */
+
+#ifndef OSTREE_DISABLE_GPGME
+#error This file should not be compiled if GPG support is enabled
+#endif
+
+/**
+ * OstreeGpgVerifyResult:
+ *
+ * Private instance structure.
+ */
+struct OstreeGpgVerifyResult {
+ GObject parent;
+};
+
+
+typedef struct {
+ GObjectClass parent_class;
+} OstreeGpgVerifyResultClass;
+
+static void ostree_gpg_verify_result_initable_iface_init (GInitableIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (OstreeGpgVerifyResult,
+ ostree_gpg_verify_result,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+ ostree_gpg_verify_result_initable_iface_init))
+
+static void
+ostree_gpg_verify_result_class_init (OstreeGpgVerifyResultClass *class)
+{
+}
+
+static void
+ostree_gpg_verify_result_initable_iface_init (GInitableIface *iface)
+{
+}
+
+static void
+ostree_gpg_verify_result_init (OstreeGpgVerifyResult *result)
+{
+}
+
+/**
+ * ostree_gpg_verify_result_count_all:
+ * @result: an #OstreeGpgVerifyResult
+ *
+ * Counts all the signatures in @result.
+ *
+ * Returns: signature count
+ */
+guint
+ostree_gpg_verify_result_count_all (OstreeGpgVerifyResult *result)
+{
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+ return 0;
+}
+
+/**
+ * ostree_gpg_verify_result_count_valid:
+ * @result: an #OstreeGpgVerifyResult
+ *
+ * Counts only the valid signatures in @result.
+ *
+ * Returns: valid signature count
+ */
+guint
+ostree_gpg_verify_result_count_valid (OstreeGpgVerifyResult *result)
+{
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+ return 0;
+}
+
+/**
+ * ostree_gpg_verify_result_lookup:
+ * @result: an #OstreeGpgVerifyResult
+ * @key_id: a GPG key ID or fingerprint
+ * @out_signature_index: (out): return location for the index of the signature
+ * signed by @key_id, or %NULL
+ *
+ * Searches @result for a signature signed by @key_id. If a match is found,
+ * the function returns %TRUE and sets @out_signature_index so that further
+ * signature details can be obtained through ostree_gpg_verify_result_get().
+ * If no match is found, the function returns %FALSE and leaves
+ * @out_signature_index unchanged.
+ *
+ * Returns: %TRUE on success, %FALSE on failure
+ **/
+gboolean
+ostree_gpg_verify_result_lookup (OstreeGpgVerifyResult *result,
+ const gchar *key_id,
+ guint *out_signature_index)
+{
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+ return FALSE;
+}
+
+/**
+ * ostree_gpg_verify_result_get:
+ * @result: an #OstreeGpgVerifyResult
+ * @signature_index: which signature to get attributes from
+ * @attrs: (array length=n_attrs): Array of requested attributes
+ * @n_attrs: Length of the @attrs array
+ *
+ * Builds a #GVariant tuple of requested attributes for the GPG signature at
+ * @signature_index in @result. See the #OstreeGpgSignatureAttr description
+ * for the #GVariantType of each available attribute.
+ *
+ * It is a programmer error to request an invalid #OstreeGpgSignatureAttr or
+ * an invalid @signature_index. Use ostree_gpg_verify_result_count_all() to
+ * find the number of signatures in @result.
+ *
+ * Returns: a new, floating, #GVariant tuple
+ **/
+GVariant *
+ostree_gpg_verify_result_get (OstreeGpgVerifyResult *result,
+ guint signature_index,
+ OstreeGpgSignatureAttr *attrs,
+ guint n_attrs)
+{
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+ return NULL;
+}
+
+/**
+ * ostree_gpg_verify_result_get_all:
+ * @result: an #OstreeGpgVerifyResult
+ * @signature_index: which signature to get attributes from
+ *
+ * Builds a #GVariant tuple of all available attributes for the GPG signature
+ * at @signature_index in @result.
+ *
+ * The child values in the returned #GVariant tuple are ordered to match the
+ * #OstreeGpgSignatureAttr enumeration, which means the enum values can be
+ * used as index values in functions like g_variant_get_child(). See the
+ * #OstreeGpgSignatureAttr description for the #GVariantType of each
+ * available attribute.
+ *
+ * <note>
+ * <para>
+ * The #OstreeGpgSignatureAttr enumeration may be extended in the future
+ * with new attributes, which would affect the #GVariant tuple returned by
+ * this function. While the position and type of current child values in
+ * the #GVariant tuple will not change, to avoid backward-compatibility
+ * issues <emphasis>please do not depend on the tuple's overall size or
+ * type signature</emphasis>.
+ * </para>
+ * </note>
+ *
+ * It is a programmer error to request an invalid @signature_index. Use
+ * ostree_gpg_verify_result_count_all() to find the number of signatures in
+ * @result.
+ *
+ * Returns: a new, floating, #GVariant tuple
+ **/
+GVariant *
+ostree_gpg_verify_result_get_all (OstreeGpgVerifyResult *result,
+ guint signature_index)
+{
+ g_return_val_if_fail (OSTREE_IS_GPG_VERIFY_RESULT (result), NULL);
+
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+ return NULL;
+}
+
+/**
+ * ostree_gpg_verify_result_describe:
+ * @result: an #OstreeGpgVerifyResult
+ * @signature_index: which signature to describe
+ * @output_buffer: a #GString to hold the description
+ * @line_prefix: (allow-none): optional line prefix string
+ * @flags: flags to adjust the description format
+ *
+ * Appends a brief, human-readable description of the GPG signature at
+ * @signature_index in @result to the @output_buffer. The description
+ * spans multiple lines. A @line_prefix string, if given, will precede
+ * each line of the description.
+ *
+ * The @flags argument is reserved for future variations to the description
+ * format. Currently must be 0.
+ *
+ * It is a programmer error to request an invalid @signature_index. Use
+ * ostree_gpg_verify_result_count_all() to find the number of signatures in
+ * @result.
+ */
+void
+ostree_gpg_verify_result_describe (OstreeGpgVerifyResult *result,
+ guint signature_index,
+ GString *output_buffer,
+ const gchar *line_prefix,
+ OstreeGpgSignatureFormatFlags flags)
+{
+ g_autoptr(GVariant) variant = NULL;
+
+ g_return_if_fail (OSTREE_IS_GPG_VERIFY_RESULT (result));
+
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+
+ variant = ostree_gpg_verify_result_get_all (result, signature_index);
+
+ ostree_gpg_verify_result_describe_variant (variant, output_buffer, line_prefix, flags);
+}
+
+/**
+ * ostree_gpg_verify_result_describe_variant:
+ * @variant: a #GVariant from ostree_gpg_verify_result_get_all()
+ * @output_buffer: a #GString to hold the description
+ * @line_prefix: (allow-none): optional line prefix string
+ * @flags: flags to adjust the description format
+ *
+ * Similar to ostree_gpg_verify_result_describe() but takes a #GVariant of
+ * all attributes for a GPG signature instead of an #OstreeGpgVerifyResult
+ * and signature index.
+ *
+ * The @variant <emphasis>MUST</emphasis> have been created by
+ * ostree_gpg_verify_result_get_all().
+ */
+void
+ostree_gpg_verify_result_describe_variant (GVariant *variant,
+ GString *output_buffer,
+ const gchar *line_prefix,
+ OstreeGpgSignatureFormatFlags flags)
+{
+ const char *type_string;
+
+ g_return_if_fail (variant != NULL);
+ g_return_if_fail (output_buffer != NULL);
+
+ /* Verify the variant's type string. This code is
+ * not prepared to handle just any random GVariant. */
+ type_string = g_variant_get_type_string (variant);
+ g_return_if_fail (strcmp (type_string, "(bbbbbsxxsssssxx)") == 0);
+
+ g_string_append (output_buffer,
+ "GPG feature is disabled in a build time\n");
+
+ g_critical ("%s: GPG feature is disabled in a build time", __FUNCTION__);
+}
+
+/**
+ * ostree_gpg_verify_result_require_valid_signature:
+ * @result: (nullable): an #OstreeGpgVerifyResult
+ * @error: A #GError
+ *
+ * Checks if the result contains at least one signature from the
+ * trusted keyring. You can call this function immediately after
+ * ostree_repo_verify_summary() or ostree_repo_verify_commit_ext() -
+ * it will handle the %NULL @result and filled @error too.
+ *
+ * Returns: %TRUE if @result was not %NULL and had at least one
+ * signature from trusted keyring, otherwise %FALSE
+ *
+ * Since: 2016.6
+ */
+gboolean
+ostree_gpg_verify_result_require_valid_signature (OstreeGpgVerifyResult *result,
+ GError **error)
+{
+ if (result == NULL)
+ return FALSE;
+
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ "'%s': GPG feature is disabled in a build time",
+ __FUNCTION__);
+ return FALSE;
+}
+
+G_DEFINE_QUARK (OstreeGpgError, ostree_gpg_error)