1*88cd3e6cSJaskaran Khurana // SPDX-License-Identifier: GPL-2.0 2*88cd3e6cSJaskaran Khurana /* 3*88cd3e6cSJaskaran Khurana * Copyright (C) 2019 Microsoft Corporation. 4*88cd3e6cSJaskaran Khurana * 5*88cd3e6cSJaskaran Khurana * Author: Jaskaran Singh Khurana <jaskarankhurana@linux.microsoft.com> 6*88cd3e6cSJaskaran Khurana * 7*88cd3e6cSJaskaran Khurana */ 8*88cd3e6cSJaskaran Khurana #ifndef DM_VERITY_SIG_VERIFICATION_H 9*88cd3e6cSJaskaran Khurana #define DM_VERITY_SIG_VERIFICATION_H 10*88cd3e6cSJaskaran Khurana 11*88cd3e6cSJaskaran Khurana #define DM_VERITY_ROOT_HASH_VERIFICATION "DM Verity Sig Verification" 12*88cd3e6cSJaskaran Khurana #define DM_VERITY_ROOT_HASH_VERIFICATION_OPT_SIG_KEY "root_hash_sig_key_desc" 13*88cd3e6cSJaskaran Khurana 14*88cd3e6cSJaskaran Khurana struct dm_verity_sig_opts { 15*88cd3e6cSJaskaran Khurana unsigned int sig_size; 16*88cd3e6cSJaskaran Khurana u8 *sig; 17*88cd3e6cSJaskaran Khurana }; 18*88cd3e6cSJaskaran Khurana 19*88cd3e6cSJaskaran Khurana #ifdef CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG 20*88cd3e6cSJaskaran Khurana 21*88cd3e6cSJaskaran Khurana #define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 2 22*88cd3e6cSJaskaran Khurana 23*88cd3e6cSJaskaran Khurana int verity_verify_root_hash(const void *data, size_t data_len, 24*88cd3e6cSJaskaran Khurana const void *sig_data, size_t sig_len); 25*88cd3e6cSJaskaran Khurana bool verity_verify_is_sig_opt_arg(const char *arg_name); 26*88cd3e6cSJaskaran Khurana 27*88cd3e6cSJaskaran Khurana int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v, 28*88cd3e6cSJaskaran Khurana struct dm_verity_sig_opts *sig_opts, 29*88cd3e6cSJaskaran Khurana unsigned int *argc, const char *arg_name); 30*88cd3e6cSJaskaran Khurana 31*88cd3e6cSJaskaran Khurana void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts); 32*88cd3e6cSJaskaran Khurana 33*88cd3e6cSJaskaran Khurana #else 34*88cd3e6cSJaskaran Khurana 35*88cd3e6cSJaskaran Khurana #define DM_VERITY_ROOT_HASH_VERIFICATION_OPTS 0 36*88cd3e6cSJaskaran Khurana 37*88cd3e6cSJaskaran Khurana int verity_verify_root_hash(const void *data, size_t data_len, 38*88cd3e6cSJaskaran Khurana const void *sig_data, size_t sig_len) 39*88cd3e6cSJaskaran Khurana { 40*88cd3e6cSJaskaran Khurana return 0; 41*88cd3e6cSJaskaran Khurana } 42*88cd3e6cSJaskaran Khurana 43*88cd3e6cSJaskaran Khurana bool verity_verify_is_sig_opt_arg(const char *arg_name) 44*88cd3e6cSJaskaran Khurana { 45*88cd3e6cSJaskaran Khurana return false; 46*88cd3e6cSJaskaran Khurana } 47*88cd3e6cSJaskaran Khurana 48*88cd3e6cSJaskaran Khurana int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v, 49*88cd3e6cSJaskaran Khurana struct dm_verity_sig_opts *sig_opts, 50*88cd3e6cSJaskaran Khurana unsigned int *argc, const char *arg_name) 51*88cd3e6cSJaskaran Khurana { 52*88cd3e6cSJaskaran Khurana return -EINVAL; 53*88cd3e6cSJaskaran Khurana } 54*88cd3e6cSJaskaran Khurana 55*88cd3e6cSJaskaran Khurana void verity_verify_sig_opts_cleanup(struct dm_verity_sig_opts *sig_opts) 56*88cd3e6cSJaskaran Khurana { 57*88cd3e6cSJaskaran Khurana } 58*88cd3e6cSJaskaran Khurana 59*88cd3e6cSJaskaran Khurana #endif /* CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG */ 60*88cd3e6cSJaskaran Khurana #endif /* DM_VERITY_SIG_VERIFICATION_H */ 61