Randall Spangler | 29e8807 | 2012-06-19 10:03:53 -0700 | [diff] [blame] | 1 | /* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
Randall Spangler | cbaf696 | 2010-08-05 16:42:43 -0700 | [diff] [blame] | 2 | * Use of this source code is governed by a BSD-style license that can be |
| 3 | * found in the LICENSE file. |
| 4 | */ |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 5 | |
Bill Richardson | 0c3ba24 | 2013-03-29 11:09:30 -0700 | [diff] [blame] | 6 | #include "sysincludes.h" |
| 7 | |
Randall Spangler | 3003c1d | 2010-05-27 09:20:11 -0700 | [diff] [blame] | 8 | #include "cgptlib.h" |
Randall Spangler | 7202eae | 2010-06-08 11:02:17 -0700 | [diff] [blame] | 9 | #include "load_firmware_fw.h" |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 10 | #include "load_kernel_fw.h" |
| 11 | #include "rollback_index.h" |
| 12 | #include "tlcl.h" |
Gaurav Shah | b64faaa | 2011-03-15 16:36:29 -0700 | [diff] [blame] | 13 | #include "tpm_bootmode.h" |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 14 | #include "vboot_common.h" |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 15 | #include "vboot_kernel.h" |
Randall Spangler | 9e162cd | 2011-02-22 13:06:53 -0800 | [diff] [blame] | 16 | #include "vboot_nvstorage.h" |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 17 | |
Randall Spangler | 39f6611 | 2010-07-14 09:10:23 -0700 | [diff] [blame] | 18 | |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 19 | int main(void) |
| 20 | { |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 21 | /* cgptlib.h */ |
Randall Spangler | 3003c1d | 2010-05-27 09:20:11 -0700 | [diff] [blame] | 22 | GptInit(0); |
| 23 | GptNextKernelEntry(0, 0, 0); |
| 24 | GptUpdateKernelEntry(0, 0); |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 25 | |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 26 | /* load_firmware_fw.h */ |
Randall Spangler | 8eead8e | 2011-07-28 16:36:08 -0700 | [diff] [blame] | 27 | LoadFirmware(0, 0, 0); |
Randall Spangler | 7202eae | 2010-06-08 11:02:17 -0700 | [diff] [blame] | 28 | |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 29 | /* load_kernel_fw.h */ |
Simon Glass | 527ba81 | 2013-07-25 08:48:47 -0600 | [diff] [blame] | 30 | LoadKernel(0, 0); |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 31 | |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 32 | /* rollback_index.h */ |
Randall Spangler | 1fe1607 | 2010-09-02 11:37:51 -0700 | [diff] [blame] | 33 | RollbackS3Resume(); |
Shawn Nematbakhsh | 472d93c | 2013-07-22 16:19:13 -0700 | [diff] [blame] | 34 | RollbackFirmwareSetup(0, 0, 0, 0, 0); |
Randall Spangler | 6668028 | 2010-08-16 12:33:44 -0700 | [diff] [blame] | 35 | RollbackFirmwareWrite(0); |
Randall Spangler | 1078838 | 2010-06-23 15:35:31 -0700 | [diff] [blame] | 36 | RollbackFirmwareLock(); |
Randall Spangler | 6668028 | 2010-08-16 12:33:44 -0700 | [diff] [blame] | 37 | RollbackKernelRead(0); |
| 38 | RollbackKernelWrite(0); |
Shawn Nematbakhsh | 964144b | 2013-07-22 13:33:46 -0700 | [diff] [blame] | 39 | RollbackKernelLock(0); |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 40 | |
Gaurav Shah | b64faaa | 2011-03-15 16:36:29 -0700 | [diff] [blame] | 41 | /* tpm_bootmode.c */ |
| 42 | SetTPMBootModeState(0, 0, 0); |
| 43 | |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 44 | /* tlcl.h */ |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 45 | TlclStartup(); |
Randall Spangler | 1fe1607 | 2010-09-02 11:37:51 -0700 | [diff] [blame] | 46 | TlclResume(); |
Randall Spangler | 3e1081f | 2010-07-19 10:04:21 -0700 | [diff] [blame] | 47 | TlclSelfTestFull(); |
Luigi Semenzato | 59204c5 | 2010-06-09 13:37:15 -0700 | [diff] [blame] | 48 | TlclContinueSelfTest(); |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 49 | TlclDefineSpace(0, 0, 0); |
| 50 | TlclWrite(0, 0, 0); |
| 51 | TlclRead(0, 0, 0); |
| 52 | TlclWriteLock(0); |
| 53 | TlclReadLock(0); |
| 54 | TlclAssertPhysicalPresence(); |
| 55 | TlclSetNvLocked(); |
| 56 | TlclIsOwned(); |
| 57 | TlclForceClear(); |
Luigi Semenzato | ded1cec | 2010-05-27 15:19:58 -0700 | [diff] [blame] | 58 | TlclSetEnable(); |
Luigi Semenzato | 416f681 | 2010-07-08 12:12:12 -0700 | [diff] [blame] | 59 | TlclClearEnable(); |
Luigi Semenzato | ded1cec | 2010-05-27 15:19:58 -0700 | [diff] [blame] | 60 | TlclSetDeactivated(0); |
Randall Spangler | 3e1081f | 2010-07-19 10:04:21 -0700 | [diff] [blame] | 61 | TlclGetFlags(0, 0, 0); |
Gaurav Shah | 2447dd2 | 2010-08-30 11:43:57 -0700 | [diff] [blame] | 62 | TlclSetGlobalLock(); |
| 63 | TlclExtend(0, 0, 0); |
| 64 | TlclGetPermissions(0, 0); |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 65 | |
Randall Spangler | 1b1998d | 2011-07-01 16:12:47 -0700 | [diff] [blame] | 66 | /* vboot_api.h - entry points INTO vboot_reference */ |
Randall Spangler | 1b1998d | 2011-07-01 16:12:47 -0700 | [diff] [blame] | 67 | VbInit(0, 0); |
| 68 | VbSelectFirmware(0, 0); |
| 69 | VbUpdateFirmwareBodyHash(0, 0, 0); |
| 70 | VbSelectAndLoadKernel(0, 0); |
| 71 | |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 72 | /* vboot_common.h */ |
| 73 | OffsetOf(0, 0); |
| 74 | GetPublicKeyData(0); |
| 75 | GetPublicKeyDataC(0); |
| 76 | GetSignatureData(0); |
| 77 | GetSignatureDataC(0); |
| 78 | VerifyMemberInside(0, 0, 0, 0, 0, 0); |
| 79 | VerifyPublicKeyInside(0, 0, 0); |
| 80 | VerifySignatureInside(0, 0, 0); |
Randall Spangler | a55e5ca | 2010-06-15 18:45:09 -0700 | [diff] [blame] | 81 | PublicKeyInit(0, 0, 0); |
| 82 | PublicKeyCopy(0, 0); |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 83 | PublicKeyToRSA(0); |
Randall Spangler | 87c13d8 | 2010-07-19 10:35:40 -0700 | [diff] [blame] | 84 | VerifyData(0, 0, 0, 0); |
Randall Spangler | 39ed88e | 2010-06-15 14:53:01 -0700 | [diff] [blame] | 85 | VerifyDigest(0, 0, 0); |
Randall Spangler | 138acfe | 2010-08-17 15:45:21 -0700 | [diff] [blame] | 86 | KeyBlockVerify(0, 0, 0, 0); |
Randall Spangler | 87c13d8 | 2010-07-19 10:35:40 -0700 | [diff] [blame] | 87 | VerifyFirmwarePreamble(0, 0, 0); |
Randall Spangler | a712e01 | 2011-07-13 09:48:41 -0700 | [diff] [blame] | 88 | VbGetFirmwarePreambleFlags(0); |
Randall Spangler | 87c13d8 | 2010-07-19 10:35:40 -0700 | [diff] [blame] | 89 | VerifyKernelPreamble(0, 0, 0); |
Randall Spangler | 95c4031 | 2011-03-09 15:54:16 -0800 | [diff] [blame] | 90 | VbSharedDataInit(0, 0); |
| 91 | VbSharedDataReserve(0, 0); |
| 92 | VbSharedDataSetKernelKey(0, 0); |
Randall Spangler | d183644 | 2010-06-10 09:59:04 -0700 | [diff] [blame] | 93 | |
Randall Spangler | 9e162cd | 2011-02-22 13:06:53 -0800 | [diff] [blame] | 94 | VbNvSetup(0); |
| 95 | VbNvGet(0, 0, 0); |
| 96 | VbNvSet(0, 0, 0); |
| 97 | VbNvTeardown(0); |
| 98 | |
Bill Richardson | 0b8f35c | 2010-05-26 09:18:38 -0700 | [diff] [blame] | 99 | return 0; |
| 100 | } |