0001
0002
0003
0004
0005
0006
0007
0008 #ifndef DM_VERITY_SIG_VERIFICATION_H
0009 #define DM_VERITY_SIG_VERIFICATION_H
0010
0011 #define DM_VERITY_ROOT_HASH_VERIFICATION "DM Verity Sig Verification"
0012 #define DM_VERITY_ROOT_HASH_VERIFICATION_OPT_SIG_KEY "root_hash_sig_key_desc"
0013
0014 struct dm_verity_sig_opts {
0015 unsigned int sig_size;
0016 u8 *sig;
0017 };
0018
0019 #ifdef CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG
0020
0021 #define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 2
0022
0023 int verity_verify_root_hash(const void *data, size_t data_len,
0024 const void *sig_data, size_t sig_len);
0025 bool verity_verify_is_sig_opt_arg(const char *arg_name);
0026
0027 int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
0028 struct dm_verity_sig_opts *sig_opts,
0029 unsigned int *argc, const char *arg_name);
0030
0031 void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts);
0032
0033 #else
0034
0035 #define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 0
0036
0037 static inline int verity_verify_root_hash(const void *data, size_t data_len,
0038 const void *sig_data, size_t sig_len)
0039 {
0040 return 0;
0041 }
0042
0043 static inline bool verity_verify_is_sig_opt_arg(const char *arg_name)
0044 {
0045 return false;
0046 }
0047
0048 static inline int verity_verify_sig_parse_opt_args(struct dm_arg_set *as,
0049 struct dm_verity *v, struct dm_verity_sig_opts *sig_opts,
0050 unsigned int *argc, const char *arg_name)
0051 {
0052 return -EINVAL;
0053 }
0054
0055 static inline void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts)
0056 {
0057 }
0058
0059 #endif
0060 #endif