Index: mtm/mtm_commands.h |
diff --git a/mtm/mtm_commands.h b/mtm/mtm_commands.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f87ad0a0214a96b23e8dff3449d0cea47f526a84 |
--- /dev/null |
+++ b/mtm/mtm_commands.h |
@@ -0,0 +1,201 @@ |
+/* Software-based Mobile Trusted Module (MTM) Emulator |
+ * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net> |
+ * Copyright (C) 2007 Jan-Erik Ekberg <jan-erik.ekberg@nokia.com>, |
+ * Nokia Corporation and/or its subsidiary(-ies) |
+ * |
+ * This module is free software; you can redistribute it and/or modify |
+ * it under the terms of the GNU General Public License as published |
+ * by the Free Software Foundation; either version 2 of the License, |
+ * or (at your option) any later version. |
+ * |
+ * This module is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * $Id$ |
+ */ |
+ |
+#ifndef _MTM_COMMANDS_H_ |
+#define _MTM_COMMANDS_H_ |
+ |
+#include "mtm_structures.h" |
+ |
+/* |
+ * Modified TPM commands |
+ */ |
+ |
+/** |
+ * MTM_Extend - adds a new measurement to a PCR |
+ * @pcrNum: [in] The PCR to be updated |
+ * @inDigest: [in] The 160 bit value representing the event to be recorded |
+ * @outDigest: [out] The PCR value after execution of the command |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_Extend( |
+ TPM_PCRINDEX pcrNum, |
+ TPM_DIGEST *inDigest, |
+ TPM_PCRVALUE *outDigest |
+); |
+ |
+/** |
+ * MTM_PCR_Reset - resets the indicated PCRs |
+ * @pcrSelection: [in] The PCRs to reset |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_PCR_Reset( |
+ TPM_PCR_SELECTION *pcrSelection |
+); |
+ |
+/** |
+ * MTM_GetCapability - provides current information regarding the TPM |
+ * @capArea: [in] Partition of capabilities to be interrogated |
+ * @subCapSize: [in] Size of subCap parameter |
+ * @subCap: [in] Further definition of information |
+ * @respSize: [out] The length of the returned capability response |
+ * @resp: [out] The capability response |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_GetCapability( |
+ TPM_CAPABILITY_AREA capArea, |
+ UINT32 subCapSize, |
+ BYTE *subCap, |
+ UINT32 *respSize, |
+ BYTE **resp |
+); |
+ |
+/** |
+ * MTM_ReleaseCounter - releases a counter |
+ * @countID: [in] ID value of the counter |
+ * @auth1: [in, out] Authorization protocol parameters |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_ReleaseCounter( |
+ TPM_COUNT_ID countID, |
+ TPM_AUTH *auth1 |
+); |
+ |
+/** |
+ * MTM_ReleaseCounterOwner - releases a counter |
+ * @countID: [in] ID value of the counter |
+ * @auth1: [in, out] Authorization protocol parameters |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_ReleaseCounterOwner( |
+ TPM_COUNT_ID countID, |
+ TPM_AUTH *auth1 |
+); |
+ |
+/** |
+ * MTM_FlushSpecific - flushes a specific handle |
+ * @handle: [in] Handle of the item to flush |
+ * @resourceType: [in] The type of resource that is being flushed |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ */ |
+TPM_RESULT MTM_FlushSpecific( |
+ TPM_HANDLE handle, |
+ TPM_RESOURCE_TYPE resourceType |
+); |
+ |
+/* |
+ * Additional, MTM specific commands |
+ */ |
+ |
+/** |
+ * MTM_InstallRIM - generates internal RIM certificates. |
+ * @rimCertIn: [in] Data to be used for internal RIM certificate |
+ * @auth1: [in, out] Authorization protocol parameters |
+ * @rimCertOut: [out] An internal RIM certificate |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.2) |
+ */ |
+TPM_RESULT MTM_InstallRIM( |
+ TPM_RIM_CERTIFICATE *rimCertIn, |
+ TPM_AUTH *auth1, |
+ TPM_RIM_CERTIFICATE *rimCertOut |
+); |
+ |
+/** |
+ * MTM_LoadVerificationKey - load one Verification Key into the MTM |
+ * @parentKey: [in] Parent key used to verify this key |
+ * @auth1: [in, out] Authorization protocol parameters |
+ * @verificationKeyHandle: [out] Handle for the key that was loaded |
+ * @loadMethod: [out] which method was used to load this verification key |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.3) |
+ */ |
+TPM_RESULT MTM_LoadVerificationKey( |
+ TPM_VERIFICATION_KEY_HANDLE parentKey, |
+ TPM_VERIFICATION_KEY *verificationKey, |
+ TPM_AUTH *auth1, |
+ TPM_VERIFICATION_KEY_HANDLE *verificationKeyHandle, |
+ BYTE *loadMethod |
+); |
+ |
+/** |
+ * MTM_LoadVerificationRootKeyDisable - disables the functionality to load Verification Root Keys. |
+ * Returns: TPM_SUCCESS |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.4) |
+ */ |
+TPM_RESULT MTM_LoadVerificationRootKeyDisable(); |
+ |
+/** |
+ * MTM_VerifyRIMCert - verify an internal or external RIM certificate. |
+ * @rimCert: [in] RIM certificate to be validated |
+ * @rimKey: [in] Key handle for the verification. NULL if internal verification key is used. |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.5) |
+ */ |
+TPM_RESULT MTM_VerifyRIMCert( |
+ TPM_RIM_CERTIFICATE* rimCert, |
+ TPM_VERIFICATION_KEY_HANDLE rimKey |
+); |
+ |
+/** |
+ * MTM_VerifyRIMCertAndExtend - verify an internal or external RIM certificate and extend PCR given in RIM certificate. |
+ * @rimCert: [in] RIM certificate to be validated |
+ * @rimKey: [in] Key handle for the verification key. NULL if internal verification key is used. |
+ * @outDigest: [out] The PCR value after the execution of the command |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.6) |
+ */ |
+TPM_RESULT MTM_VerifyRIMCertAndExtend( |
+ TPM_RIM_CERTIFICATE *rimCert, |
+ TPM_VERIFICATION_KEY_HANDLE rimKey, |
+ TPM_PCRVALUE *outDigest |
+); |
+ |
+/** |
+ * MTM_IncrementBootstrapCounter - increment bootstrap counter in MTM permanent data. |
+ * @rimCert: [in] A RIM certificate |
+ * @rimKey: [in] Key handle for the verification key to be used |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.7) |
+ */ |
+TPM_RESULT MTM_IncrementBootstrapCounter( |
+ TPM_RIM_CERTIFICATE *rimCert, |
+ TPM_VERIFICATION_KEY_HANDLE rimKey |
+); |
+ |
+/** |
+ * MTM_SetVerifiedPCRSelection - Set verifiedPCRs field in MTM_PERMANENT_DATA |
+ * @verifiedSelection: [in] Set of PCRs that can only be extended with this function |
+ * @auth1: [in, out] Authorization protocol parameters |
+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise. |
+ * |
+ * Description: ([MTM_spec, v1.0], Section 7.8) |
+ */ |
+TPM_RESULT MTM_SetVerifiedPCRSelection( |
+ TPM_PCR_SELECTION *verifiedSelection, |
+ TPM_AUTH *auth1 |
+); |
+ |
+TPM_RESULT mtm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp); |
+ |
+#endif /* _MTM_COMMANDS_H_ */ |