mocked_tlcl.c revision 41282f1bbbf3a5dd75055d99194d15aa98b67242
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com#include "tlcl.h"
78a21c9fe7f5fef9e87115defef27bd7218419f28reed#include "tlcl_internal.h"
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "utility.h"
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "vboot_api.h"
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclLibInit(void) {
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return VbExTpmInit();
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclStartup(void) {
16d15750c0c7766ecab7022ea9b2f9e89a9132cbc2msarett  return TPM_SUCCESS;
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclSaveState(void) {
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclResume(void) {
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
27ebfce6d9b42198e04288a15953f40c395a7b6139Mike Reeduint32_t TlclSelfTestFull(void) {
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
299c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org}
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
3164cc579efa7e416c7298ed159d76b074b283c0f9senorblanco@chromium.orguint32_t TlclContinueSelfTest(void) {
328a21c9fe7f5fef9e87115defef27bd7218419f28reed  return TPM_SUCCESS;
338a21c9fe7f5fef9e87115defef27bd7218419f28reed}
34374772bd61951f01bf84fe17bf53d8867681c9aereed
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclDefineSpace(uint32_t index, uint32_t perm, uint32_t size) {
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclWrite(uint32_t index, const void* data, uint32_t length) {
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
42ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclRead(uint32_t index, void* data, uint32_t length) {
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  Memset(data, '\0', length);
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
46e61a86cfa00ea393ecc4a71fca94e1d476a37ecccommit-bot@chromium.org}
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclPCRRead(uint32_t index, void* data, uint32_t length) {
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  Memset(data, '\0', length);
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
52ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclWriteLock(uint32_t index) {
5496fcdcc219d2a0d3579719b84b28bede76efba64halcanary  return TPM_SUCCESS;
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclReadLock(uint32_t index) {
5896fcdcc219d2a0d3579719b84b28bede76efba64halcanary  return TPM_SUCCESS;
59ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com}
60ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclAssertPhysicalPresence(void) {
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclPhysicalPresenceCMDEnable(void) {
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclFinalizePhysicalPresence(void) {
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
71ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com}
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclAssertPhysicalPresenceResult(void) {
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
75ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com}
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclLockPhysicalPresence(void) {
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
81ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.comuint32_t TlclSetNvLocked(void) {
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
859c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.orgint TlclIsOwned(void) {
869c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org  return 0;
879c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org}
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclForceClear(void) {
909c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org  return TPM_SUCCESS;
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclSetEnable(void) {
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclClearEnable(void) {
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclSetDeactivated(uint8_t flag) {
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
10336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein}
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclGetPermanentFlags(TPM_PERMANENT_FLAGS* pflags) {
1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  Memset(pflags, '\0', sizeof(*pflags));
1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
108971aca75572ed6e0c5e1cc959173dc58ca7b6b8dreed@google.com}
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
110ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.comuint32_t TlclGetSTClearFlags(TPM_STCLEAR_FLAGS* vflags) {
1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  Memset(vflags, '\0', sizeof(*vflags));
1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclGetFlags(uint8_t* disable,
1168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                      uint8_t* deactivated,
117ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com                      uint8_t *nvlocked) {
1188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  *disable = 0;
1198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  *deactivated = 0;
1208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  *nvlocked = 0;
121f059900f75639f1b1a03f2c25333ef9aa22d58b8mtklein  return TPM_SUCCESS;
1228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclSetGlobalLock(void) {
1258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
1268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
1278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
128ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.comuint32_t TlclExtend(int pcr_num, const uint8_t* in_digest,
1298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                    uint8_t* out_digest) {
130149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  Memcpy(out_digest, in_digest, kPcrDigestLength);
1318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com  return TPM_SUCCESS;
132ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com}
133f059900f75639f1b1a03f2c25333ef9aa22d58b8mtklein
1348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comuint32_t TlclGetPermissions(uint32_t index, uint32_t* permissions) {
135ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com  *permissions = 0;
136149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  return TPM_SUCCESS;
137149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com}
138ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
139ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.comuint32_t TlclGetOwnership(uint8_t* owned) {
140149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  *owned = 0;
141149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  return TPM_SUCCESS;
142149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com}
143f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com
144374772bd61951f01bf84fe17bf53d8867681c9aereeduint32_t TlclGetRandom(uint8_t* data, uint32_t length, uint32_t *size) {
145149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  *size = length;
146149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  /* http://dilbert.com/strips/comic/2001-10-25/ */
147149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  Memset(data, '\x9', *size);
148149e2f6159a797989f6f0fa93ecfaa66cdd55c40reed@android.com  return TPM_SUCCESS;
149ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com}
1508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com