forked from mirrors/linux
		
	 2434f7d2d4
			
		
	
	
		2434f7d2d4
		
	
	
	
	
		
			
			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
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-or-later */
 | |
| /* System keyring containing trusted public keys.
 | |
|  *
 | |
|  * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
 | |
|  * Written by David Howells (dhowells@redhat.com)
 | |
|  */
 | |
| 
 | |
| #ifndef _KEYS_SYSTEM_KEYRING_H
 | |
| #define _KEYS_SYSTEM_KEYRING_H
 | |
| 
 | |
| #include <linux/key.h>
 | |
| 
 | |
| #ifdef CONFIG_SYSTEM_TRUSTED_KEYRING
 | |
| 
 | |
| extern int restrict_link_by_builtin_trusted(struct key *keyring,
 | |
| 					    const struct key_type *type,
 | |
| 					    const union key_payload *payload,
 | |
| 					    struct key *restriction_key);
 | |
| 
 | |
| #else
 | |
| #define restrict_link_by_builtin_trusted restrict_link_reject
 | |
| #endif
 | |
| 
 | |
| #ifdef CONFIG_SECONDARY_TRUSTED_KEYRING
 | |
| extern int restrict_link_by_builtin_and_secondary_trusted(
 | |
| 	struct key *keyring,
 | |
| 	const struct key_type *type,
 | |
| 	const union key_payload *payload,
 | |
| 	struct key *restriction_key);
 | |
| #else
 | |
| #define restrict_link_by_builtin_and_secondary_trusted restrict_link_by_builtin_trusted
 | |
| #endif
 | |
| 
 | |
| #ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
 | |
| extern int mark_hash_blacklisted(const char *hash);
 | |
| extern int is_hash_blacklisted(const u8 *hash, size_t hash_len,
 | |
| 			       const char *type);
 | |
| extern int is_binary_blacklisted(const u8 *hash, size_t hash_len);
 | |
| #else
 | |
| static inline int is_hash_blacklisted(const u8 *hash, size_t hash_len,
 | |
| 				      const char *type)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline int is_binary_blacklisted(const u8 *hash, size_t hash_len)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifdef CONFIG_IMA_BLACKLIST_KEYRING
 | |
| extern struct key *ima_blacklist_keyring;
 | |
| 
 | |
| static inline struct key *get_ima_blacklist_keyring(void)
 | |
| {
 | |
| 	return ima_blacklist_keyring;
 | |
| }
 | |
| #else
 | |
| static inline struct key *get_ima_blacklist_keyring(void)
 | |
| {
 | |
| 	return NULL;
 | |
| }
 | |
| #endif /* CONFIG_IMA_BLACKLIST_KEYRING */
 | |
| 
 | |
| #if defined(CONFIG_INTEGRITY_PLATFORM_KEYRING) && \
 | |
| 	defined(CONFIG_SYSTEM_TRUSTED_KEYRING)
 | |
| extern void __init set_platform_trusted_keys(struct key *keyring);
 | |
| #else
 | |
| static inline void set_platform_trusted_keys(struct key *keyring)
 | |
| {
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* _KEYS_SYSTEM_KEYRING_H */
 |