aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp308
-rw-r--r--CpriCryptPri.c2
-rw-r--r--Implementation.h13
-rw-r--r--OsslCryptoEngine.h32
-rw-r--r--include/tpm2/ExecCommand_fp.h (renamed from ExecCommand_fp.h)0
-rw-r--r--include/tpm2/Manufacture_fp.h (renamed from Manufacture_fp.h)3
-rw-r--r--include/tpm2/Platform.h (renamed from Platform.h)0
-rw-r--r--include/tpm2/TpmBuildSwitches.h (renamed from TpmBuildSwitches.h)0
-rw-r--r--include/tpm2/TpmError.h (renamed from TpmError.h)0
-rw-r--r--include/tpm2/_TPM_Init_fp.h (renamed from _TPM_Init_fp.h)0
-rw-r--r--include/tpm2/bool.h (renamed from bool.h)0
11 files changed, 350 insertions, 8 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..934cfda
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,308 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// libtpm2
+// ========================================================
+cc_library_shared {
+ name: "libtpm2",
+ cflags: [
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ "-Wno-typedef-redefinition",
+ "-Wno-unused-parameter",
+ "-Wno-missing-field-initializers",
+ "-Wno-tautological-compare",
+ "-Wno-sign-compare",
+ ],
+ local_include_dirs: ["include/tpm2"],
+ shared_libs: ["libcrypto"],
+ export_include_dirs: ["include"],
+ srcs: [
+ "ActivateCredential.c",
+ "AlgorithmCap.c",
+ "Attest_spt.c",
+ "Bits.c",
+ "Cancel.c",
+ "Certify.c",
+ "CertifyCreation.c",
+ "ChangeEPS.c",
+ "ChangePPS.c",
+ "Clear.c",
+ "ClearControl.c",
+ "Clock.c",
+ "ClockRateAdjust.c",
+ "ClockSet.c",
+ "CommandAudit.c",
+ "CommandCodeAttributes.c",
+ "CommandDispatcher.c",
+ "Commit.c",
+ "ContextLoad.c",
+ "ContextSave.c",
+ "Context_spt.c",
+ "CpriCryptPri.c",
+ "CpriECC.c",
+ "CpriHash.c",
+ "CpriMisc.c",
+ "CpriRNG.c",
+ "CpriRSA.c",
+ "CpriSym.c",
+ "Create.c",
+ "CreatePrimary.c",
+ "CryptSelfTest.c",
+ "CryptUtil.c",
+ "DA.c",
+ "DRTM.c",
+ "DictionaryAttackLockReset.c",
+ "DictionaryAttackParameters.c",
+ "Duplicate.c",
+ "ECC_Parameters.c",
+ "ECDH_KeyGen.c",
+ "ECDH_ZGen.c",
+ "EC_Ephemeral.c",
+ "EncryptDecrypt.c",
+ "Entity.c",
+ "Entropy.c",
+ "EventSequenceComplete.c",
+ "EvictControl.c",
+ "ExecCommand.c",
+ "FieldUpgradeData.c",
+ "FieldUpgradeStart.c",
+ "FirmwareRead.c",
+ "FlushContext.c",
+ "GetCapability.c",
+ "GetCommandAuditDigest.c",
+ "GetCommandCodeString.c",
+ "GetRandom.c",
+ "GetSessionAuditDigest.c",
+ "GetTestResult.c",
+ "GetTime.c",
+ "Global.c",
+ "HMAC.c",
+ "HMAC_Start.c",
+ "Handle.c",
+ "HandleProcess.c",
+ "Hash.c",
+ "HashSequenceStart.c",
+ "Hierarchy.c",
+ "HierarchyChangeAuth.c",
+ "HierarchyControl.c",
+ "Import.c",
+ "IncrementalSelfTest.c",
+ "Load.c",
+ "LoadExternal.c",
+ "Locality.c",
+ "LocalityPlat.c",
+ "MakeCredential.c",
+ "Marshal_ActivateCredential.c",
+ "Marshal_Certify.c",
+ "Marshal_CertifyCreation.c",
+ "Marshal_ChangeEPS.c",
+ "Marshal_ChangePPS.c",
+ "Marshal_Clear.c",
+ "Marshal_ClearControl.c",
+ "Marshal_ClockRateAdjust.c",
+ "Marshal_ClockSet.c",
+ "Marshal_Commit.c",
+ "Marshal_ContextLoad.c",
+ "Marshal_ContextSave.c",
+ "Marshal_Create.c",
+ "Marshal_CreatePrimary.c",
+ "Marshal_DictionaryAttackLockReset.c",
+ "Marshal_DictionaryAttackParameters.c",
+ "Marshal_Duplicate.c",
+ "Marshal_ECC_Parameters.c",
+ "Marshal_ECDH_KeyGen.c",
+ "Marshal_ECDH_ZGen.c",
+ "Marshal_EC_Ephemeral.c",
+ "Marshal_EncryptDecrypt.c",
+ "Marshal_EventSequenceComplete.c",
+ "Marshal_EvictControl.c",
+ "Marshal_FirmwareRead.c",
+ "Marshal_FlushContext.c",
+ "Marshal_GetCapability.c",
+ "Marshal_GetCommandAuditDigest.c",
+ "Marshal_GetRandom.c",
+ "Marshal_GetSessionAuditDigest.c",
+ "Marshal_GetTestResult.c",
+ "Marshal_GetTime.c",
+ "Marshal_HMAC.c",
+ "Marshal_HMAC_Start.c",
+ "Marshal_Hash.c",
+ "Marshal_HashSequenceStart.c",
+ "Marshal_HierarchyChangeAuth.c",
+ "Marshal_HierarchyControl.c",
+ "Marshal_Import.c",
+ "Marshal_IncrementalSelfTest.c",
+ "Marshal_Load.c",
+ "Marshal_LoadExternal.c",
+ "Marshal_MakeCredential.c",
+ "Marshal_NV_Certify.c",
+ "Marshal_NV_ChangeAuth.c",
+ "Marshal_NV_DefineSpace.c",
+ "Marshal_NV_Extend.c",
+ "Marshal_NV_GlobalWriteLock.c",
+ "Marshal_NV_Increment.c",
+ "Marshal_NV_Read.c",
+ "Marshal_NV_ReadLock.c",
+ "Marshal_NV_ReadPublic.c",
+ "Marshal_NV_SetBits.c",
+ "Marshal_NV_UndefineSpace.c",
+ "Marshal_NV_UndefineSpaceSpecial.c",
+ "Marshal_NV_Write.c",
+ "Marshal_NV_WriteLock.c",
+ "Marshal_ObjectChangeAuth.c",
+ "Marshal_PCR_Allocate.c",
+ "Marshal_PCR_Event.c",
+ "Marshal_PCR_Extend.c",
+ "Marshal_PCR_Read.c",
+ "Marshal_PCR_Reset.c",
+ "Marshal_PCR_SetAuthPolicy.c",
+ "Marshal_PCR_SetAuthValue.c",
+ "Marshal_PP_Commands.c",
+ "Marshal_PolicyAuthValue.c",
+ "Marshal_PolicyAuthorize.c",
+ "Marshal_PolicyCommandCode.c",
+ "Marshal_PolicyCounterTimer.c",
+ "Marshal_PolicyCpHash.c",
+ "Marshal_PolicyDuplicationSelect.c",
+ "Marshal_PolicyGetDigest.c",
+ "Marshal_PolicyLocality.c",
+ "Marshal_PolicyNV.c",
+ "Marshal_PolicyNameHash.c",
+ "Marshal_PolicyNvWritten.c",
+ "Marshal_PolicyOR.c",
+ "Marshal_PolicyPCR.c",
+ "Marshal_PolicyPassword.c",
+ "Marshal_PolicyPhysicalPresence.c",
+ "Marshal_PolicyRestart.c",
+ "Marshal_PolicySecret.c",
+ "Marshal_PolicySigned.c",
+ "Marshal_PolicyTicket.c",
+ "Marshal_Quote.c",
+ "Marshal_RSA_Decrypt.c",
+ "Marshal_RSA_Encrypt.c",
+ "Marshal_ReadClock.c",
+ "Marshal_ReadPublic.c",
+ "Marshal_Rewrap.c",
+ "Marshal_SelfTest.c",
+ "Marshal_SequenceComplete.c",
+ "Marshal_SequenceUpdate.c",
+ "Marshal_SetAlgorithmSet.c",
+ "Marshal_SetCommandCodeAuditStatus.c",
+ "Marshal_SetPrimaryPolicy.c",
+ "Marshal_Shutdown.c",
+ "Marshal_Sign.c",
+ "Marshal_StartAuthSession.c",
+ "Marshal_Startup.c",
+ "Marshal_StirRandom.c",
+ "Marshal_TestParms.c",
+ "Marshal_Unseal.c",
+ "Marshal_VerifySignature.c",
+ "Marshal_ZGen_2Phase.c",
+ "Manufacture.c",
+ "MathFunctions.c",
+ "MemoryLib.c",
+ "NV.c",
+ "NVMem.c",
+ "NV_Certify.c",
+ "NV_ChangeAuth.c",
+ "NV_DefineSpace.c",
+ "NV_Extend.c",
+ "NV_GlobalWriteLock.c",
+ "NV_Increment.c",
+ "NV_Read.c",
+ "NV_ReadLock.c",
+ "NV_ReadPublic.c",
+ "NV_SetBits.c",
+ "NV_UndefineSpace.c",
+ "NV_UndefineSpaceSpecial.c",
+ "NV_Write.c",
+ "NV_WriteLock.c",
+ "NV_spt.c",
+ "Object.c",
+ "ObjectChangeAuth.c",
+ "Object_spt.c",
+ "PCR.c",
+ "PCR_Allocate.c",
+ "PCR_Event.c",
+ "PCR_Extend.c",
+ "PCR_Read.c",
+ "PCR_Reset.c",
+ "PCR_SetAuthPolicy.c",
+ "PCR_SetAuthValue.c",
+ "PP.c",
+ "PPPlat.c",
+ "PP_Commands.c",
+ "PlatformData.c",
+ "PolicyAuthValue.c",
+ "PolicyAuthorize.c",
+ "PolicyCommandCode.c",
+ "PolicyCounterTimer.c",
+ "PolicyCpHash.c",
+ "PolicyDuplicationSelect.c",
+ "PolicyGetDigest.c",
+ "PolicyLocality.c",
+ "PolicyNV.c",
+ "PolicyNameHash.c",
+ "PolicyNvWritten.c",
+ "PolicyOR.c",
+ "PolicyPCR.c",
+ "PolicyPassword.c",
+ "PolicyPhysicalPresence.c",
+ "PolicyRestart.c",
+ "PolicySecret.c",
+ "PolicySigned.c",
+ "PolicyTicket.c",
+ "Policy_spt.c",
+ "Power.c",
+ "PowerPlat.c",
+ "PropertyCap.c",
+ "Quote.c",
+ "RSAData.c",
+ "RSAKeySieve.c",
+ "RSA_Decrypt.c",
+ "RSA_Encrypt.c",
+ "ReadClock.c",
+ "ReadPublic.c",
+ "Rewrap.c",
+ "SelfTest.c",
+ "SequenceComplete.c",
+ "SequenceUpdate.c",
+ "Session.c",
+ "SessionProcess.c",
+ "SetAlgorithmSet.c",
+ "SetCommandCodeAuditStatus.c",
+ "SetPrimaryPolicy.c",
+ "Shutdown.c",
+ "Sign.c",
+ "StartAuthSession.c",
+ "Startup.c",
+ "StirRandom.c",
+ "TestParms.c",
+ "Ticket.c",
+ "Time.c",
+ "TpmFail.c",
+ "Unique.c",
+ "Unseal.c",
+ "VerifySignature.c",
+ "ZGen_2Phase.c",
+ "_TPM_Hash_Data.c",
+ "_TPM_Hash_End.c",
+ "_TPM_Hash_Start.c",
+ "_TPM_Init.c",
+ "tpm_generated.c",
+ ],
+
+}
diff --git a/CpriCryptPri.c b/CpriCryptPri.c
index 2c1210c..6926808 100644
--- a/CpriCryptPri.c
+++ b/CpriCryptPri.c
@@ -5,6 +5,8 @@
// Level 00 Revision 01.16
// October 30, 2014
+#include <stdlib.h>
+
#include "CryptoEngine.h"
#include "OsslCryptoEngine.h"
static void Trap(const char *function, int line, int code);
diff --git a/Implementation.h b/Implementation.h
index 5ecf334..5de5f9f 100644
--- a/Implementation.h
+++ b/Implementation.h
@@ -486,8 +486,7 @@ typedef UINT16 TPM_ECC_CURVE;
#define SHA256_BLOCK_SIZE 64
#define SHA256_DER_SIZE 19
#define SHA256_DER \
- 0x30,0x31,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,\
- 0x01,0x65,0x03,0x04,0x02,0x01,0x05,0x00,0x04,0x20
+ 0x30,0x31,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x01,0x05,0x00,0x04,0x20
//
// From TCG Algorithm Registry: Table 14 - Defines for SHA384 Hash Values
//
@@ -495,8 +494,7 @@ typedef UINT16 TPM_ECC_CURVE;
#define SHA384_BLOCK_SIZE 128
#define SHA384_DER_SIZE 19
#define SHA384_DER \
- 0x30,0x41,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,\
- 0x01,0x65,0x03,0x04,0x02,0x02,0x05,0x00,0x04,0x30
+ 0x30,0x41,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x02,0x05,0x00,0x04,0x30
//
// From TCG Algorithm Registry: Table 15 - Defines for SHA512 Hash Values
//
@@ -504,8 +502,7 @@ typedef UINT16 TPM_ECC_CURVE;
#define SHA512_BLOCK_SIZE 128
#define SHA512_DER_SIZE 19
#define SHA512_DER \
- 0x30,0x51,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,\
- 0x01,0x65,0x03,0x04,0x02,0x03,0x05,0x00,0x04,0x40
+ 0x30,0x51,0x30,0x0D,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x03,0x05,0x00,0x04,0x40
//
// From TCG Algorithm Registry: Table 16 - Defines for SM3_256 Hash Values
//
@@ -513,8 +510,8 @@ typedef UINT16 TPM_ECC_CURVE;
#define SM3_256_BLOCK_SIZE 64
#define SM3_256_DER_SIZE 18
#define SM3_256_DER \
- 0x30,0x30,0x30,0x0C,0x06,0x08,0x2A,0x81,0x1C,\
- 0x81,0x45,0x01,0x83,0x11,0x05,0x00,0x04,0x20
+// 0x30,0x30,0x30,0x0C,0x06,0x08,0x2A,0x81,0x1C,0x81,0x45,0x01,0x83,0x11,0x05,0x00,0x04,0
+// x20
//
// From TCG Algorithm Registry: Table 17 - Defines for AES Symmetric Cipher Algorithm Constants
//
diff --git a/OsslCryptoEngine.h b/OsslCryptoEngine.h
index 7217e8a..3c5f3cb 100644
--- a/OsslCryptoEngine.h
+++ b/OsslCryptoEngine.h
@@ -28,6 +28,38 @@
# endif
# include "CpriRSA_fp.h"
#endif
+
+#ifdef OPENSSL_IS_BORINGSSL
+// libtpm2 reads internal EVP_MD state (e.g. ctx_size). The boringssl headers
+// don't expose this type so define it here.
+struct env_md_st {
+ /* type contains a NID identifing the digest function. (For example,
+ * NID_md5.) */
+ int type;
+
+ /* md_size contains the size, in bytes, of the resulting digest. */
+ unsigned md_size;
+
+ /* flags contains the OR of |EVP_MD_FLAG_*| values. */
+ uint32_t flags;
+
+ /* init initialises the state in |ctx->md_data|. */
+ void (*init)(EVP_MD_CTX *ctx);
+
+ /* update hashes |len| bytes of |data| into the state in |ctx->md_data|. */
+ void (*update)(EVP_MD_CTX *ctx, const void *data, size_t count);
+
+ /* final completes the hash and writes |md_size| bytes of digest to |out|. */
+ void (*final)(EVP_MD_CTX *ctx, uint8_t *out);
+
+ /* block_size contains the hash's native block size. */
+ unsigned block_size;
+
+ /* ctx_size contains the size, in bytes, of the state of the hash function. */
+ unsigned ctx_size;
+};
+#endif
+
//
// This is a structure to hold the parameters for the version of KDFa() used by the CryptoEngine(). This
// structure allows the state to be passed between multiple functions that use the same pseudo-random
diff --git a/ExecCommand_fp.h b/include/tpm2/ExecCommand_fp.h
index 3d6d4f9..3d6d4f9 100644
--- a/ExecCommand_fp.h
+++ b/include/tpm2/ExecCommand_fp.h
diff --git a/Manufacture_fp.h b/include/tpm2/Manufacture_fp.h
index 5768df6..941f247 100644
--- a/Manufacture_fp.h
+++ b/include/tpm2/Manufacture_fp.h
@@ -7,6 +7,9 @@
#ifndef __TPM2_MANUFACTURE_FP_H
#define __TPM2_MANUFACTURE_FP_H
+#include "bool.h"
+#include "TpmBuildSwitches.h"
+
LIB_EXPORT int TPM_Manufacture(
BOOL firstTime // IN: indicates if this is the first call from main()
);
diff --git a/Platform.h b/include/tpm2/Platform.h
index 4779594..4779594 100644
--- a/Platform.h
+++ b/include/tpm2/Platform.h
diff --git a/TpmBuildSwitches.h b/include/tpm2/TpmBuildSwitches.h
index b5db329..b5db329 100644
--- a/TpmBuildSwitches.h
+++ b/include/tpm2/TpmBuildSwitches.h
diff --git a/TpmError.h b/include/tpm2/TpmError.h
index c9dcbc9..c9dcbc9 100644
--- a/TpmError.h
+++ b/include/tpm2/TpmError.h
diff --git a/_TPM_Init_fp.h b/include/tpm2/_TPM_Init_fp.h
index e551520..e551520 100644
--- a/_TPM_Init_fp.h
+++ b/include/tpm2/_TPM_Init_fp.h
diff --git a/bool.h b/include/tpm2/bool.h
index 6e58145..6e58145 100644
--- a/bool.h
+++ b/include/tpm2/bool.h