1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * High-level firmware API for loading and verifying rewritable firmware.
- * (Firmware portion)
- */
- #include "sysincludes.h"
- #include "bmpblk_header.h"
- #include "region.h"
- #include "gbb_access.h"
- #include "gbb_header.h"
- #include "load_kernel_fw.h"
- #include "utility.h"
- #include "vboot_api.h"
- #include "vboot_struct.h"
- static VbError_t VbGbbReadKey(VbCommonParams *cparams, uint32_t offset,
- VbPublicKey **keyp)
- {
- VbPublicKey hdr, *key;
- VbError_t ret;
- uint32_t size;
- ret = VbRegionReadData(cparams, VB_REGION_GBB, offset,
- sizeof(VbPublicKey), &hdr);
- if (ret)
- return ret;
- /* Deal with a zero-size key (used in testing) */
- size = hdr.key_offset + hdr.key_size;
- if (size < sizeof(hdr))
- size = sizeof(hdr);
- key = malloc(size);
- ret = VbRegionReadData(cparams, VB_REGION_GBB, offset, size, key);
- if (ret) {
- free(key);
- return ret;
- }
- *keyp = key;
- return VBERROR_SUCCESS;
- }
- VbError_t VbGbbReadRootKey(VbCommonParams *cparams, VbPublicKey **keyp)
- {
- return VbGbbReadKey(cparams, cparams->gbb->rootkey_offset, keyp);
- }
- VbError_t VbGbbReadRecoveryKey(VbCommonParams *cparams, VbPublicKey **keyp)
- {
- return VbGbbReadKey(cparams, cparams->gbb->recovery_key_offset, keyp);
- }
|