vboot: Change VbExEc implementations to support RO update
[vboot.git] / firmware / stub / vboot_api_stub.c
1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  *
5  * Stub implementations of firmware-provided API functions.
6  */
7
8 #include <stdint.h>
9
10 #define _STUB_IMPLEMENTATION_
11
12 #include <stdarg.h>
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <string.h>
16 #include <sys/time.h>
17
18 #include "vboot_api.h"
19
20 static enum VbEcBootMode_t vboot_mode;
21
22 void VbExSleepMs(uint32_t msec)
23 {
24 }
25
26 VbError_t VbExBeep(uint32_t msec, uint32_t frequency)
27 {
28         return VBERROR_SUCCESS;
29 }
30
31 VbError_t VbExDisplayInit(uint32_t *width, uint32_t *height)
32 {
33         return VBERROR_SUCCESS;
34 }
35
36 VbError_t VbExDisplayBacklight(uint8_t enable)
37 {
38         return VBERROR_SUCCESS;
39 }
40
41 VbError_t VbExDisplaySetDimension(uint32_t width, uint32_t height)
42 {
43         return VBERROR_SUCCESS;
44 }
45
46 VbError_t VbExDisplayScreen(uint32_t screen_type, uint32_t locale)
47 {
48         return VBERROR_SUCCESS;
49 }
50
51 VbError_t VbExDisplayImage(uint32_t x, uint32_t y,
52                            void *buffer, uint32_t buffersize)
53 {
54         return VBERROR_SUCCESS;
55 }
56
57 VbError_t VbExDisplayDebugInfo(const char *info_str)
58 {
59         return VBERROR_SUCCESS;
60 }
61
62 uint32_t VbExKeyboardRead(void)
63 {
64         return 0;
65 }
66
67 uint32_t VbExKeyboardReadWithFlags(uint32_t *flags_ptr)
68 {
69         return 0;
70 }
71
72 uint32_t VbExGetSwitches(uint32_t mask)
73 {
74         return 0;
75 }
76
77 uint32_t VbExIsShutdownRequested(void)
78 {
79         return 0;
80 }
81
82 VbError_t VbExDecompress(void *inbuf, uint32_t in_size,
83                          uint32_t compression_type,
84                          void *outbuf, uint32_t *out_size)
85 {
86         return VBERROR_SUCCESS;
87 }
88
89 int VbExTrustEC(int devidx)
90 {
91         return 1;
92 }
93
94 VbError_t VbExEcRunningRW(int devidx, int *in_rw)
95 {
96         *in_rw = 0;
97         return VBERROR_SUCCESS;
98 }
99
100 VbError_t VbExEcJumpToRW(int devidx)
101 {
102         return VBERROR_SUCCESS;
103 }
104
105 VbError_t VbExEcRebootToRO(int devidx)
106 {
107         /* Nothing to reboot, so all we can do is return failure. */
108         return VBERROR_UNKNOWN;
109 }
110
111 VbError_t VbExEcDisableJump(int devidx)
112 {
113         return VBERROR_SUCCESS;
114 }
115
116 #define SHA256_HASH_SIZE 32
117
118 VbError_t VbExEcHashImage(int devidx, enum VbSelectFirmware_t select,
119                           const uint8_t **hash, int *hash_size)
120 {
121         static const uint8_t fake_hash[32] = {1, 2, 3, 4};
122
123         *hash = fake_hash;
124         *hash_size = sizeof(fake_hash);
125         return VBERROR_SUCCESS;
126 }
127
128 VbError_t VbExEcGetExpectedImage(int devidx, enum VbSelectFirmware_t select,
129                                  const uint8_t **image, int *image_size)
130 {
131         static uint8_t fake_image[64] = {5, 6, 7, 8};
132         *image = fake_image;
133         *image_size = sizeof(fake_image);
134         return VBERROR_SUCCESS;
135 }
136
137 VbError_t VbExEcGetExpectedImageHash(int devidx, enum VbSelectFirmware_t select,
138                                      const uint8_t **hash, int *hash_size)
139 {
140         static const uint8_t fake_hash[32] = {1, 2, 3, 4};
141
142         *hash = fake_hash;
143         *hash_size = sizeof(fake_hash);
144         return VBERROR_SUCCESS;
145 }
146
147 VbError_t VbExEcUpdateImage(int devidx, enum VbSelectFirmware_t select,
148                             const uint8_t *image, int image_size)
149 {
150         return VBERROR_SUCCESS;
151 }
152
153 VbError_t VbExEcProtect(int devidx, enum VbSelectFirmware_t select)
154 {
155         return VBERROR_SUCCESS;
156 }
157
158 VbError_t VbExEcEnteringMode(int devidx, enum VbEcBootMode_t mode)
159 {
160         vboot_mode = mode;
161         return VBERROR_SUCCESS;
162 }
163
164 VbError_t VbExEcVbootDone(int in_recovery)
165 {
166        return VBERROR_SUCCESS;
167 }
168
169 enum VbEcBootMode_t VbGetMode(void)
170 {
171         return vboot_mode;
172 }
173
174 int VbExLegacy(void)
175 {
176         return 1;
177 }
178
179 uint8_t VbExOverrideGptEntryPriority(const GptEntry *e)
180 {
181         return 0;
182 }