certs: Add wrapper function to check blacklisted binary hash

The -EKEYREJECTED error returned by existing is_hash_blacklisted() is
misleading when called for checking against blacklisted hash of a
binary.

This patch adds a wrapper function is_binary_blacklisted() to return
-EPERM error if binary is blacklisted.

Signed-off-by: Nayna Jain <nayna@linux.ibm.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/1572492694-6520-7-git-send-email-zohar@linux.ibm.com
This commit is contained in:
Nayna Jain 2019-10-30 23:31:31 -04:00 committed by Michael Ellerman
parent e14555e3d0
commit 2434f7d2d4
2 changed files with 15 additions and 0 deletions

View File

@ -135,6 +135,15 @@ int is_hash_blacklisted(const u8 *hash, size_t hash_len, const char *type)
} }
EXPORT_SYMBOL_GPL(is_hash_blacklisted); EXPORT_SYMBOL_GPL(is_hash_blacklisted);
int is_binary_blacklisted(const u8 *hash, size_t hash_len)
{
if (is_hash_blacklisted(hash, hash_len, "bin") == -EKEYREJECTED)
return -EPERM;
return 0;
}
EXPORT_SYMBOL_GPL(is_binary_blacklisted);
/* /*
* Initialise the blacklist * Initialise the blacklist
*/ */

View File

@ -35,12 +35,18 @@ extern int restrict_link_by_builtin_and_secondary_trusted(
extern int mark_hash_blacklisted(const char *hash); extern int mark_hash_blacklisted(const char *hash);
extern int is_hash_blacklisted(const u8 *hash, size_t hash_len, extern int is_hash_blacklisted(const u8 *hash, size_t hash_len,
const char *type); const char *type);
extern int is_binary_blacklisted(const u8 *hash, size_t hash_len);
#else #else
static inline int is_hash_blacklisted(const u8 *hash, size_t hash_len, static inline int is_hash_blacklisted(const u8 *hash, size_t hash_len,
const char *type) const char *type)
{ {
return 0; return 0;
} }
static inline int is_binary_blacklisted(const u8 *hash, size_t hash_len)
{
return 0;
}
#endif #endif
#ifdef CONFIG_IMA_BLACKLIST_KEYRING #ifdef CONFIG_IMA_BLACKLIST_KEYRING