You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
7.0 KiB
132 lines
7.0 KiB
/* |
|
* 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_SPT_FP_H |
|
#define __TPM2_OBJECT_SPT_FP_H |
|
|
|
BOOL AreAttributesForParent(OBJECT *parentObject // IN: parent handle |
|
); |
|
TPM_RC CredentialToSecret( |
|
TPM2B_ID_OBJECT *inIDObject, // IN: input credential blob |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM2B_SEED *seed, // IN: an external seed. |
|
TPM_HANDLE protector, // IN: The protector's handle |
|
TPM2B_DIGEST *secret // OUT: secret information |
|
); |
|
TPM_RC DuplicateToSensitive( |
|
TPM2B_PRIVATE *inPrivate, // IN: input private structure |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_HANDLE parentHandle, // IN: The parent's handle |
|
TPM_ALG_ID nameAlg, // IN: hash algorithm in public area. |
|
TPM2B_SEED *seed, // IN: an external seed may be provided. If external |
|
// seed is provided with size of 0, no outer wrap is |
|
// applied |
|
TPMT_SYM_DEF_OBJECT *symDef, // IN: Symmetric key definition. If the |
|
// symmetric key algorithm is NULL, no inner |
|
// wrap is applied |
|
TPM2B_DATA *innerSymKey, // IN: a symmetric key may be provided to |
|
// decrypt the inner wrap of a duplication blob. |
|
TPMT_SENSITIVE *sensitive // OUT: sensitive structure |
|
); |
|
void FillInCreationData( |
|
TPMI_DH_OBJECT parentHandle, // IN: handle of parent |
|
TPMI_ALG_HASH nameHashAlg, // IN: name hash algorithm |
|
TPML_PCR_SELECTION *creationPCR, // IN: PCR selection |
|
TPM2B_DATA *outsideData, // IN: outside data |
|
TPM2B_CREATION_DATA *outCreation, // OUT: creation data for output |
|
TPM2B_DIGEST *creationDigest // OUT: creation digest |
|
); |
|
TPM2B_SEED *GetSeedForKDF( |
|
TPM_HANDLE protectorHandle, // IN: the protector handle |
|
TPM2B_SEED *seedIn // IN: the optional input seed |
|
); |
|
TPM_RC PrivateToSensitive( |
|
TPM2B_PRIVATE *inPrivate, // IN: input private structure |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_HANDLE parentHandle, // IN: The parent's handle |
|
TPM_ALG_ID nameAlg, // IN: hash algorithm in public area. It is passed |
|
// separately because we only pass name, rather than |
|
// the whole public area of the object. This parameter |
|
// is used in the following two cases: 1. primary |
|
// objects. 2. duplication blob with inner wrap. In |
|
// other cases, this parameter will be ignored |
|
TPMT_SENSITIVE *sensitive // OUT: sensitive structure |
|
); |
|
UINT16 ProduceOuterWrap( |
|
TPM_HANDLE protector, // IN: The handle of the object that provides |
|
// protection. For object, it is parent handle. For |
|
// credential, it is the handle of encrypt object. |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_ALG_ID hashAlg, // IN: hash algorithm for outer wrap |
|
TPM2B_SEED *seed, // IN: an external seed may be provided for duplication |
|
// blob. For non duplication blob, this parameter |
|
// should be NULL |
|
BOOL useIV, // IN: indicate if an IV is used |
|
UINT16 dataSize, // IN: the size of sensitive data, excluding the leading |
|
// integrity buffer size or the optional iv size |
|
BYTE *outerBuffer // IN/OUT: outer buffer with sensitive data in it |
|
); |
|
TPM_RC PublicAttributesValidation( |
|
BOOL load, // IN: TRUE if load checks, FALSE if TPM2_Create() |
|
TPMI_DH_OBJECT parentHandle, // IN: input parent handle |
|
TPMT_PUBLIC *publicArea // IN: public area of the object |
|
); |
|
TPM_RC SchemeChecks( |
|
BOOL load, // IN: TRUE if load checks, FALSE if TPM2_Create() |
|
TPMI_DH_OBJECT parentHandle, // IN: input parent handle |
|
TPMT_PUBLIC *publicArea // IN: public area of the object |
|
); |
|
void SecretToCredential( |
|
TPM2B_DIGEST *secret, // IN: secret information |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM2B_SEED *seed, // IN: an external seed. |
|
TPM_HANDLE protector, // IN: The protector's handle |
|
TPM2B_ID_OBJECT *outIDObject // OUT: output credential |
|
); |
|
void SensitiveToDuplicate( |
|
TPMT_SENSITIVE *sensitive, // IN: sensitive structure |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_HANDLE parentHandle, // IN: The new parent's handle |
|
TPM_ALG_ID nameAlg, // IN: hash algorithm in public area. It is passed |
|
// separately because we only pass name, rather than |
|
// the whole public area of the object. |
|
TPM2B_SEED *seed, // IN: the external seed. If external seed is provided |
|
// with size of 0, no outer wrap should be applied to |
|
// duplication blob. |
|
TPMT_SYM_DEF_OBJECT *symDef, // IN: Symmetric key definition. If the |
|
// symmetric key algorithm is NULL, no inner |
|
// wrap should be applied. |
|
TPM2B_DATA *innerSymKey, // IN/OUT: a symmetric key may be provided to |
|
// encrypt the inner wrap of a duplication blob. |
|
// May be generated here if needed. |
|
TPM2B_PRIVATE *outPrivate // OUT: output private structure |
|
); |
|
void SensitiveToPrivate( |
|
TPMT_SENSITIVE *sensitive, // IN: sensitive structure |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_HANDLE parentHandle, // IN: The parent's handle |
|
TPM_ALG_ID nameAlg, // IN: hash algorithm in public area. This parameter |
|
// is used when parentHandle is NULL, in which case |
|
// the object is temporary. |
|
TPM2B_PRIVATE *outPrivate // OUT: output private structure |
|
); |
|
TPM_RC UnwrapOuter( |
|
TPM_HANDLE protector, // IN: The handle of the object that provides |
|
// protection. For object, it is parent handle. For |
|
// credential, it is the handle of encrypt object. |
|
TPM2B_NAME *name, // IN: the name of the object |
|
TPM_ALG_ID hashAlg, // IN: hash algorithm for outer wrap |
|
TPM2B_SEED *seed, // IN: an external seed may be provided for duplication |
|
// blob. For non duplication blob, this parameter |
|
// should be NULL. |
|
BOOL useIV, // IN: indicates if an IV is used |
|
UINT16 dataSize, // IN: size of sensitive data in outerBuffer, including |
|
// the leading integrity buffer size, and an optional iv |
|
// area |
|
BYTE *outerBuffer // IN/OUT: sensitive data |
|
); |
|
|
|
#endif // __TPM2_OBJECT_SPT_FP_H
|
|
|