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