#include "trousers/tss.h"


#define SIGN_KEY_cc		"tmp/signKey.cc"
#define CERTIFIED_KEY_cc	"tmp/certifiedKey.cc"
#define VERIFICATION_DATA_cc	"tmp/verificationData.cc"
#define PDM_PUB_KEY_cc		"tmp/pdmPubKey.cc"
#define AIK_CERT_cc		"tmp/AIKCert.cc"
#define ENC_GROUP_KEY		"tmp/encGROUPKey.cc"

#define MAX_SIZE		500
#define CERTIFY_KEY_NONCE	"01234567890123456789"
#define NONCE_LENGTH		20
#define DIGEST_SIZE		20

#define TRUSTED_PCR_SELECTION	0x200
#define TRUSTED_KEY_USAGE	0x0014
//#define TRUSTED_KEY_FLAGS	0x00000004
#define TRUSTED_KEY_FLAGS	0x00000000

#define GROUP_KEY			"TopSecret"

#define ATTESTATION_CHALLENGE	"ATTESTATION"

//my machine pcr (with Trusted GRUB)
static int trustedPCR_01[20]={0x18,0x01,0x7b,0x3b,0x86,0xdd,0x91,0x11,0x79,0x25,0xa2,0x0d,0xa6,0x14,0x57,0x5f,0x89,0x4e,0xdf,0x71};
//the other pcr (without Trusted GRUB)
static int trustedPCR_02[20]={0x07,0xc0,0xad,0xb5,0x40,0x50,0x03,0xdc,0x89,0xa7,0xb9,0xba,0x59,0x0e,0xbc,0xaa,0x93,0xb2,0xe2,0x50};

TSS_RESULT Bind();
TSS_RESULT tssConnect();
TSS_RESULT verifyPubKeyDigest(BYTE*);
TSS_RESULT verifyCertifiedKey(BYTE*, int);
TSS_RESULT verifyCertifyInfo(TCPA_CERTIFY_INFO*, BYTE*, char*);
int verifyAttestaion(int, char*);
