if (!*argc) {
ti->error = DM_VERITY_VERIFY_ERR("Signature key not specified"); return -EINVAL;
}
sig_key = dm_shift_arg(as);
(*argc)--;
ret = verity_verify_get_sig_from_key(sig_key, sig_opts); if (ret < 0) {
ti->error = DM_VERITY_VERIFY_ERR("Invalid key specified"); return ret;
}
v->signature_key_desc = kstrdup(sig_key, GFP_KERNEL); if (!v->signature_key_desc) {
ti->error = DM_VERITY_VERIFY_ERR("Could not allocate memory for signature key"); return -ENOMEM;
}
return 0;
}
/* * verify_verify_roothash - Verify the root hash of the verity hash device * using builtin trusted keys. * * @root_hash: For verity, the roothash/data to be verified. * @root_hash_len: Size of the roothash/data to be verified. * @sig_data: The trusted signature that verifies the roothash/data. * @sig_len: Size of the signature. *
*/ int verity_verify_root_hash(constvoid *root_hash, size_t root_hash_len, constvoid *sig_data, size_t sig_len)
{ int ret;
if (!root_hash || root_hash_len == 0) return -EINVAL;
if (!sig_data || sig_len == 0) { if (DM_VERITY_IS_SIG_FORCE_ENABLED()) return -ENOKEY; else return 0;
}
ret = verify_pkcs7_signature(root_hash, root_hash_len, sig_data,
sig_len, #ifdef CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING
VERIFY_USE_SECONDARY_KEYRING, #else
NULL, #endif
VERIFYING_UNSPECIFIED_SIGNATURE, NULL, NULL); #ifdef CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING if (ret == -ENOKEY || ret == -EKEYREJECTED)
ret = verify_pkcs7_signature(root_hash, root_hash_len, sig_data,
sig_len,
VERIFY_USE_PLATFORM_KEYRING,
VERIFYING_UNSPECIFIED_SIGNATURE, NULL, NULL); #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.