aboutsummaryrefslogtreecommitdiff
path: root/MemoryLib.c
AgeCommit message (Collapse)Author
2017-05-11Rewrite MemoryEqual() to be constant-time.nagendra modadugu
The current implementation of MemoryEqual will not necessarily compile to a constant-time instruction sequence. This change ensures that every byte of the input must be inspected. BRANCH=none BUG=none TEST=TCG tests pass Change-Id: Ide83bce6cafea2d48c03e5116e97a6dd23419134 Signed-off-by: nagendra modadugu <ngm@google.com> Reviewed-on: https://chromium-review.googlesource.com/503478 Commit-Ready: Nagendra Modadugu <ngm@google.com> Tested-by: Nagendra Modadugu <ngm@google.com> Reviewed-by: Andrey Pronin <apronin@chromium.org>
2015-08-14Introduce embedded mode conditional compilationVadim Bendebury
When running on embedded targets software cryptography is often not available due to inadequate toolchain capabilities and limited hardware resources. Invoking make with EMBEDDED_MODE=1 ROOTDIR=1 will stub out cryptographic functions and will provide another -I preprocessor option to allow to pull in alternative .h files not available from the toolchain. NV Ram buffer size provisionally is being reduced to 8K. In final embedded implementation NVRam might be held in flash, in which case the required memory buffer could limited to one flash block size. Some big data objects not used in the code are also being compiled out when building for embedded mode of operation. BUG=chrome-os-partner:43025 TEST=with the rest of the changes in place the code compiles with the EC, and TPM startup sequence gets invoked. Change-Id: I71487570d2032c66b30c0bdf0b152dec6d0ece8a Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/292945 Reviewed-by: Utkarsh Sanghi <usanghi@chromium.org> Commit-Queue: Vadim Bendebury <vbendeb@gmail.com>
2015-08-10Implementation files for command marshaling.Jocelyn Bohr
Generated C source and header files which add functions to unmarshal command requests, execute commands, and marshal command responses. This (tenatively) adds all final missing parts of libtpm2. These files are generated from command_generator.py in CL:290556. TEST=$ sudo emerge tpm2 builds libtpm2.a Locally I was able to call ExecCommand to execute TPM2_Startup with success after software TPM initialization. BUG=chromium:501639 CQ-DEPEND=CL:290556 Change-Id: Ieb3f208795a21a172dea25b35027c5aceba7ee08 Reviewed-on: https://chromium-review.googlesource.com/289813 Tested-by: Jocelyn Bohr <bohr@chromium.org> Reviewed-by: Darren Krahn <dkrahn@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Commit-Queue: Jocelyn Bohr <bohr@chromium.org>
2015-06-03Changes to allow compilation of MemoryLib.cVadim Bendebury
MemoryCopy() is defined as a macro in MemoryLib_fp.h. BUG=none TEST=compilation succeeds: cc -Wall -Werror -c -o /dev/null MemoryLib.c Change-Id: Ieb771a15e615fe639f2e9f28868197a13ed255d3 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/274241 Reviewed-by: Utkarsh Sanghi <usanghi@chromium.org>
2015-05-20Initial commit to seed TPM2.0 source code directoryVadim Bendebury
LICENSE file text copied from TCG library specification. README describes the procedure used to extract source code from parts 3 and 4 of the specification. The python scripts and part{34}.txt files will be removed in the following commits. Change-Id: Ie281e6e988481831f33483053455e8aff8f3f75f Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>