/*
* Licensed Materials - Property of IBM
*
* trousers - An open source TCG Software Stack
*
* (C) Copyright International Business Machines Corp. 2007
*
*/
#ifndef _AUTHSESS_H_
#define _AUTHSESS_H_
struct authsess {
TPM_AUTH *pAuth;
TPM_AUTH auth;
/* XOR masks created before each use of an OSAP session */
TPM_ENCAUTH encAuthUse;
TPM_ENCAUTH encAuthMig;
TSS_HCONTEXT tspContext;
TPM_COMMAND_CODE command;
TSS_HOBJECT obj_parent;
TSS_HPOLICY hUsageParent;
UINT32 parentMode;
TPM_SECRET parentSecret;
TSS_CALLBACK cb_xor, cb_hmac, cb_sealx;
TPM_ENTITY_TYPE entity_type;
UINT32 entityValueSize;
BYTE *entityValue;
TSS_HOBJECT obj_child;
TSS_HPOLICY hUsageChild, hMigChild;
UINT32 uMode, mMode;
/* Created during OSAP or DSAP protocol initiation */
TPM_NONCE nonceOddxSAP;
TPM_NONCE nonceEvenxSAP;
TPM_HMAC sharedSecret;
//MUTEX_DECLARE(lock);
//struct authsess *next;
};
TSS_RESULT authsess_oiap_get(TSS_HOBJECT, TPM_COMMAND_CODE, TPM_DIGEST *, TPM_AUTH *);
TSS_RESULT authsess_oiap_put(TPM_AUTH *, TPM_DIGEST *);
TSS_RESULT authsess_xsap_init(TSS_HCONTEXT, TSS_HOBJECT, TSS_HOBJECT, TSS_BOOL, TPM_COMMAND_CODE, TPM_ENTITY_TYPE, struct authsess **);
TSS_RESULT authsess_xsap_hmac(struct authsess *, TPM_DIGEST *);
TSS_RESULT authsess_xsap_verify(struct authsess *, TPM_DIGEST *);
void authsess_free(struct authsess *);
#define TSS_AUTH_POLICY_REQUIRED TRUE
#define TSS_AUTH_POLICY_NOT_REQUIRED FALSE
#endif