When the IMA measurement list contains file signatures, the file signatures are verified either by calculating the local file data hash or based on the file hash contained in the measurement list. In either case a list of trusted public keys needs to be provided. In addition to the list of known/unknown public keys needed to verify the measurement list being output, the specific files signed by an unknown public key are output as well. Output the individual "unknown keyid" file messages based on log level. Example 1: "ima_measurement" list of known/unknown public keys Verify the provided IMA measurement list against the provided TPM 1.2 PCRs. --validate: ignore measurement violations. --verify: calculate and verify the template digest against the template data. --verify-sig: verify the file signature against the file hash stored in the template data. $ evmctl ima_measurement /tmp/local_binary_runtime_measurements --pcrs /tmp/local_pcrs_new --validate --verify --verify-sig key 1: 14c2d147 /etc/keys/x509_evm.der key 2: 6e6c1046 (unknown keyid) key 3: c4e2426e (unknown keyid) Matched per TPM bank calculated digest(s). Example 2: verbose mode (-v) includes specific unknown files. /usr/bin/evmctl: verification failed: unknown keyid 6e6c1046 Signed-off-by: Mimi Zohar <zohar@xxxxxxxxxxxxx> --- src/libimaevm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libimaevm.c b/src/libimaevm.c index 16e07e82b9e3..fa6c27858d0f 100644 --- a/src/libimaevm.c +++ b/src/libimaevm.c @@ -512,8 +512,9 @@ static int verify_hash_v2(const char *file, const unsigned char *hash, int size, if (!pkey) { uint32_t keyid = hdr->keyid; - log_info("%s: verification failed: unknown keyid %x\n", - file, __be32_to_cpup(&keyid)); + if (imaevm_params.verbose > LOG_INFO) + log_info("%s: verification failed: unknown keyid %x\n", + file, __be32_to_cpup(&keyid)); return -1; } -- 2.7.5