48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
// This file was extracted from the TCG Published
|
|
// Trusted Platform Module Library
|
|
// Part 3: Commands
|
|
// Family "2.0"
|
|
// Level 00 Revision 01.16
|
|
// October 30, 2014
|
|
|
|
#include "InternalRoutines.h"
|
|
#include "ReadPublic_fp.h"
|
|
//
|
|
//
|
|
// Error Returns Meaning
|
|
//
|
|
// TPM_RC_SEQUENCE can not read the public area of a sequence object
|
|
//
|
|
TPM_RC
|
|
TPM2_ReadPublic(
|
|
ReadPublic_In *in, // IN: input parameter list
|
|
ReadPublic_Out *out // OUT: output parameter list
|
|
)
|
|
{
|
|
OBJECT *object;
|
|
|
|
// Input Validation
|
|
|
|
// Get loaded object pointer
|
|
object = ObjectGet(in->objectHandle);
|
|
|
|
// Can not read public area of a sequence object
|
|
if(ObjectIsSequence(object))
|
|
return TPM_RC_SEQUENCE;
|
|
|
|
// Command Output
|
|
|
|
// Compute size of public area in canonical form
|
|
out->outPublic.t.size = TPMT_PUBLIC_Marshal(&object->publicArea, NULL, NULL);
|
|
|
|
// Copy public area to output
|
|
out->outPublic.t.publicArea = object->publicArea;
|
|
|
|
// Copy name to output
|
|
out->name.t.size = ObjectGetName(in->objectHandle, &out->name.t.name);
|
|
|
|
// Copy qualified name to output
|
|
ObjectGetQualifiedName(in->objectHandle, &out->qualifiedName);
|
|
|
|
return TPM_RC_SUCCESS;
|
|
}
|