#ifndef _WIMLIB_SECURITY_H
#define _WIMLIB_SECURITY_H
-#include "wimlib/rbtree.h"
#include "wimlib/types.h"
-/* Red-black tree that maps SHA1 message digests of security descriptors to
- * security IDs, which are themselves indices into the table of security
- * descriptors in the 'struct wim_security_data'. */
+struct wim_security_data;
+struct avl_tree_node;
+
+/* Map from SHA1 message digests of security descriptors to security IDs, which
+ * are themselves indices into the table of security descriptors in the 'struct
+ * wim_security_data'. */
struct wim_sd_set {
struct wim_security_data *sd;
- struct rb_root rb_root;
- int32_t orig_num_entries;
+ struct avl_tree_node *root;
+ s32 orig_num_entries;
};
/* Table of security descriptors for a WIM image. */
};
extern void
-destroy_sd_set(struct wim_sd_set *sd_set, bool rollback);
+rollback_new_security_descriptors(struct wim_sd_set *sd_set);
-extern int
+extern void
+destroy_sd_set(struct wim_sd_set *sd_set);
+
+extern s32
sd_set_add_sd(struct wim_sd_set *sd_set, const char descriptor[],
size_t size);
new_wim_security_data(void);
extern int
-read_wim_security_data(const u8 metadata_resource[], size_t
- metadata_resource_len, struct wim_security_data **sd_p);
+read_wim_security_data(const u8 *buf, size_t buf_len,
+ struct wim_security_data **sd_ret);
extern u8 *
-write_wim_security_data(const struct wim_security_data * restrict sd, u8 *
- restrict p);
+write_wim_security_data(const struct wim_security_data * restrict sd,
+ u8 * restrict p);
extern void
print_wim_security_data(const struct wim_security_data *sd);