/*
* Copyright 2015 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef __TPM2_OBJECT_FP_H
#define __TPM2_OBJECT_FP_H
BOOL AreAttributesForParent(OBJECT *parentObject // IN: parent handle
);
TPMI_YES_NO ObjectCapGetLoaded(TPMI_DH_OBJECT handle, // IN: start handle
UINT32 count, // IN: count of returned handles
TPML_HANDLE *handleList // OUT: list of handle
);
UINT32 ObjectCapGetTransientAvail(void);
void ObjectCleanupEvict(void);
void ObjectComputeName(TPMT_PUBLIC *publicArea, // IN: public area of an object
TPM2B_NAME *name // OUT: name of the object
);
void ObjectComputeQualifiedName(
TPM2B_NAME *parentQN, // IN: parent's qualified name
TPM_ALG_ID nameAlg, // IN: name hash
TPM2B_NAME *name, // IN: name of the object
TPM2B_NAME *qualifiedName // OUT: qualified name of the object
);
TPM_RC ObjectContextLoad(
OBJECT *object, // IN: object structure from saved context
TPMI_DH_OBJECT *handle // OUT: object handle
);
TPM_RC ObjectCreateEventSequence(
TPM2B_AUTH *auth, // IN: authValue
TPMI_DH_OBJECT *newHandle // OUT: sequence object handle
);
TPM_RC ObjectCreateHMACSequence(
TPMI_ALG_HASH hashAlg, // IN: hash algorithm
TPM_HANDLE handle, // IN: the handle associated with sequence object
TPM2B_AUTH *auth, // IN: authValue
TPMI_DH_OBJECT *newHandle // OUT: HMAC sequence object handle
);
TPM_RC ObjectCreateHashSequence(
TPMI_ALG_HASH hashAlg, // IN: hash algorithm
TPM2B_AUTH *auth, // IN: authValue
TPMI_DH_OBJECT *newHandle // OUT: sequence object handle
);
TPMI_RH_HIERARCHY ObjectDataGetHierarchy(OBJECT *object // IN :object
);
BOOL ObjectDataIsStorage(
TPMT_PUBLIC *publicArea // IN: public area of the object
);
OBJECT *ObjectGet(TPMI_DH_OBJECT handle // IN: handle of the object
);
TPMI_RH_HIERARCHY ObjectGetHierarchy(TPMI_DH_OBJECT handle // IN :object handle
);
TPMI_ALG_HASH ObjectGetNameAlg(
TPMI_DH_OBJECT handle // IN: handle of the object
);
TPM_RC ObjectLoadEvict(TPM_HANDLE *handle, // IN:OUT: evict object handle. If
// success, it will be replace by
// the loaded object handle
TPM_CC commandCode // IN: the command being processed
);
void ObjectFlush(TPMI_DH_OBJECT handle // IN: handle to be freed
);
void ObjectFlushHierarchy(
TPMI_RH_HIERARCHY hierarchy // IN: hierarchy to be flush
);
OBJECT *ObjectGet(TPMI_DH_OBJECT handle // IN: handle of the object
);
UINT16 ObjectGetName(TPMI_DH_OBJECT handle, // IN: handle of the object
NAME *name // OUT: name of the object
);
void ObjectGetQualifiedName(
TPMI_DH_OBJECT handle, // IN: handle of the object
TPM2B_NAME *qualifiedName // OUT: qualified name of the object
);
BOOL ObjectIsPresent(TPMI_DH_OBJECT handle // IN: handle to be checked
);
BOOL ObjectIsSequence(OBJECT *object // IN: handle to be checked
);
BOOL ObjectIsStorage(TPMI_DH_OBJECT handle // IN: object handle
);
TPM_RC ObjectLoad(
TPMI_RH_HIERARCHY hierarchy, // IN: hierarchy to which the object belongs
TPMT_PUBLIC *publicArea, // IN: public area
TPMT_SENSITIVE *sensitive, // IN: sensitive area (may be null)
TPM2B_NAME *name, // IN: object's name (may be null)
TPM_HANDLE parentHandle, // IN: handle of parent
BOOL skipChecks, // IN: flag to indicate if it is OK to skip consistency
// checks.
TPMI_DH_OBJECT *handle // OUT: object handle
);
void ObjectStartup(void);
void ObjectTerminateEvent(void);
#endif // __TPM2_OBJECT_FP_H