/* * Copyright (C) 2017 Richard Hughes * * SPDX-License-Identifier: LGPL-2.1+ */ #pragma once #include #include #include #define FU_TYPE_CABINET (fu_cabinet_get_type ()) G_DECLARE_FINAL_TYPE (FuCabinet, fu_cabinet, FU, CABINET, GObject) /** * FuCabinetParseFlags: * @FU_CABINET_PARSE_FLAG_NONE: No flags set * * The flags to use when loading the cabinet. **/ typedef enum { FU_CABINET_PARSE_FLAG_NONE = 0, /*< private >*/ FU_CABINET_PARSE_FLAG_LAST } FuCabinetParseFlags; /** * FuCabinetExportFlags: * @FU_CABINET_EXPORT_FLAG_NONE: No flags set * * The flags to use when exporting the archive. **/ typedef enum { FU_CABINET_EXPORT_FLAG_NONE = 0, /*< private >*/ FU_CABINET_EXPORT_FLAG_LAST } FuCabinetExportFlags; /** * FuCabinetSignFlags: * @FU_CABINET_SIGN_FLAG_NONE: No flags set * * The flags to use when signing the archive. **/ typedef enum { FU_CABINET_SIGN_FLAG_NONE = 0, /*< private >*/ FU_CABINET_SIGN_FLAG_LAST } FuCabinetSignFlags; FuCabinet *fu_cabinet_new (void); void fu_cabinet_set_size_max (FuCabinet *self, guint64 size_max); void fu_cabinet_set_jcat_context (FuCabinet *self, JcatContext *jcat_context); gboolean fu_cabinet_parse (FuCabinet *self, GBytes *data, FuCabinetParseFlags flags, GError **error) G_GNUC_WARN_UNUSED_RESULT; gboolean fu_cabinet_sign (FuCabinet *self, GBytes *cert, GBytes *privkey, FuCabinetSignFlags flags, GError **error) G_GNUC_WARN_UNUSED_RESULT; void fu_cabinet_add_file (FuCabinet *self, const gchar *basename, GBytes *data); GBytes *fu_cabinet_get_file (FuCabinet *self, const gchar *basename, GError **error); GBytes *fu_cabinet_export (FuCabinet *self, FuCabinetExportFlags flags, GError **error) G_GNUC_WARN_UNUSED_RESULT; XbSilo *fu_cabinet_get_silo (FuCabinet *self);