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