Unreleased
Added
* added pkg-config files for libraries
Changed
* rename libtss2 to libsapi
* rename libtcti_device to libtcti-device
* rename libtcti_socket to libtcti-socket
* move $(includedir)/tss to $(includedir)/sapi
* Move default compiler flags to config.site file.
* Removed SAPI_CLIENT macro tests.

2015-07-28 Will Arthur <will.c.arthur@intel.com>
* 0.98 release
* Added ability for resource manager to communicate with a real TPM via
/dev/tpm0 (Linux only). Added command line switch to select simulator if not
communicating with a real TPM.
* Rearranged directory structure in a more logical fashion.
* Changed name of Linux makefiles from “makefile.linux” to makefile. This was
done in preparation for autotools porting (future enhancement).
* Changed tpm library’s windows makefile from “makefile” to “windows.mak”.
* Changed all makefiles and Visual Studio solution and project files to work
with new directory structure.
* Split out debug and TPM platform command code in tpmsockets.cpp into
separate files. This code didn’t belong in this file.

2015-??-?? Will Arthur <will.c.arthur@intel.com>
* 0.97 release
* Fixed resource manager issues with leaving objects and session contexts in
TPM memory. This was causing a 902 error on 2nd pass of PolicyTests. And it
could have caused issues when error conditions occurred, because in those
cases, the contexts weren't being evicted.
* Changed TAB/RM into a separate executable (daemon).
* Added code to save context in RM table when an object is context loaded.
* Added code to get hierarchy from context when object is context loaded.
* Fixed bug: if LoadContext fails when loading objects it should exit
ResourceMgrSendTpmCommand immediately. Instead it was loading other objects
and proceeding through the rest of ResourceMgrSendTpmCommand function.
* Added targeted test to tpmclient.cpp to make sure that hierarchy is saved
correctly for ContextLoad command.
* Fixed issues with TCTI: opaque data shouldn't be defined in tss2_tcti.h
file.
* Fixed makefile issue: under Windows, it was using mkdir command instead of
md.
* Fixed issue with definition of TSS2_TCTI_POLL_HANDLE in tss2_tcti.h file.
* Fixed bug: wasn't handling case for TPM errors correctly in CheckPassed.
* Added code to print level-specific messages when errors occur.
* Changed CheckOverflow to return SAPI error level for errors. Other levels of
TSS that call this function will alter the error level field.
* Fixed resource manager to properly handle EvictControl commands. Before, if
a persistent object was needed, the RM would give a 0xc0002 error.
* Fixed printf's in resource manager so that they only print the right # of
characters.
* Added test for EvictControl.Fixed TestEncryptDecryptSession to work with
1.22 simulator.
* Fixed TestShutdown to work with 1.22 simulator.
* Added code to check that TPM2B output parameters' size fields are set to 0
for following structures: TPM2B_ECC_POINT, TPM2B_PUBLIC, TPM2B_NV_PUBLIC, and
TPM2B_CREATION_DATA.

2015-04-16 Will Arthur <will.c.arthur@intel.com>
* 0.96 release
* Added buffer overrun checks to all SAPI code.
* Added buffer overrun checks to resource manager code.
* Added code to Part 3 functions to properly handle null pointers for output
parameters.
* Auto-generated most of the SAPI code from the TPM 2.0 specification.

2015-01-26 Will Arthur <will.c.arthur@intel.com>
* 0.95.1 release
* Fixed bug in CreatePrimary and Create: for one-call and decrypt session
case, they were copying first parameter from incorrect pointer.
* For CopyCreationDataOut, CopyECCPointOut, CopyNvPublicOut, CopyPublicOut
added placeholder for return code if size != 0 when called. To be filled in
when TSS WG decides on error code.
* Fixed bugs in CopySensitiveCreateIn and CopySensitiveIn: they shouldn't look
at the size.
* Fixed bugs in CopyECCPointIn, CopyNvPublicIn, CopyPublicIn, CopySensitiveIn,
and CopySensitiveCreateIn: not handling NULL outpul parameters correctly.
* Changes all instances of calls to ExecuteFinish to a timeout that works for
all cases including communicating with the simulator over the network.
* Fixed call to LoadExternal in TestUnseal--needed to pass in a NULL pointer
for the inSensitive parameter.
* Fixed bug in CreatePrimary: not passing correct pointer for inSensitive.
* Fixed timeouts for all ExecuteFinish calls in test application.
* Fixed bugs in RM: cases where I wasn't handling errors and then parsing data
that hadn't been received. Caused seg faults under Linux.
* Fixed timeout for async Startup test.
* Fixed SocketReceiveTpmResponse for blocking case.
* Fixed bug in ExecuteFinish: BAD_SEQUENCE error generated early in function
was getting overwritten by INSUFFICENT_RESPONSE error.
* Fixed bug in ExecuteFinish: it was always setting timeout to 0 instead of
TSS2_TCTI_TIMEOUT_BLOCK.
* Fixed bug in resource manager: error level for non-TPM errors was getting
overwritten with resource manager error level.
* Replace Implementation.h with implementation.h.
* Changed name of TPMB.h tpmb.h
* Added code to dynamically work around simulator 1.19 bugs:
- GetCapability with bad property returns different error code.
- Shutdown with bad value for shutdownValue causes TPM to go into failure
mode.
* Fixed overlap in error codes: TSS2_BASE_RC_NOT_SUPPORTED and
TSS2_BASE_RC_BAD_TCTI_STRUCTURE had same value.
* Cleaned up all app level error codes.
* Added code to RM and simDriver to support timeout on receive calls.
* Added code to properly handle TPM errors in ExecuteFinish. Previously it was
ignoring these errors, which meant that the rest of the _Complete call would
try to unmarshall non-existent response data. Added test case for this.
* Added support for cancel commands and tests for this.
* Added help text for command line options.
* Fixed bug with ordering of -startAuthSessionTest command line parameter: if
it was not the last option, tpmclient would fail.
* Added code to reset dictionary attacks to start of tpmclient tests: this
works around an issue where the simulator doesn't seem to completely clear the
dictionary attack counter.
* Added support for TCTI setLocality to resource manager and sim driver and
made test app use this.
* Added RM tests.
* Added code to RM to evict contexts for objects, sequences, and sessions
whose handles are returned by commands.
* Fixed bugs related to ContextLoad.
* Added code to properly support ContextSave.
* Fixed bug in EvictContext: it was updating lastSessionSequenceNum even if
the ContextSave command failed.
* Added proper error code levels to all RM errors.
* Added code to LoadContext function to output TPM formatted error codes.
* For Create and Load commands, added proper handling of errors if parent
handle not found.
* Fixed handling of RM errors that occur during command send.
* Fixed bug in simDriver init function. A second TCTI context being
initialized was re-initing the whole driver.
* Added tests for bad session handle, both in handle area and in authorization
area.
* Updated to latest 1.19 header files.
* Fixed bugs in resource manager:
- FindOldestSession wasn't working correctly—it was just finding the first
one.
- HandleGap needed to un-gap all the session contexts from the older interval.
It wasn't doing that.
* Fixed bug in handling of command line options—specifying none would cause
program to error out.
* Fixed issues in cleanup of TestStartAuthSession test. It was leaving some
sessions alive.
* Added command line option to run the StartAuthSession tests by themselves.
* Updated copyright notices on all files.
* Added support for command line control of debug message levels.
* Changed test app to use linked list of session structures instead of fixed
array. This fixed a host of issues.
* Added new error level for resource manager for errors received from TPM from
commands sent by RM.
* Added error return for insufficiently sized response to ExecuteFinish
function.
* Fixed bugs in Certify, CertifyCreation, Commit, Create, CreatePrimary, and
GetCapability: if null used for return parameters, the function would fail.
* Added gap support to resource manager.
* Added support to resource manager for kicking out oldest session if max
sessions have been started and a new one is being created.
* Added getCap calls to RM init function for getting max sessions and gap
limit.
* Added code to teardown the RM.
* Added test for session gapping.
* Fixed bug in SimpleHmacOrPolicyTest where it was re-creating the global
sysContext causing failures in later tests because the context was too small.
* Fixed a bug in ExecuteFinish. If response is too small, code was just using
the command buffer as the response buffer instead of returning an error.
* Added code to proactively detect MAX_ACTIVE_SESSIONS.
* Fixed some places in test app where I wasn't deleting entries from the
sessions table.
* Added SAPI library subproject to test app project. This allows a one-touch
build in Visual Studio.
* Removed 'extern "C"' statement from resourcemgr.c file. Not needed and
causes problems with some compilers.
* Removed unneeded includes from resource manager source.
* Added changes to return error codes from TAB/RM and layers underneath in a
response byte stream.
* Fixed build warnings related to size mismatch of connectionId.
* Changed TeardownSysContext to zero out freed context pointer.
* This helps prevent double free errors.
* Fixed bug in EncryptDecryptXOR: wasn't setting the size of the outputData
buffer.

2014-10-17 Will Arthur <will.c.arthur@intel.com>
* 0.95 release
* Added support for Shutdown/Startup and effects on saved contexts.
* Added support for stClear bit objects. On a TPM Restart, objects with this
bit set will be removed from the TAB/RM entry list.
* Fixed intermittent access violation bug with GetSetDecryptParamTests
function. I was reading off the end of the nvWrite buffer.
* Added TCTI teardown function.
* Fixed bug in Tss2_Sys_GetContextSize function: it was getting the requested
size only, not the requested size plus the context blob's size. Problem was an
associativity issue with ternary conditional ?: operator.
* Removed most instances of sysContext in tpmclient.cpp. Now most tests use
the global one.
* Re-architected TAB/RM:
* Added TAB functionality.
* Changed RM from reactive mode to proactive mode. Now instead of reacting to
error codes from the TPM that indicate no enough slots, it guarantees that the
TPM is always ready for each command (all slots freed after execution of each
command).
* Added TCTI layer below RM to talk to driver. This allows making calls into
the SAPI library from the RM without recursing into the RM again. With the
separate TCTI context, the RM can route SAPI calls to talk directly to the
driver. This fixed the virtual/real handle mess that was occurring with
recursively entering the RM.
* Added function pointers to TAB/RM for functions that might need to be
different based on the environment that TAB/RM is running in: malloc, free,
printf.
* Replaced the fixed length arrays of RM structures with linked list
structures and appropriate functions.
* Fixed some cases of using pointers before checking that they're not NULL.
* Fixed bugs in marshalling/unmarshalling routines and added some missing
unmarshalling functions.
* Fixed hash sequence test.
* Fixed bugs in CopyCapabilityDataOut function for algorithms.
* Fixed bug with ExecuteAsync: passed in BE size to transmit call. Needs to be
host-endian.
* Added and corrected error codes to match latest SAPI spec.
* Removed pack pragma from header files for external interfaces.
* Added MAX_NV_BUFFER_SIZE and used for max size of MAX_NV_BUFFER_2B.
* Changed on bit fields in TPM2 data structures to unsigned int. Previously
the compiler was generating incorrect code because these were int bit fields.
* Cleaned up TestHash function.
* Added code to TestHash to calculate and validate a hash.
* Added code to TestHash to force a flush of an active sequence and then use
it to finish the hash calculation.
* Added code to SimpleHMACTest to read the NV index back.
* Added SimpleHMACOrPolicyTest function which helps illustrate the difference
between HMAC and policy sessions.

2014-08-01 Will Arthur <will.c.arthur@intel.com>
* 0.93 release
* Fixed bad parameters on call to GetEncryptParam. This only failed on Linux
systems.
* Fixed minor build errors under Linux.
* Added IsSession routine and fixed all instances in resource manager where a
handle is checked for being a session handle (some were incorrect).
* Eliminated unneeded code in TestPolicy.
* Added RollNonces function and used for all tests for HMAC and policy
sessions.
* Changed how nonce's are setup after StartAuthSession. Before they were being
inherently rolled in preparation for first command. Now the RollNonces routine
will need to be called before the first command. This makes handling of the
nonces consistent for all code that needs to roll them.
* Added TCTI malformed response error code.
* Added simple HMAC test.
* Fixed bug in StartAuthSession: wasn't marshalling symmetric parameter
properly if algorithm was TPM_ALG_XOR.
* Fixed bug in SetDecryptParam: when inserting a decrypt param, the code
wasn't updating the command size field.
* Fixed bug in ExecuteFinish: wasn't returning TPM error code if no other
errors had occurred.
* Added test for session parameter encryption and decryption.
* Fixed bug in KDFa function: if key size was zero, this was just returning
success, but not generating a key. That behavior is specific to session key
generation not to the underlying KDFa function. Upleveled that code into
StartAuthSession function so that it only occurs in the session key generation
case.
* Changed NV attributes for all NV indices to add orderly attribute. This
helps, but doesn't entirely relieve, NV wearout issues with the tests.
* Removed an unused input parameter from ComputeCommandHmacs and
CheckResponseHmacs.
* Changed NV attributes for all NV indices to add orderly attribute. This
helps, but doesn't entirely relieve, NV wearout issues with the tests.
* Removed an unused input parameter from ComputeCommandHmacs and
CheckResponseHmacs.
* Added more descriptive error codes to StartAuthSession function.
* Added TpmHashSequence function. Used this build password/PCR policy.
* Added more policy tests: password/PCR, authValue, password
* Fixed a bunch of resource manager issues. Many of these were exposed by the
new policy tests.
* Added code to flush context of session handles I'm not using.
* Added GetTestResult functions (had missed these previously)
* Updated resource manager to properly handle sessions. Before we were not
swapping them in as needed.
* Added tests for asyncronous and syncronous non-one call to Startup tests.
* Added GetTestResult tests.
* Added test to create a bunch of sessions. This test found some resource
manager issues.
* Updated readme.docx file. Now tests can run with V1.15 version of MS
simulator.
* Made test app work with MS simulator version 1.15. Had to add command to
turn on NV. Before this change, when running against MS simulator,
TPM2_Startup would fail with 0x923 error: "ERROR: WARNING,
TPM_RC_NV_UNAVAILABLE: the command may require writing of NV and NV is not
current accessible."
* Changed NO_RESPONSE_RECEIVED error code to IO_ERROR.
* Removed DRIVER_NOT_FOUND and DRIVERINFO_NOT_FOUND error codes.
* Cleaned up defines for MS simulator commands.

2014-06-17 Will Arthur <will.c.arthur@intel.com>
* 0.92 release
* Fixed bugs in sockets send and receive code. Needed to account for actual
bytes sent/received instead of assuming them. This was causing intermittent
errors when looping continuously on the tests and running the tests remotely
(on a different host system than the simulator was running on).
* Fixed SAPI and test app builds to not fail if directories are already
present. Suppressed error messages related to mkdir.
* Turned on compiler warnings and fixed all issues when building under Ubuntu
Linux.
* Fixed error in readme.docx file. I was specifying the wrong version of the
simulator.
* Fixed error handling if sockets interface fails to connect.
* Fixed build error: now I make directories that are needed.

2014-06-04 Will Arthur <will.c.arthur@intel.com>
* 0.91 release
* Added code optimized builds to System API library code
* Added warning flags to compiler command lines.
* Fixed all compiler warnings when built under Windows and Linux.

2014-05-28 Will Arthur <will.c.arthur@intel.com>
* 0.90 release
* Ported existing functionality to latest SAPI spec.
* Cleaned up and added comments to PasswordTest.
* Added support for encrypt/decrypt sessions with one-call functions.
* Added cleaned up and reorganized header files that comply with latest SAPI
specification.
* Added changes for supporting get/set encrypt/decrypt functions.
* Added latest header file that corresponds to version 1.03 of TPM 2.0
specification.
* Added debug display of command string for each command being run.
* Added command line flag to slow down test display for demo purposes.
* Fixed problem of hang when looping through tests. Sessions table was running
out of entries because we weren't removing sessions that were closed.
* Fixed issue with resource manager. All virtual handles had the high nibble
set to 0xff. Now the high nibble is left intact so that applications can
determine the type of the handle.
* Added option to loop the tests continuously.
NOTES:
1. Testing is not comprehensive. See test code to see what’s tested. Please
report any bugs found so that fixes can be rolled out.
2. Range checks within SAPI code not yet implemented.
3. Still need to add support for separate debug and production builds.
Production build will be optimized for code size.

2013-12-16 Will Arthur <will.c.arthur@intel.com>
* 0.82 release
NOTE: HMAC and cpHash calculations are only supported for NV Read and NV Write
commands currently. The system API changes to support this have been
prototyped for these commands and are awaitingTSS approval before being ported
to all the other commands.
* Added support for building and running system API code and tests under
Linux.
* Added command line options for host name and port to test application.

2013-12-02 Will Arthur <will.c.arthur@intel.com>
* 0.81 release
NOTE: HMAC and cpHash calculations are only supported for NV Read and NV Write
commands currently. The system API changes to support this have been
prototyped for these commands and are awaitingTSS approval before being ported
to all the other commands.
* Added support for TPM2_PolicyNvWritten command.
* Altered tests to work with 1.01 simulator.
* Fixed errors in readme.docx.

2013-11-19 Will Arthur <will.c.arthur@intel.com>
* 0.80 release
NOTE: HMAC and cpHash calculations are only supported for NV Read and NV Write
commands currently. The system API changes to support this have been
prototyped for these commands and are awaitingTSS approval before being ported
to all the other commands.
* Fixed bugs in resource manager.
* Fixed bugs with salted session tests.
* Ported tests to work with 0.99 sim's version of support for bound sessions.
* Fixed bugs in test code, with how key is generated for encrypting the salt
for salted session tests.
* Fixed a rather serious bug in HmacSessionTest: CopyNvPublicIn is called to
copy a structure, but is had the side effect of modifying the first parameter.
This function really wasn't designed to be used the way it is. Worked around
the problem by resetting the pointer after calling CopyNvPublicIn. This
problem showed up as a stack corruption issue that occurred during the 4th
test. Basically the pointer moved enough after the first 3 tests to start
corrupting other variables on the stack.
* Added code to create a new session for reading/writing the NV index after
it’s first written. This tests the other case for bound sessions.
* Automated runtime setup of key for salted tests.
* Developed changes for NVRead/Write commands to use new 2-stage method for
handling HMAC calculations.
* Changed CopyPcrSelectionIn function so that it can be used by applications
to generate policy hashes.
* Fixed build error: changes in header files weren't causing TPM 2.0 library
functions to be rebuilt.
* Created CalcPHash helper function.
* Changed HMAC session code to new architecture that doesn't use any helper
function pointers.
* Added routine to start policy sessions.
* Added policy test code--not used currently.
* Changed return code type form UINT32 to TPM_RC in tss_sysapi.h.
* Changed "authHandle" to "sessionHandle" in sample code.
* Debugged and fixed StartAuthSession2 function in test code.
* Debugged and fixed first policy test.
* Used new NvDefine function to help abstract some of the details of creating
NV indices.
* Used non-MS header file to build system API.
* Cleaned up and reorganized files and directories.

2013-08-07 Will Arthur <will.c.arthur@intel.com>
* 0.67 release
NOTE: HMAC helper function callouts are only being done for NV Read and NV
Write commands currently. The system API changes to support this are still
being prototyped. After they are finalized, these changes will be extended to
all functions that use sessions.
* Removed tis.h file. Not needed.
* Updated headers with Intel license text.
* Eliminated salted session test (because it doesn't work yet), and changed
out.good file to match.
* Plumbed in a resource mgr (doesn't actually do anything other than pass
through at this time).
* Split sockets driver into separate code module.
* SALTED session test fixes:
- Fixed CopyRSAEncryptIon function--wasn't handling some cases correctly.
- Backed out change to make parameterSize passed to ComputeSessionHmacPtr
function a UINT16. Needs to be UINT32.
* For ComputeSessionHmacPtr, changed parameterSize to UINT16 to fix build
warning.
* Added BOUND and SALTED HMAC session tests. BOUND test works, but SALTED
doesn't yet work.
* Added code to delete an entity from the entity table.
* Added code to work around an NV index anomaly with TPM simulator 0.98 and
previous versions: after the first NV index write, the name changes. This
causes the TPM's HMAC calculation to treat the index as if it's never the
BOUND entity, even if it is. This is expected (but weird) behavior which will
be fixed in 0.99 simulator.
* Fixed bugs in KDFa().
* Altered all APIs to use pointers to TPM input/output buffers.
* Created two helper functions pointers for system API and used them for HMAC
sessions.
* Added support for HMAC session for NV read/write APIs.Added HMAC tests for
unbounded/unsalted sessions.Fixed context save/restore functions.Created
CopyNvPublicIn function and altered Tpm2_DefineSpace function to use it.
* Created TpmHash function
* Created TpmHandleToName function
* Added HMAC tests for unbounded/unsalted sessions.
* Fixed context save/restore functions.
* Created CopyNvPublicIn function and altered Tpm2_DefineSpace function to use
it.
* Created TpmHash function
* Created TpmHandleToName function
* Documented helper function pointers in the system API header file.
* Fixed formatting of prints of sized byte buffers in test app.
* Added tests for TpmHandleToName function.
* Fixed bug in TpmHmac function: needed to set size of result to 0 in case an
error occurs.
* Reorganized directories and moved files to make more logical sense.
* Fixed bugs in CopySensitiveIn function: uninitialized size field, bad
pointers, and incorrect increment of otherData at end of function.
* Added functionality needed for KDFa functions ConcatSizedByteBuffer,
CopySizedByteBuffer
- Added KDFa function in preparation for HMAC session test. Not tested yet.
- Added LoadExternalHMACKey function. This function is called by TPM HMAC
function.
- Altered TpmHMAC function to call LoadExternalHMAC key function. This
allows a better HMAC function pointer, one that complies with normal HMAC
calling convention. Before it was TPM-specific.
- Bumped up TPMBUF_LEN to 32k in tpmclient.cpp. This fixed overwriting
problems during context save/restore function.
- Fixed bugs in ContextLoad function: otherData wasn't initialized before it
was used.
- Fixed bug in Tpm20LoadExternal command: it wasn't properly marshaling the
inPrivate data.

2013-??-?? Will Arthur <will.c.arthur@intel.com>
* 0.66 release
* Added CertifyCreation function
* Added EcEphemeral function
* Added test for tspi_sys_TPM2_HashStart
* Cleaned up for general TCG release

2013-04-10 Will Arthur <will.c.arthur@intel.com>
* 0.65 release
* All TPM 2.0 functions now supported.
* Limited testing done on following functions:
- tspi_sys_TPM2_Startup
- tspi_sys_Tpm2_SelfTest
- tspi_sys_TPM2_GetCapability
- tspi_sys_TPM2_Clear-tested
- tspi_sys_TPM2_StartAuthSession
- tspi_sys_TPM2_ClearControl
- tspi_sys_TPM2_ChangeEPS
- tspi_sys_TPM2_HierarchyChangeAuth
- tspi_sys_TPM2_Extend
- tspi_sys_TPM2_HashSequenceStart
- tspi_sys_TPM2_SequenceUpdate
- tspi_sys_TPM2_SequenceComplete
- tspi_sys_TPM2_EventSequenceComplete
- tspi_sys_TPM2_GetRandom
- tspi_sys_TPM2_SaveState
- tspi_sys_TPM2_PcrRead
- tspi_sys_TPM2_NVRead
- tspi_sys_TPM2_NVWrite
- tspi_sys_TPM2_Unseal
- tspi_sys_TPM2_PcrAllocate
- tspi_sys_TPM2_DictionaryAttackLockReset
- tspi_sys_TPM2_NV_Writelock
- tspi_sys_TPM2_PolicyCommandCode
- tspi_sys_TPM2_PolicyGetDigest
- tspi_sys_TPM2_PolicyOr
- tspi_sys_TPM2_PolicyRestart
- tspi_sys_TPM2_LoadExternal
- tspi_sys_TPM2_HierarchyControl
- tspi_sys_TPM2_NV_UndefineSpace
- tspi_sys_TPM2_Create
- tspi_sys_TPM2_Load
- tspi_sys_TPM2_Quote
- tspi_sys_TPM2_NV_ReadPublic
- tspi_sys_TPM2_ChangePPS
- tspi_sys_TPM2_NV_DefineSpace
- tspi_sys_TPM2_PolicyLocality
- tspi_sys_TPM2_PolicyPCR
- tspi_sys_TPM2_CreatePrimary
- tspi_sys_TPM2_Shutdown
- tspi_sys_TPM2_PCR_Event
- tspi_sys_TPM2_PolicyNV
- tspi_sys_TPM2_NV_ReadLock
- tspi_sys_TPM2_NV_UndefineSpaceSpecial
No testing done on all other 61 functions

2013-03-29 Will Arthur <will.c.arthur@intel.com>
* 0.60 release
* Added changes to make it comply with TSS 2.0 system library API
* Cleaned up and removed unneeded files.
