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) 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 VbExEcHashRW(int devidx, const uint8_t **hash, int *hash_size) 119 { 120 static const uint8_t fake_hash[32] = {1, 2, 3, 4}; 121 122 *hash = fake_hash; 123 *hash_size = sizeof(fake_hash); 124 return VBERROR_SUCCESS; 125 } 126 127 VbError_t VbExEcGetExpectedRW(int devidx, enum VbSelectFirmware_t select, 128 const uint8_t **image, int *image_size) 129 { 130 static uint8_t fake_image[64] = {5, 6, 7, 8}; 131 *image = fake_image; 132 *image_size = sizeof(fake_image); 133 return VBERROR_SUCCESS; 134 } 135 136 VbError_t VbExEcGetExpectedRWHash(int devidx, enum VbSelectFirmware_t select, 137 const uint8_t **hash, int *hash_size) 138 { 139 static const uint8_t fake_hash[32] = {1, 2, 3, 4}; 140 141 *hash = fake_hash; 142 *hash_size = sizeof(fake_hash); 143 return VBERROR_SUCCESS; 144 } 145 146 VbError_t VbExEcUpdateRW(int devidx, const uint8_t *image, int image_size) 147 { 148 return VBERROR_SUCCESS; 149 } 150 151 VbError_t VbExEcProtectRW(int devidx) 152 { 153 return VBERROR_SUCCESS; 154 } 155 156 VbError_t VbExEcEnteringMode(int devidx, enum VbEcBootMode_t mode) 157 { 158 vboot_mode = mode; 159 return VBERROR_SUCCESS; 160 } 161 162 enum VbEcBootMode_t VbGetMode(void) 163 { 164 return vboot_mode; 165 } 166 167 int VbExLegacy(void) 168 { 169 return 1; 170 } 171