diff --git a/src/tpm2/AlgorithmCap.c b/src/tpm2/AlgorithmCap.c index fe9ddd85..0ad30363 100644 --- a/src/tpm2/AlgorithmCap.c +++ b/src/tpm2/AlgorithmCap.c @@ -235,9 +235,10 @@ AlgorithmGetImplementedVector( int index; // Nothing implemented until we say it is MemorySet(implemented, 0, sizeof(ALGORITHM_VECTOR)); + // Go through the list of implemented algorithms and SET the corresponding bit in + // in the implemented vector for(index = (sizeof(s_algorithms) / sizeof(s_algorithms[0])) - 1; - index >= 0; - index--) + index >= 0; index--) SET_BIT(s_algorithms[index].algID, *implemented); return; } diff --git a/src/tpm2/AttestationCommands.c b/src/tpm2/AttestationCommands.c index a629edd6..a7286ec5 100644 --- a/src/tpm2/AttestationCommands.c +++ b/src/tpm2/AttestationCommands.c @@ -3,7 +3,7 @@ /* Attestation Commands */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: AttestationCommands.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: AttestationCommands.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/CommandAttributes.h b/src/tpm2/CommandAttributes.h index f886f24d..d7b6d677 100644 --- a/src/tpm2/CommandAttributes.h +++ b/src/tpm2/CommandAttributes.h @@ -3,7 +3,7 @@ /* Command Attributes */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CommandAttributes.h 1490 2019-07-26 21:13:22Z kgoldman $ */ +/* $Id: CommandAttributes.h 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2018 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/CommandCodeAttributes.c b/src/tpm2/CommandCodeAttributes.c index 23d13fb5..f6d0f8d1 100644 --- a/src/tpm2/CommandCodeAttributes.c +++ b/src/tpm2/CommandCodeAttributes.c @@ -3,7 +3,7 @@ /* Functions for testing various command properties */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CommandCodeAttributes.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: CommandCodeAttributes.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/CreateLoaded_fp.h b/src/tpm2/CreateLoaded_fp.h index b0fa44b5..302e606f 100644 --- a/src/tpm2/CreateLoaded_fp.h +++ b/src/tpm2/CreateLoaded_fp.h @@ -3,7 +3,7 @@ /* */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CreateLoaded_fp.h 809 2016-11-16 18:31:54Z kgoldman $ */ +/* $Id: CreateLoaded_fp.h 1600 2020-03-30 22:08:01Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ diff --git a/src/tpm2/CryptSelfTest.c b/src/tpm2/CryptSelfTest.c index 712497cb..7a255115 100644 --- a/src/tpm2/CryptSelfTest.c +++ b/src/tpm2/CryptSelfTest.c @@ -3,7 +3,7 @@ /* Self-Test of Cryptographic Functions */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CryptSelfTest.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: CryptSelfTest.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2018 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -171,7 +171,8 @@ CryptIncrementalSelfTest( return TPM_RC_SUCCESS; } /* 10.2.7.2.4 CryptInitializeToTest() */ -/* This function will initialize the data structures for testing all the algorithms. */ +/* This function will initialize the data structures for testing all the algorithms. This should not + be called unless CryptAlgsSetImplemented() has been called */ void CryptInitializeToTest( void diff --git a/src/tpm2/Entity.c b/src/tpm2/Entity.c index bd405f01..1e6dbb2e 100644 --- a/src/tpm2/Entity.c +++ b/src/tpm2/Entity.c @@ -3,7 +3,7 @@ /* Accessing properties for handles of various types */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Entity.c 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: Entity.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -260,7 +260,7 @@ EntityGetAuthValue( #ifdef VENDOR_PERMANENT case VENDOR_PERMANENT: // vendor authorization value - pAauth = &g_platformUniqueDetails; + pAuth = &g_platformUniqueDetails; #endif default: // If any other permanent handle is present it is diff --git a/src/tpm2/ExecCommand.c b/src/tpm2/ExecCommand.c index 6f5b54ad..f21934bf 100644 --- a/src/tpm2/ExecCommand.c +++ b/src/tpm2/ExecCommand.c @@ -3,7 +3,7 @@ /* ExecCommand */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: ExecCommand.c 1490 2019-07-26 21:13:22Z kgoldman $ */ +/* $Id: ExecCommand.c 1600 2020-03-30 22:08:01Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2018 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -83,7 +83,7 @@ // 2) call the routine that performs the command actions; and // 3) marshal the responses into the response buffer. // f) If any error occurs in any of the steps above create the error response and return. -// g) Calls BuildResponseSessions() to: +// g) Calls BuildResponseSession() to: // 1) when necessary, encrypt a parameter // 2) build the response authorization sessions // 3) update the audit sessions and nonces diff --git a/src/tpm2/Global.h b/src/tpm2/Global.h index 641d669a..be39db68 100644 --- a/src/tpm2/Global.h +++ b/src/tpm2/Global.h @@ -3,7 +3,7 @@ /* Internal Global Type Definitions */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Global.h 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: Global.h 1600 2020-03-30 22:08:01Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -298,7 +298,7 @@ typedef struct SESSION_ATTRIBUTES unsigned isBound : 1; //3) SET if the session is bound to with an // entity. This attribute will be CLEAR // if either isPolicy or isAudit is SET. - unsigned isCpHashDefined : 1; //3) SET if the cpHash has been defined + unsigned isCpHashDefined : 1; //4) SET if the cpHash has been defined // This attribute is not SET unless // 'isPolicy' is SET. unsigned isAuthValueNeeded : 1; //5) SET if the authValue is required for @@ -620,7 +620,7 @@ EXTERN BOOL g_StartupLocality3; /* 5.9.10.15 g_daUsed */ /* This location indicates if a DA-protected value is accessed during a boot cycle. If none has, then there is no need to increment failedTries on the next non-orderly startup. This bit is - merged with gp.orderlyState when that gp.orderly is set to SU_NONE_VALUE */ + merged with gp.orderlyState when gp.orderly is set to SU_NONE_VALUE */ /* This global is set to FALSE on startup (after a decision has been made on whether to increment the failedTries or not). On a first attempt to access a DA protected object: this global is set @@ -873,6 +873,7 @@ typedef struct orderly_data // that they can be manipulated by ACT number rather than having to access a // structure. UINT32 signaledACT; + UINT16 preservedSignaled; #endif // libtpms added } ORDERLY_DATA; #if ACCUMULATE_SELF_HEAL_TIMER diff --git a/src/tpm2/Marshal_fp.h b/src/tpm2/Marshal_fp.h index f8965177..19fb3509 100644 --- a/src/tpm2/Marshal_fp.h +++ b/src/tpm2/Marshal_fp.h @@ -348,10 +348,6 @@ extern "C" { TPMS_ECC_PARMS_Marshal(TPMS_ECC_PARMS *source, BYTE **buffer, INT32 *size); UINT16 TPMU_PUBLIC_PARMS_Marshal(TPMU_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size, UINT32 selector); -#if 0 /* libtpms added */ - UINT16 - TPMT_PUBLIC_PARMS_Marshal(TPMT_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size); -#endif /* libtpms added */ UINT16 TPMT_PUBLIC_Marshal(TPMT_PUBLIC *source, BYTE **buffer, INT32 *size); UINT16 diff --git a/src/tpm2/NVDynamic.c b/src/tpm2/NVDynamic.c index 43816581..482abc89 100644 --- a/src/tpm2/NVDynamic.c +++ b/src/tpm2/NVDynamic.c @@ -3,7 +3,7 @@ /* Dynamic space for user defined NV */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: NVDynamic.c 1525 2019-11-18 20:04:03Z kgoldman $ */ +/* $Id: NVDynamic.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/OIDs.h b/src/tpm2/OIDs.h index 210afc36..b463d1ae 100644 --- a/src/tpm2/OIDs.h +++ b/src/tpm2/OIDs.h @@ -146,15 +146,18 @@ // These hash OIDs used in a lot of places. #define OID_SHA1_VALUE 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A -SHA1_OID(_); // Expands to -// MAKE_OID(_SHA1) +SHA1_OID(_); // Expands to: +// MAKE_OID(_SHA1) // which expands to: -// extern BYTE OID_SHA1[] +// EXTERN const BYTE OID_SHA1[] INITIALIZER({OID_SHA1_VALUE}) +// which, depending on the setting of EXTERN and +// INITIALIZER, expands to either: +// extern const BYTE OID_SHA1[] // or -// const BYTE OID_SHA1[] = {OID_SHA1_VALUE} +// const BYTE OID_SHA1[] = {OID_SHA1_VALUE} // which is: -// const BYTE OID_SHA1[] = {0x06, 0x05, 0x2B, 0x0E, -// 0x03, 0x02, 0x1A} +// const BYTE OID_SHA1[] = {0x06, 0x05, 0x2B, 0x0E, +// 0x03, 0x02, 0x1A} #define OID_SHA256_VALUE NIST_HASH, 1 SHA256_OID(_); #define OID_SHA384_VALUE NIST_HASH, 2 diff --git a/src/tpm2/PCR.c b/src/tpm2/PCR.c index 590efc92..80db3722 100644 --- a/src/tpm2/PCR.c +++ b/src/tpm2/PCR.c @@ -3,7 +3,7 @@ /* PCR access and manipulation */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: PCR.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: PCR.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/PlatformACT.c b/src/tpm2/PlatformACT.c index 221a6904..7d62dcb0 100644 --- a/src/tpm2/PlatformACT.c +++ b/src/tpm2/PlatformACT.c @@ -3,7 +3,7 @@ /* Platform Authenticated Countdown Timer */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: PlatformACT.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: PlatformACT.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2019 */ +/* (c) Copyright IBM Corp. and others, 2019 - 2020 */ /* */ /********************************************************************************/ /* C.16 PlatformACT.c */ @@ -170,7 +170,7 @@ ActGetDataPointer( } /* C.16.2.3. _plat__ACT_GetImplemented() */ /* This function tests to see if an ACT is implemented. It is a belt and suspenders function because - the TPM should not be calling to to manipulate an ACT that is not implemented. However, this + the TPM should not be calling to manipulate an ACT that is not implemented. However, this could help the simulator code which doesn't necessarily know if an ACT is implemented or not. */ LIB_EXPORT int _plat__ACT_GetImplemented( diff --git a/src/tpm2/PlatformClock.h b/src/tpm2/PlatformClock.h index e231ac57..8f6ebb95 100644 --- a/src/tpm2/PlatformClock.h +++ b/src/tpm2/PlatformClock.h @@ -3,7 +3,7 @@ /* Platform Clock . */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id$ */ +/* $Id: PlatformClock.h 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2019 */ +/* (c) Copyright IBM Corp. and others, 2019 - 2020 */ /* */ /********************************************************************************/ @@ -73,7 +73,7 @@ // CLOCK_NOMINAL is the number of hardware ticks per mS. A value of 300000 means that the nominal // clock rate used to drive the hardware clock is 30 MHz. The adjustment rates are used to determine // the conversion of the hardware ticks to internal hardware clock value. In practice, we would -// expect that there woudl be a hardware register will accumulated mS. It would be incremented by +// expect that there would be a hardware register will accumulated mS. It would be incremented by // the output of a pre-scaler. The pre-scaler would divide the ticks from the clock by some value // that would compensate for the difference between clock time and real time. The code in Clock does // the emulation of this function. diff --git a/src/tpm2/Platform_fp.h b/src/tpm2/Platform_fp.h index 1703bf6b..4bc7cd4e 100644 --- a/src/tpm2/Platform_fp.h +++ b/src/tpm2/Platform_fp.h @@ -3,7 +3,7 @@ /* NV read and write access methods */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Platform_fp.h 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: Platform_fp.h 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/Policy_spt.c b/src/tpm2/Policy_spt.c index 09d97014..c1334349 100644 --- a/src/tpm2/Policy_spt.c +++ b/src/tpm2/Policy_spt.c @@ -1,9 +1,9 @@ /********************************************************************************/ /* */ -/* */ +/* Policy Command Support */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Policy_spt.c 1490 2019-07-26 21:13:22Z kgoldman $ */ +/* $Id: Policy_spt.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -216,6 +216,10 @@ PolicyDigestClear( MemorySet(session->u2.policyDigest.t.buffer, 0, session->u2.policyDigest.t.size); } + +/* 7.4.2.5 PolicySptCheckCondition() */ +/* Checks to see if the condition in the policy is satisfied. */ + BOOL PolicySptCheckCondition( TPM_EO operation, diff --git a/src/tpm2/Session.c b/src/tpm2/Session.c index b2a62c32..1fc37a43 100644 --- a/src/tpm2/Session.c +++ b/src/tpm2/Session.c @@ -3,7 +3,7 @@ /* Manage the session context counter */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Session.c 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: Session.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,77 +55,16 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ -/* The code in this file is used to manage the session context counter. The scheme implemented here - is a "truncated counter". This scheme allows the TPM to not need TPM_SU_CLEAR for a very long - period of time and still not have the context count for a session repeated. */ -/* The counter (contextCounter)in this implementation is a UINT64 but can be smaller. The "tracking - array" (contextArray) only has 16-bits per context. The tracking array is the data that needs to - be saved and restored across TPM_SU_STATE so that sessions are not lost when the system enters - the sleep state. Also, when the TPM is active, the tracking array is kept in RAM making it - important that the number of bytes for each entry be kept as small as possible. */ -/* The TPM prevents collisions of these truncated values by not allowing a contextID to be assigned - if it would be the same as an existing value. Since the array holds 16 bits, after a context has - been saved, an additional 2^16-1 contexts may be saved before the count would again match. The - normal expectation is that the context will be flushed before its count value is needed again but - it is always possible to have long-lived sessions. */ -/* The contextID is assigned when the context is saved (TPM2_ContextSave()). At that time, the TPM - will compare the low-order 16 bits of contextCounter to the existing values in contextArray and - if one matches, the TPM will return TPM_RC_CONTEXT_GAP (by construction, the entry that contains - the matching value is the oldest context). */ -/* The expected remediation by the TRM is to load the oldest saved session context (the one found by - the TPM), and save it. Since loading the oldest session also eliminates its contextID value from - contextArray, there TPM will always be able to load and save the oldest existing context. */ -/* In the worst case, software may have to load and save several contexts in order to save an - additional one. This should happen very infrequently. */ -/* When the TPM searches contextArray and finds that none of the contextIDs match the low-order - 16-bits of contextCount, the TPM can copy the low bits to the contextArray associated with the - session, and increment contextCount. */ -/* There is one entry in contextArray for each of the active sessions allowed by the TPM - implementation. This array contains either a context count, an index, or a value indicating the - slot is available (0). */ -/* e index into the contextArray is the handle for the session with the region selector byte of the - session set to zero. If an entry in contextArray contains 0, then the corresponding handle may - be assigned to a session. If the entry contains a value that is less than or equal to the number - of loaded sessions for the TPM, then the array entry is the slot in which the context is - loaded. */ -/* EXAMPLE: If the TPM allows 8 loaded sessions, then the slot numbers would be 1-8 and a - contextArrary value in that range would represent the loaded session. */ -/* NOTE: When the TPM firmware determines that the array entry is for a loaded session, it will - subtract 1 to create the zero-based slot number. */ -/* There is one significant corner case in this scheme. When the contextCount is equal to a value - in the contextArray, the oldest session needs to be recycled or flushed. In order to recycle the - session, it must be loaded. To be loaded, there must be an available slot. Rather than require - that a spare slot be available all the time, the TPM will check to see if the contextCount is - equal to some value in the contextArray when a session is created. This prevents the last - session slot from being used when it is likely that a session will need to be recycled. */ -/* If a TPM with both 1.2 and 2.0 functionality uses this scheme for both 1.2 and 2.0 sessions, and - the list of active contexts is read with TPM_GetCapabiltiy(), the TPM will create 32-bit - representations of the list that contains 16-bit values (the TPM2_GetCapability() returns a list - of handles for active sessions rather than a list of contextID). The full contextID has - high-order bits that are either the same as the current contextCount or one less. It is one less - if the 16-bits of the contextArray has a value that is larger than the low-order 16 bits of - contextCount. */ /* 8.9.2 Includes, Defines, and Local Variables */ #define SESSION_C #include "Tpm.h" /* 8.9.3 File Scope Function -- ContextIdSetOldest() */ -/* This function is called when the oldest contextID is being loaded or deleted. Once a saved - context becomes the oldest, it stays the oldest until it is deleted. */ -/* Finding the oldest is a bit tricky. It is not just the numeric comparison of values but is - dependent on the value of contextCounter. */ -/* Assume we have a small contextArray with 8, 4-bit values with values 1 and 2 used to indicate the - loaded context slot number. Also assume that the array contains hex values of (0 0 1 0 3 0 9 F) - and that the contextCounter is an 8-bit counter with a value of 0x37. Since the low nibble is 7, - that means that values closest to but above 7 are older than values below it and, in this - example, 9 is the oldest value. */ -/* Note if we subtract the counter value, from each slot that contains a saved contextID we get (- - - - - B - 2 - 8) and the oldest entry is now easy to find because it has the lowest value. */ static void ContextIdSetOldest( @@ -134,7 +73,7 @@ ContextIdSetOldest( { CONTEXT_SLOT lowBits; CONTEXT_SLOT entry; - CONTEXT_SLOT smallest = ((CONTEXT_SLOT)~0); /* Set to the maximum possible */ + CONTEXT_SLOT smallest = ((CONTEXT_SLOT)~0); UINT32 i; // Set oldestSaveContext to a value indicating none assigned s_oldestSavedSession = MAX_ACTIVE_SESSIONS + 1; diff --git a/src/tpm2/SessionProcess.c b/src/tpm2/SessionProcess.c index 0d1d9186..b99d1f75 100644 --- a/src/tpm2/SessionProcess.c +++ b/src/tpm2/SessionProcess.c @@ -3,7 +3,7 @@ /* Process the Authorization Sessions */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: SessionProcess.c 1532 2019-11-26 14:28:36Z kgoldman $ */ +/* $Id: SessionProcess.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/StartupCommands.c b/src/tpm2/StartupCommands.c index 5b1864a5..1212b46a 100644 --- a/src/tpm2/StartupCommands.c +++ b/src/tpm2/StartupCommands.c @@ -3,7 +3,7 @@ /* Startup Commands */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: StartupCommands.c 1559 2019-12-19 15:41:01Z kgoldman $ */ +/* $Id: StartupCommands.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -149,7 +149,7 @@ TPM2_Startup( locality = 0; g_StartupLocality3 = (locality == 3); #if USE_DA_USED - // If there was no orderly shutdown, then their might have been a write to + // If there was no orderly shutdown, then there might have been a write to // failedTries that didn't get recorded but only if g_daUsed was SET in the // shutdown state g_daUsed = (gp.orderlyState == SU_DA_USED_VALUE); diff --git a/src/tpm2/SymmetricTest.h b/src/tpm2/SymmetricTest.h index c20f4fa9..7a69e515 100644 --- a/src/tpm2/SymmetricTest.h +++ b/src/tpm2/SymmetricTest.h @@ -93,7 +93,7 @@ const SYMMETRIC_TEST_VECTOR c_symTestValues[NUM_SYMS + 1] = { {dataOut_AES256_CTR, dataOut_AES256_OFB, dataOut_AES256_CBC, dataOut_AES256_CFB, dataOut_AES256_ECB}}, #endif -#if ALG_SM4 && SM4_128 +#if ALG_SM4 && SM4_128 // libtpms activated {ALG_SM4_VALUE, 128, key_SM4128, 16, sizeof(dataIn_SM4128), dataIn_SM4128, {dataOut_SM4128_CTR, dataOut_SM4128_OFB, dataOut_SM4128_CBC, dataOut_SM4128_CFB, dataOut_AES128_ECB}}, diff --git a/src/tpm2/TPMCmdp.c b/src/tpm2/TPMCmdp.c index 87fa5ade..b290bcf3 100644 --- a/src/tpm2/TPMCmdp.c +++ b/src/tpm2/TPMCmdp.c @@ -3,7 +3,7 @@ /* Process the commands */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: TPMCmdp.c 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: TPMCmdp.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/Tpm.h b/src/tpm2/Tpm.h index c72f064b..e05c5295 100644 --- a/src/tpm2/Tpm.h +++ b/src/tpm2/Tpm.h @@ -3,7 +3,7 @@ /* Root header file for building any TPM.lib code */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: Tpm.h 1490 2019-07-26 21:13:22Z kgoldman $ */ +/* $Id: Tpm.h 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/TpmAlgorithmDefines.h b/src/tpm2/TpmAlgorithmDefines.h index 015a544d..24733be9 100644 --- a/src/tpm2/TpmAlgorithmDefines.h +++ b/src/tpm2/TpmAlgorithmDefines.h @@ -63,7 +63,7 @@ // This file contains the algorithm values from the TCG Algorithm Registry. #ifndef _TPM_ALGORITHM_DEFINES_H_ #define _TPM_ALGORITHM_DEFINES_H_ -// Table 2:3 - Definition of Base Types Base Types are in BaseTypes.h +// Table 2:3 - Definition of Base Types #define ECC_CURVES \ {TPM_ECC_BN_P256, TPM_ECC_BN_P638, TPM_ECC_NIST_P192, \ TPM_ECC_NIST_P224, TPM_ECC_NIST_P256, TPM_ECC_NIST_P384, \ diff --git a/src/tpm2/TpmBuildSwitches.h b/src/tpm2/TpmBuildSwitches.h index 52c109ff..ad7fba52 100644 --- a/src/tpm2/TpmBuildSwitches.h +++ b/src/tpm2/TpmBuildSwitches.h @@ -3,7 +3,7 @@ /* Build Switches */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: TpmBuildSwitches.h 1529 2019-11-21 23:29:01Z kgoldman $ */ +/* $Id: TpmBuildSwitches.h 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ diff --git a/src/tpm2/TpmTypes.h b/src/tpm2/TpmTypes.h index 8ba7afb4..076b3613 100644 --- a/src/tpm2/TpmTypes.h +++ b/src/tpm2/TpmTypes.h @@ -64,7 +64,7 @@ #ifndef TPMTYPES_H #define TPMTYPES_H -/* Table 1:2 - Definition of TPM_ALG_ID Constants */ +/* TCG Algorithm Registry: Table 1:2 - Definition of TPM_ALG_ID Constants */ typedef UINT16 TPM_ALG_ID; #define TYPE_OF_TPM_ALG_ID UINT16 @@ -157,7 +157,7 @@ typedef UINT16 TPM_ALG_ID; #define ALG_LAST_VALUE 0x0044 #define TPM_ALG_LAST (TPM_ALG_ID)(ALG_LAST_VALUE) -/* Table 1:3 - Definition of TPM_ECC_CURVE Constants */ +/* TCG Algorithm Registry: Table 1:3 - Definition of TPM_ECC_CURVE Constants */ typedef UINT16 TPM_ECC_CURVE; #define TYPE_OF_TPM_ECC_CURVE UINT16 #define TPM_ECC_NONE (TPM_ECC_CURVE)(0x0000) @@ -170,7 +170,7 @@ typedef UINT16 TPM_ECC_CURVE; #define TPM_ECC_BN_P638 (TPM_ECC_CURVE)(0x0011) #define TPM_ECC_SM2_P256 (TPM_ECC_CURVE)(0x0020) -/* Table 2:12 - Definition of TPM_CC Constants */ +/* TPM 2.0 Part 2: Table 2:12 - Definition of TPM_CC Constants */ typedef UINT32 TPM_CC; #define TYPE_OF_TPM_CC UINT32 #define TPM_CC_NV_UndefineSpaceSpecial (TPM_CC)(0x0000011F) @@ -805,6 +805,7 @@ typedef UINT32 TPMA_ALGORITHM; #define TPMA_ALGORITHM_method ((TPMA_ALGORITHM)1 << 10) #define TPMA_ALGORITHM_reserved 0xfffff8f0 +// This is the initializer for a TPMA_ALGORITHM bit array. #define TPMA_ALGORITHM_INITIALIZER( \ asymmetric, symmetric, hash, object, bits_at_4, \ signing, encrypting, method, bits_at_11) \ diff --git a/src/tpm2/Unmarshal.c b/src/tpm2/Unmarshal.c index a301be22..0fddec6b 100644 --- a/src/tpm2/Unmarshal.c +++ b/src/tpm2/Unmarshal.c @@ -158,7 +158,8 @@ TPM_KEY_BITS_Unmarshal(TPM_KEY_BITS *target, BYTE **buffer, INT32 *size) } /* Table 7 - Definition of (UINT32) TPM_GENERATED Constants */ -#if 0 // libtpms added + +#if 0 TPM_RC TPM_GENERATED_Unmarshal(TPM_GENERATED *target, BYTE **buffer, INT32 *size) { @@ -174,7 +175,7 @@ TPM_GENERATED_Unmarshal(TPM_GENERATED *target, BYTE **buffer, INT32 *size) } return rc; } -#endif // libtpms added +#endif /* Table 9 - Definition of (UINT16) TPM_ALG_ID Constants */ diff --git a/src/tpm2/X509_ECC.c b/src/tpm2/X509_ECC.c index 884a792c..729b2908 100644 --- a/src/tpm2/X509_ECC.c +++ b/src/tpm2/X509_ECC.c @@ -3,7 +3,7 @@ /* TPM X509 ECC */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: X509_ECC.c 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: X509_ECC.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2019 */ +/* (c) Copyright IBM Corp. and others, 2019 - 2020 */ /* */ /********************************************************************************/ @@ -65,9 +65,9 @@ #include "X509.h" #include "OIDs.h" #include "TpmAsn1_fp.h" +#include "X509_ECC_fp.h" #include "X509_spt_fp.h" #include "CryptHash_fp.h" -#include "X509_ECC_fp.h" /* kgold */ /* 10.2.24.2 Functions */ /* 10.2.24.2.1 X509PushPoint() */ diff --git a/src/tpm2/X509_RSA.c b/src/tpm2/X509_RSA.c index 734abe5d..3bfc9774 100644 --- a/src/tpm2/X509_RSA.c +++ b/src/tpm2/X509_RSA.c @@ -3,7 +3,7 @@ /* TPM X509 RSA */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: X509_RSA.c 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: X509_RSA.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2019 */ +/* (c) Copyright IBM Corp. and others, 2019 - 2020 */ /* */ /********************************************************************************/ @@ -64,10 +64,10 @@ #include "Tpm.h" #include "X509.h" #include "TpmAsn1_fp.h" +#include "X509_RSA_fp.h" #include "X509_spt_fp.h" #include "CryptHash_fp.h" #include "CryptRsa_fp.h" -#include "X509_RSA_fp.h" /* kgold */ /* 10.2.25.2 Functions */ #if ALG_RSA @@ -216,16 +216,6 @@ X509AddPublicRSA( { UINT32 exp = object->publicArea.parameters.rsaDetail.exponent; // - /* - SEQUENCE (2 elem) 1st - SEQUENCE (2 elem) 2nd - OBJECT IDENTIFIER 1.2.840.113549.1.1.1 rsaEncryption (PKCS #1) - NULL - BIT STRING (1 elem) - SEQUENCE (2 elem) 3rd - INTEGER (2048 bit) 2197304513741227955725834199357401 - INTEGER 65537 - */ // If this is a check to see if the key can be encoded, it can. // Need to mark the end sequence if(ctx == NULL) diff --git a/src/tpm2/X509_spt.c b/src/tpm2/X509_spt.c index 195a4f7f..d23ca0c1 100644 --- a/src/tpm2/X509_spt.c +++ b/src/tpm2/X509_spt.c @@ -306,10 +306,6 @@ X509PushAlgorithmIdentifierSequence( const BYTE *OID ) { - // An algorithm ID sequence is: - // SEQUENCE - // OID - // NULL ASN1StartMarshalContext(ctx); // hash algorithm ASN1PushNull(ctx); ASN1PushOID(ctx, OID); diff --git a/src/tpm2/crypto/CryptEcc.h b/src/tpm2/crypto/CryptEcc.h index ac88d267..01f61022 100644 --- a/src/tpm2/crypto/CryptEcc.h +++ b/src/tpm2/crypto/CryptEcc.h @@ -65,6 +65,7 @@ internally. The ECC-related structures that cross the TPM interface are defined in TpmTypes.h */ #ifndef _CRYPT_ECC_H #define _CRYPT_ECC_H + /* 10.1.2.2 Structures */ /* This is used to define the macro that may or may not be in the data set for the curve (CryptEccData.c). If there is a mismatch, the compiler will warn that there is to much/not enough diff --git a/src/tpm2/crypto/openssl/CryptEccKeyExchange.c b/src/tpm2/crypto/openssl/CryptEccKeyExchange.c index 41921030..28a71a73 100644 --- a/src/tpm2/crypto/openssl/CryptEccKeyExchange.c +++ b/src/tpm2/crypto/openssl/CryptEccKeyExchange.c @@ -3,7 +3,7 @@ /* Functions that are used for the two-phase, ECC, key-exchange protocols */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CryptEccKeyExchange.c 1370 2018-11-02 19:39:07Z kgoldman $ */ +/* $Id: CryptEccKeyExchange.c 1594 2020-03-26 22:15:48Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -61,17 +61,16 @@ /* 10.2.11 CryptEccKeyExchange.c */ #include "Tpm.h" -/* libtpms added begin */ + LIB_EXPORT TPM_RC SM2KeyExchange( - TPMS_ECC_POINT *outZ, // OUT: the computed point - TPM_ECC_CURVE curveId, // IN: the curve for the computations - TPM2B_ECC_PARAMETER *dsAIn, // IN: static private TPM key - TPM2B_ECC_PARAMETER *deAIn, // IN: ephemeral private TPM key - TPMS_ECC_POINT *QsBIn, // IN: static public party B key - TPMS_ECC_POINT *QeBIn // IN: ephemeral public party B key - ); -/* libtpms added end */ + TPMS_ECC_POINT *outZ, // OUT: the computed point + TPM_ECC_CURVE curveId, // IN: the curve for the computations + TPM2B_ECC_PARAMETER *dsAIn, // IN: static private TPM key + TPM2B_ECC_PARAMETER *deAIn, // IN: ephemeral private TPM key + TPMS_ECC_POINT *QsBIn, // IN: static public party B key + TPMS_ECC_POINT *QeBIn // IN: ephemeral public party B key + ); #if CC_ZGen_2Phase == YES #if ALG_ECMQV diff --git a/src/tpm2/crypto/openssl/CryptRand.c b/src/tpm2/crypto/openssl/CryptRand.c index 87522819..2cfa56b7 100644 --- a/src/tpm2/crypto/openssl/CryptRand.c +++ b/src/tpm2/crypto/openssl/CryptRand.c @@ -3,7 +3,7 @@ /* DRBG with a behavior according to SP800-90A */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: CryptRand.c 1532 2019-11-26 14:28:36Z kgoldman $ */ +/* $Id: CryptRand.c 1603 2020-04-03 17:48:43Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -638,7 +638,9 @@ DRBG_InstantiateSeeded( return TPM_RC_SUCCESS; } /* 10.2.16.3.7 CryptRandStartup() */ -/* This function is called when TPM_Startup() is executed. This function always returns TRUE. */ +/* This function is called when TPM_Startup() is executed. */ +/* TRUE instantiation succeeded */ /* kgold */ +/* FALSE instantiation failed */ LIB_EXPORT BOOL CryptRandStartup( void @@ -646,18 +648,16 @@ CryptRandStartup( { #if ! _DRBG_STATE_SAVE // If not saved in NV, re-instantiate on each startup - return DRBG_Instantiate(&drbgDefault, 0, NULL); // libtpms changed; return BOOL + return DRBG_Instantiate(&drbgDefault, 0, NULL); /* kgold; libtpms return BOOL */ #else // If the running state is saved in NV, NV has to be loaded before it can // be updated if(go.drbgState.magic == DRBG_MAGIC) - return DRBG_Reseed(&go.drbgState, NULL, NULL); // libtpms changed; return BOOL + return DRBG_Reseed(&go.drbgState, NULL, NULL); /* kgold; libtpms return BOOL */ else - return DRBG_Instantiate(&go.drbgState, 0, NULL); // libtpms changed; return BOOL + return DRBG_Instantiate(&go.drbgState, 0, NULL); /* kgold; libtpms return BOOL */ #endif -#if 0 return TRUE; -#endif } /* 10.2.16.3.8 CryptRandInit() */ /* This function is called when _TPM_Init() is being processed */ diff --git a/src/tpm2/crypto/openssl/LibSupport.h b/src/tpm2/crypto/openssl/LibSupport.h index 07d7e6a7..423ef5ea 100644 --- a/src/tpm2/crypto/openssl/LibSupport.h +++ b/src/tpm2/crypto/openssl/LibSupport.h @@ -3,7 +3,7 @@ /* select the library code that gets included in the TPM build */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: LibSupport.h 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: LibSupport.h 1603 2020-04-03 17:48:43Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -65,11 +65,14 @@ #define _LIB_SUPPORT_H_ #if 0 // libtpms added +/* kgold added power and s390 */ #ifndef RADIX_BITS # if defined(__x86_64__) || defined(__x86_64) \ - || defined(__amd64__) || defined(__amd64) || defined(_WIN64) || defined(_M_X64) \ - || defined(_M_ARM64) || defined(__aarch64__) \ - || defined(__powerpc64__) || defined(__ppc64__) + || defined(__amd64__) || defined(__amd64) \ + || defined(_WIN64) || defined(_M_X64) \ + || defined(_M_ARM64) || defined(__aarch64__) \ + || defined(__powerpc64__) || defined(__ppc64__) \ + || defined(__s390x__) # define RADIX_BITS 64 # elif defined(__i386__) || defined(__i386) || defined(i386) \ || defined(_WIN32) || defined(_M_IX86) \ @@ -85,7 +88,7 @@ #define LIB_QUOTE(_STRING_) #_STRING_ #define LIB_INCLUDE2(_LIB_, _TYPE_) LIB_QUOTE(TpmTo##_LIB_##_TYPE_.h) #define LIB_INCLUDE(_LIB_, _TYPE_) LIB_INCLUDE2(_LIB_, _TYPE_) -// Include the options for hashing and symmetric. Defer the load of the math package Until the +// Include the options for hashing and symmetric. Defer the load of the math package until the // bignum parameters are defined. #include LIB_INCLUDE(SYM_LIB, Sym) #include LIB_INCLUDE(HASH_LIB, Hash) diff --git a/src/tpm2/crypto/openssl/TpmToOsslMath.c b/src/tpm2/crypto/openssl/TpmToOsslMath.c index 971fcd62..c628b296 100644 --- a/src/tpm2/crypto/openssl/TpmToOsslMath.c +++ b/src/tpm2/crypto/openssl/TpmToOsslMath.c @@ -3,7 +3,7 @@ /* TPM to OpenSSL BigNum Shim Layer */ /* Written by Ken Goldman */ /* IBM Thomas J. Watson Research Center */ -/* $Id: TpmToOsslMath.c 1519 2019-11-15 20:43:51Z kgoldman $ */ +/* $Id: TpmToOsslMath.c 1598 2020-03-27 21:59:49Z kgoldman $ */ /* */ /* Licenses and Notices */ /* */ @@ -55,7 +55,7 @@ /* arising in any way out of use or reliance upon this specification or any */ /* information herein. */ /* */ -/* (c) Copyright IBM Corp. and others, 2016 - 2019 */ +/* (c) Copyright IBM Corp. and others, 2016 - 2020 */ /* */ /********************************************************************************/ @@ -82,13 +82,6 @@ #ifdef MATH_LIB_OSSL #include "TpmToOsslMath_fp.h" -#if 0 // libtpms added -#if OPENSSL_VERSION_NUMBER < 0x10101000 /* kgold */ -#define EC_POINT_set_affine_coordinates(a,b,c,d,e) EC_POINT_set_affine_coordinates_GFp(a,b,c,d,e) -#define EC_POINT_get_affine_coordinates(a,b,c,d,e) EC_POINT_get_affine_coordinates_GFp(a,b,c,d,e) -#endif -#endif // libtpms added - /* B.2.3.2.3.1. OsslToTpmBn() */ /* This function converts an OpenSSL BIGNUM to a TPM bignum. In this implementation it is assumed that OpenSSL uses a different control structure but the same data layout -- an array of @@ -533,9 +526,9 @@ EcPointInitialized( { BIG_INITIALIZED(bnX, initializer->x); BIG_INITIALIZED(bnY, initializer->y); - if(E == NULL) // libtpms changed begin (check E before accessing) + if(E == NULL) FAIL(FATAL_ERROR_ALLOCATION); - P = EC_POINT_new(E->G); // libtpms changed end + P = EC_POINT_new(E->G); #if defined(OPENSSL_API_COMPAT) && OPENSSL_API_COMPAT >= 0x10200000L // libtpms added begin if(!EC_POINT_set_affine_coordinates(E->G, P, bnX, bnY, E->CTX)) #else // libtpms added end diff --git a/src/tpm2/crypto/openssl/TpmToOsslMath.h b/src/tpm2/crypto/openssl/TpmToOsslMath.h index 2484084c..7a3c0daa 100644 --- a/src/tpm2/crypto/openssl/TpmToOsslMath.h +++ b/src/tpm2/crypto/openssl/TpmToOsslMath.h @@ -78,14 +78,17 @@ #elif OPENSSL_VERSION_NUMBER >= 0x10100000L // from crypto/bn/bn_lcl.h struct bignum_st { - BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit - * chunks. */ + BN_ULONG *d; int top; /* Index of last used d +1. */ /* The next are internal book keeping for bn_expand. */ int dmax; /* Size of the d array. */ int neg; /* one if the number is negative */ int flags; }; +#if 0 // libtpms added +# define EC_POINT_get_affine_coordinates EC_POINT_get_affine_coordinates_GFp +# define EC_POINT_set_affine_coordinates EC_POINT_set_affine_coordinates_GFp +#endif // libtpms added #endif // OPENSSL_VERSION_NUMBER #endif // libtpms added #include