 f1be242c95
			
		
	
	
	f1be242c95
	
	
	
		
			
			Similar to SIGNATURE, rename INTEGRITY_DIGSIG to INTEGRITY_SIGNATURE. Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com> Signed-off-by: James Morris <jmorris@namei.org>
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2009-2010 IBM Corporation
 | |
|  *
 | |
|  * Authors:
 | |
|  * Mimi Zohar <zohar@us.ibm.com>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License as
 | |
|  * published by the Free Software Foundation, version 2 of the
 | |
|  * License.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #include <linux/types.h>
 | |
| #include <linux/integrity.h>
 | |
| #include <crypto/sha.h>
 | |
| 
 | |
| /* iint cache flags */
 | |
| #define IMA_MEASURED		0x01
 | |
| 
 | |
| enum evm_ima_xattr_type {
 | |
| 	IMA_XATTR_DIGEST = 0x01,
 | |
| 	EVM_XATTR_HMAC,
 | |
| 	EVM_IMA_XATTR_DIGSIG,
 | |
| };
 | |
| 
 | |
| struct evm_ima_xattr_data {
 | |
| 	u8 type;
 | |
| 	u8 digest[SHA1_DIGEST_SIZE];
 | |
| }  __attribute__((packed));
 | |
| 
 | |
| /* integrity data associated with an inode */
 | |
| struct integrity_iint_cache {
 | |
| 	struct rb_node rb_node; /* rooted in integrity_iint_tree */
 | |
| 	struct inode *inode;	/* back pointer to inode in question */
 | |
| 	u64 version;		/* track inode changes */
 | |
| 	unsigned char flags;
 | |
| 	u8 digest[SHA1_DIGEST_SIZE];
 | |
| 	struct mutex mutex;	/* protects: version, flags, digest */
 | |
| 	enum integrity_status evm_status;
 | |
| };
 | |
| 
 | |
| /* rbtree tree calls to lookup, insert, delete
 | |
|  * integrity data associated with an inode.
 | |
|  */
 | |
| struct integrity_iint_cache *integrity_iint_insert(struct inode *inode);
 | |
| struct integrity_iint_cache *integrity_iint_find(struct inode *inode);
 | |
| 
 | |
| #define INTEGRITY_KEYRING_EVM		0
 | |
| #define INTEGRITY_KEYRING_MODULE	1
 | |
| #define INTEGRITY_KEYRING_IMA		2
 | |
| #define INTEGRITY_KEYRING_MAX		3
 | |
| 
 | |
| #ifdef CONFIG_INTEGRITY_SIGNATURE
 | |
| 
 | |
| int integrity_digsig_verify(const unsigned int id, const char *sig, int siglen,
 | |
| 					const char *digest, int digestlen);
 | |
| 
 | |
| #else
 | |
| 
 | |
| static inline int integrity_digsig_verify(const unsigned int id,
 | |
| 					  const char *sig, int siglen,
 | |
| 					  const char *digest, int digestlen)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| #endif /* CONFIG_INTEGRITY_SIGNATURE */
 | |
| 
 | |
| /* set during initialization */
 | |
| extern int iint_initialized;
 |