1 /* 2 * Copyright (C) 2010 IBM Corporation 3 * Author: David Safford <safford@us.ibm.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, version 2 of the License. 8 */ 9 10 #ifndef _KEYS_TRUSTED_TYPE_H 11 #define _KEYS_TRUSTED_TYPE_H 12 13 #include <linux/key.h> 14 #include <linux/rcupdate.h> 15 #include <linux/tpm.h> 16 17 #define MIN_KEY_SIZE 32 18 #define MAX_KEY_SIZE 128 19 #define MAX_BLOB_SIZE 512 20 #define MAX_PCRINFO_SIZE 64 21 #define MAX_DIGEST_SIZE 64 22 23 struct trusted_key_payload { 24 struct rcu_head rcu; 25 unsigned int key_len; 26 unsigned int blob_len; 27 unsigned char migratable; 28 unsigned char key[MAX_KEY_SIZE + 1]; 29 unsigned char blob[MAX_BLOB_SIZE]; 30 }; 31 32 struct trusted_key_options { 33 uint16_t keytype; 34 uint32_t keyhandle; 35 unsigned char keyauth[TPM_DIGEST_SIZE]; 36 unsigned char blobauth[TPM_DIGEST_SIZE]; 37 uint32_t pcrinfo_len; 38 unsigned char pcrinfo[MAX_PCRINFO_SIZE]; 39 int pcrlock; 40 uint32_t hash; 41 uint32_t policydigest_len; 42 unsigned char policydigest[MAX_DIGEST_SIZE]; 43 uint32_t policyhandle; 44 }; 45 46 extern struct key_type key_type_trusted; 47 48 #endif /* _KEYS_TRUSTED_TYPE_H */ 49