129e8807ea045e119e3adeaec40c5f8421901b6fbRandall Spangler/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 28511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou * Use of this source code is governed by a BSD-style license that can be 38511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou * found in the LICENSE file. 48511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou * 58511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou * Functions for querying, manipulating and locking rollback indices 68511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou * stored in the TPM NVRAM. 78511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou */ 88511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 90c3ba249abb1dc60f5ebabccf84ff13206440b83Bill Richardson#include "sysincludes.h" 10b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson#include "utility.h" 110c3ba249abb1dc60f5ebabccf84ff13206440b83Bill Richardson 128511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou#include "rollback_index.h" 138511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 148511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou#include "tss_constants.h" 158511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 168511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 1771b126ba46c3b2fda3007dc0dd24a9f74adab604Mike Frysingeruint32_t SetVirtualDevMode(int val) { 1871b126ba46c3b2fda3007dc0dd24a9f74adab604Mike Frysinger return TPM_SUCCESS; 1971b126ba46c3b2fda3007dc0dd24a9f74adab604Mike Frysinger} 2071b126ba46c3b2fda3007dc0dd24a9f74adab604Mike Frysinger 2171b126ba46c3b2fda3007dc0dd24a9f74adab604Mike Frysinger 228511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouuint32_t TPMClearAndReenable(void) { 238511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 248511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 258511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 268511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 27472d93c146403c0f95b656e182b972e15ff11835Shawn Nematbakhshuint32_t SetupTPM(int developer_mode, int disable_dev_request, 28472d93c146403c0f95b656e182b972e15ff11835Shawn Nematbakhsh int clear_tpm_owner_request, RollbackSpaceFirmware* rsf) { 298511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 308511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 318511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 328511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 338511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouuint32_t RollbackS3Resume(void) { 348511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 358511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 368511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 378511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 38472d93c146403c0f95b656e182b972e15ff11835Shawn Nematbakhshuint32_t RollbackFirmwareSetup(int is_hw_dev, 39ec8df1628cd9cf236bf912dee7d4365d7977e697Bill Richardson int disable_dev_request, 4029e8807ea045e119e3adeaec40c5f8421901b6fbRandall Spangler int clear_tpm_owner_request, 41ec8df1628cd9cf236bf912dee7d4365d7977e697Bill Richardson int *is_virt_dev, uint32_t *version) { 428511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou *version = 0; 438511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 448511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 458511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 468511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 478511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouuint32_t RollbackFirmwareWrite(uint32_t version) { 488511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 498511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 508511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 518511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 5253710471b5e4fcfa83ccb628604819078b630a99Duncan Laurieuint32_t RollbackFirmwareLock(void) { 538511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 548511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 558511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 568511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 578511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouuint32_t RollbackKernelRead(uint32_t* version) { 588511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou *version = 0; 598511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 608511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 618511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 628511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 638511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiouuint32_t RollbackKernelWrite(uint32_t version) { 648511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 658511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 668511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 678511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou 6853710471b5e4fcfa83ccb628604819078b630a99Duncan Laurieuint32_t RollbackKernelLock(int recovery_mode) { 698511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou return TPM_SUCCESS; 708511f7891b5eca7ae93a147964201a4b57210ff6Che-Liang Chiou} 71b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson 72b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardsonstatic uint8_t rollback_backup[BACKUP_NV_SIZE]; 73b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson 74b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardsonuint32_t RollbackBackupRead(uint8_t *raw) 75b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson{ 76b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson Memcpy(raw, rollback_backup, BACKUP_NV_SIZE); 77b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson return TPM_SUCCESS; 78b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson} 79b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson 80b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardsonuint32_t RollbackBackupWrite(uint8_t *raw) 81b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson{ 82b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson Memcpy(rollback_backup, raw, BACKUP_NV_SIZE); 83b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson return TPM_SUCCESS; 84b64f097891e697eaf3b2794baae934f8b4d82d14Bill Richardson} 85