/* SPDX-License-Identifier: GPL-2.0+ */
|
#ifndef FSVERITYSETUP_H
|
#define FSVERITYSETUP_H
|
|
#include "util.h"
|
|
struct fsveritysetup_params {
|
const struct fsverity_hash_alg *hash_alg;
|
u8 *salt;
|
size_t saltlen;
|
int blocksize;
|
int blockbits; /* ilog2(blocksize) */
|
unsigned int hashes_per_block; /* blocksize / digest_size */
|
const char *signing_key_file;
|
const char *signing_cert_file;
|
const char *signature_file;
|
struct fsverity_elide_patch **elisions_and_patches;
|
size_t num_elisions_and_patches;
|
};
|
|
void fsverity_append_extension(void **buf_p, int type,
|
const void *ext, size_t extlen);
|
|
#define FSVERITY_EXTLEN(inner_len) \
|
ALIGN(sizeof(struct fsverity_extension) + (inner_len), 8)
|
|
/* elide_patch.c */
|
bool load_elisions_and_patches(const struct string_list *elide_opts,
|
const struct string_list *patch_opts,
|
struct fsveritysetup_params *params);
|
void free_elisions_and_patches(struct fsveritysetup_params *params);
|
bool apply_elisions_and_patches(const struct fsveritysetup_params *params,
|
struct filedes *in, u64 in_length,
|
struct filedes *out_ret, u64 *out_length_ret);
|
size_t total_elide_patch_ext_length(const struct fsveritysetup_params *params);
|
void append_elide_patch_exts(void **buf_p,
|
const struct fsveritysetup_params *params);
|
/* sign.c */
|
int append_signed_measurement(struct filedes *out,
|
const struct fsveritysetup_params *params,
|
const u8 *measurement);
|
|
#endif /* FSVERITYSETUP_H */
|