aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk305
-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, 347 insertions, 8 deletions
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..46e84c9
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,305 @@
+# 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# libtpm2
+# ========================================================
+include $(CLEAR_VARS)
+LOCAL_MODULE := libtpm2
+LOCAL_CFLAGS := -Wall -Wextra -Werror \
+ -Wno-typedef-redefinition \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -Wno-tautological-compare \
+ -Wno-sign-compare
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/tpm2
+LOCAL_CLANG := true
+LOCAL_SHARED_LIBRARIES := libcrypto
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
+LOCAL_SRC_FILES := \
+ 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
+include $(BUILD_SHARED_LIBRARY)
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 a503d2a..0d12c45 100644
--- a/Implementation.h
+++ b/Implementation.h
@@ -482,8 +482,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
//
@@ -491,8 +490,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
//
@@ -500,8 +498,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
//
@@ -509,8 +506,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 f7bcbcd..f7bcbcd 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