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  * Access to portions of the GBB using the region API.
6  */
7 
8 #ifndef VBOOT_REFERENCE_GBB_ACCESS_H_
9 #define VBOOT_REFERENCE_GBB_ACCESS_H_
10 
11 #include "vboot_api.h"
12 
13 struct BmpBlockHeader;
14 struct ImageInfo;
15 struct GoogleBinaryBlockHeader;
16 struct ScreenLayout;
17 struct VbPublicKey;
18 
19 /**
20  * Read the GBB header
21  *
22  * This accesses the GBB and reads its header.
23  *
24  * @param cparams	Vboot common parameters
25  * @param gbb		Place to put GBB header
26  */
27 VbError_t VbGbbReadHeader_static(VbCommonParams *cparams,
28 				 struct GoogleBinaryBlockHeader *gbb);
29 
30 /**
31  * Read the root key from the GBB
32  *
33  * @param cparams	Vboot common parameters
34  * @param keyp		Returns a pointer to the key. The caller must call
35  *			VbExFree() on the key when finished with it.
36  * @return VBERROR_... error, VBERROR_SUCCESS on success,
37  */
38 VbError_t VbGbbReadRootKey(VbCommonParams *cparams,
39 			   struct VbPublicKey **keyp);
40 
41 /**
42  * Read the recovery key from the GBB
43  *
44  * @param cparams	Vboot common parameters
45  * @param keyp		Returns a pointer to the key. The caller must call
46  *			VbExFree() on the key when finished with it.
47  * @return VBERROR_... error, VBERROR_SUCCESS on success,
48  */
49 VbError_t VbGbbReadRecoveryKey(VbCommonParams *cparams,
50 			       struct VbPublicKey **keyp);
51 
52 /**
53  * Read the bitmap block header from the GBB
54  *
55  * @param cparams	Vboot common parameters
56  * @param hdr		The header is placed in this block
57  * @return VBERROR_... error, VBERROR_SUCCESS on success,
58  */
59 VbError_t VbGbbReadBmpHeader(VbCommonParams *cparams,
60 			     struct BmpBlockHeader *hdr);
61 
62 /**
63  * Read a image from the GBB
64  *
65  * The caller must call VbExFree() on *image_datap when finished with it.
66  *
67  * @param cparams	Vboot common parameters
68  * @param localization	Localization/language number
69  * @param screen_index	Index of screen to display (VB_SCREEN_...)
70  * @param image_num	Image number within the screen
71  * @param layout	Returns layout information (x, y position)
72  * @param image_info	Returns information about the image (format)
73  * @param image_datap	Returns a pointer to the image data
74  * @param iamge_data_sizep	Return size of image data
75  * @return VBERROR_... error, VBERROR_SUCCESS on success,
76  */
77 VbError_t VbGbbReadImage(VbCommonParams *cparams,
78 			 uint32_t localization, uint32_t screen_index,
79 			 uint32_t image_num, struct ScreenLayout *layout,
80 			 struct ImageInfo *image_info, char **image_datap,
81 			 uint32_t *image_data_sizep);
82 
83 #endif
84