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 23struct 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 32struct 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 46extern struct key_type key_type_trusted; 47 48#endif /* _KEYS_TRUSTED_TYPE_H */ 49